diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..0f41379 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +/.storybook/ +/docs/ +/i18n/ +/node_modules/ +/vendor/ diff --git a/.eslintrc.json b/.eslintrc.json index 2c3c2d3..4185f85 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,9 +2,16 @@ "root": true, "extends": [ "wikimedia/client", - "wikimedia/jquery" + "wikimedia/jquery", + "wikimedia/mediawiki" ], "globals": { - "mw": false + "require": "readonly", + "module": "readonly" + }, + "rules": { + "one-var": "off", + "//": ["off", "ResourceLoader's `packageFiles` do not require wrapping but the `module` option is only available in ES6+."], + "no-implicit-globals": "off" } } diff --git a/.gitignore b/.gitignore index d55f48d..7ae62f2 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,8 @@ Thumbs.db /.htaccess /.htpasswd .eslintcache + +# storybook +/.storybook/resolve-less-imports/ +/.storybook/integration.less +.vscode diff --git a/.phpcs.xml b/.phpcs.xml index 3c69313..b915cf8 100644 --- a/.phpcs.xml +++ b/.phpcs.xml @@ -2,6 +2,6 @@ . - + diff --git a/.storybook/common.less b/.storybook/common.less new file mode 100644 index 0000000..673dfef --- /dev/null +++ b/.storybook/common.less @@ -0,0 +1,23 @@ +@import '../variables.less'; +@import 'integration.less'; +@import 'icons.less'; + +body { + font-family: @font-family-sans; +} + +a { + text-decoration: none; +} + +ul { + padding: 0; +} + +#mw-panel { + background-color: @background-color-secondary; +} + +.printfooter { + display: none; +} diff --git a/.storybook/config.js b/.storybook/config.js new file mode 100644 index 0000000..055d4e3 --- /dev/null +++ b/.storybook/config.js @@ -0,0 +1,4 @@ +import { configure } from '@storybook/html'; + +// automatically import all files ending in *.stories.js +configure(require.context('../stories', true, /\.stories\.js$/), module); diff --git a/.storybook/icons.less b/.storybook/icons.less new file mode 100644 index 0000000..4c8f73f --- /dev/null +++ b/.storybook/icons.less @@ -0,0 +1,20 @@ +.mw-wiki-logo { + background-image: url(https://en.wikipedia.org/static/images/project-logos/enwiki-2x.png); + background-size: 135px auto; +} + +.oo-ui-icon-bell { + opacity: 0.51; + background-image: linear-gradient(transparent,transparent), + url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E%3Ctitle%3Ebell%3C/title%3E%3Cpath d=%22M16 7a5.38 5.38 0 0 0-4.46-4.85C11.6 1.46 11.53 0 10 0S8.4 1.46 8.46 2.15A5.38 5.38 0 0 0 4 7v6l-2 2v1h16v-1l-2-2zm-6 13a3 3 0 0 0 3-3H7a3 3 0 0 0 3 3z%22/%3E%3C/svg%3E"); +} + +.oo-ui-icon-tray { + background-image: linear-gradient(transparent,transparent), + url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E%3Ctitle%3Etray%3C/title%3E%3Cpath d=%22M3 1a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm14 12h-4l-1 2H8l-1-2H3V3h14z%22/%3E%3C/svg%3E"); +} + +.uls-trigger { + background-image: linear-gradient(transparent,transparent), + url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E %3Ctitle%3E language %3C/title%3E %3Cpath d=%22M20 18h-1.44a.61.61 0 0 1-.4-.12.81.81 0 0 1-.23-.31L17 15h-5l-1 2.54a.77.77 0 0 1-.22.3.59.59 0 0 1-.4.14H9l4.55-11.47h1.89zm-3.53-4.31L14.89 9.5a11.62 11.62 0 0 1-.39-1.24q-.09.37-.19.69l-.19.56-1.58 4.19zm-6.3-1.58a13.43 13.43 0 0 1-2.91-1.41 11.46 11.46 0 0 0 2.81-5.37H12V4H7.31a4 4 0 0 0-.2-.56C6.87 2.79 6.6 2 6.6 2l-1.47.5s.4.89.6 1.5H0v1.33h2.15A11.23 11.23 0 0 0 5 10.7a17.19 17.19 0 0 1-5 2.1q.56.82.87 1.38a23.28 23.28 0 0 0 5.22-2.51 15.64 15.64 0 0 0 3.56 1.77zM3.63 5.33h4.91a8.11 8.11 0 0 1-2.45 4.45 9.11 9.11 0 0 1-2.46-4.45z%22/%3E %3C/svg%3E") !important; +} diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js new file mode 100644 index 0000000..1e0411b --- /dev/null +++ b/.storybook/webpack.config.js @@ -0,0 +1,54 @@ +const path = require( 'path' ); + +module.exports = { + module: { + rules: [ { + test: /\.js$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + // Beware of https://github.com/babel/babel-loader/issues/690. Changes to browsers require + // manual invalidation. + cacheDirectory: true + } + } + }, + { + test: /\.css$/, + use: [ { + loader: 'style-loader' + }, { + loader: 'css-loader' + } ] + }, + { + test: /\.(gif|png|jpe?g|svg)$/i, + issuer: /\.less$/, + loader: 'file-loader', + options: { + paths: [ + path.resolve( __dirname, 'components/images' ) + ] + } + }, + { + // in core some LESS imports don't specify filename + test: /\.less$/, + use: [ { + loader: 'style-loader' + }, { + loader: 'css-loader' + }, { + loader: 'less-loader', + options: { + relativeUrls: false, + paths: [ + path.resolve( __dirname, 'resolve-less-imports' ) + ] + } + } ] + }, + ] + } +}; diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000..4880aff --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,5 @@ +/.storybook/ +/docs/ +/node_modules/ +/skinStyles/jquery.ui/ +/vendor/ diff --git a/.svgo.yml b/.svgo.yml new file mode 100644 index 0000000..a1ac1f1 --- /dev/null +++ b/.svgo.yml @@ -0,0 +1,27 @@ +# Recommended options from: +# https://www.mediawiki.org/wiki/Manual:Coding_conventions/SVG#Exemplified_safe_configuration +# +multipass: true +plugins: + - cleanupIDs: false + - removeDesc: false + - removeRasterImages: true + - removeTitle: false + - removeViewBox: false + # If the SVG doesn't start with an XML declaration, then its MIME type will + # be detected as "text/plain" rather than "image/svg+xml" by libmagic and, + # consequently, MediaWiki's CSSMin CSS minifier. libmagic's default database + # currently requires that SVGs contain an XML declaration: + # https://github.com/threatstack/libmagic/blob/master/magic/Magdir/sgml#L5 + - removeXMLProcInst: false + - sortAttrs: true + +# Configure the indent (default 4 spaces) used by `--pretty` here: +# @see https://github.com/svg/svgo/blob/master/lib/svgo/js2svg.js#L6 for more config options +# +# Unfortunately EOL cannot be configured, svgo uses the platform's EOL marker. +# On non-unix systems the linebreaks will be normalized to LF (unix) only at git commit, assuming `core.autocrlf` is 'true' (default) or 'input'. +# +js2svg: + pretty: true + indent: "\t" diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..63b0896 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,36 @@ +PROJECT_NAME = Vector +PROJECT_BRIEF = "Vector is a skin for MediaWiki. Vector has been the default skin on all Wikimedia wikis since 2010." + +OUTPUT_DIRECTORY = docs +HTML_OUTPUT = php + +# Intepret the first line of a comment as a brief description? +JAVADOC_AUTOBRIEF = YES +QT_AUTOBRIEF = YES + +WARN_NO_PARAMDOC = YES + +INPUT = . +EXCLUDE_PATTERNS = doc docs vendor node_modules tests +FILE_PATTERNS = *.php + +# Search through subdirectories for input files? +RECURSIVE = YES + +# NOTE: USE_MDFILE_AS_MAINPAGE requires that the specified file is included as an input file. +USE_MDFILE_AS_MAINPAGE = ./README.md +INPUT += ./README.md + +HTML_DYNAMIC_SECTIONS = YES +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 + +GENERATE_LATEX = NO + +HAVE_DOT = YES +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 12 +TEMPLATE_RELATIONS = YES + +# Makes dot run faster. Requires graphviz >1.8.10 +DOT_MULTI_TARGETS = YES diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index fddda64..0000000 --- a/Gruntfile.js +++ /dev/null @@ -1,37 +0,0 @@ -/* eslint-env node, es6 */ -module.exports = function ( grunt ) { - var conf = grunt.file.readJSON( 'skin.json' ); - grunt.loadNpmTasks( 'grunt-banana-checker' ); - grunt.loadNpmTasks( 'grunt-eslint' ); - grunt.loadNpmTasks( 'grunt-stylelint' ); - - grunt.initConfig( { - eslint: { - options: { - reportUnusedDisableDirectives: true, - extensions: [ '.js', '.json' ], - cache: true - }, - all: [ - '**/*.js{,on}', - '!{vendor,node_modules}/**' - ] - }, - banana: conf.MessagesDirs, - stylelint: { - options: { - syntax: 'less' - }, - all: [ - '*.{less,css}', - '**/*.{less,css}', - '!node_modules/**', - '!skinStyles/jquery.ui/**', - '!vendor/**' - ] - } - } ); - - grunt.registerTask( 'test', [ 'eslint', 'banana', 'stylelint' ] ); - grunt.registerTask( 'default', 'test' ); -}; diff --git a/README.md b/README.md index 85e6ff7..88942d8 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,52 @@ Vector Skin ======================== -Configuration options ---------------------- +Installation +------------ -### $wgVectorPrintLogo +See . -Logo used in print styles. Keys are `url`, `width`, and `height` (in -pixels). Note that this solution only works correctly if the image -pointed to by `url` is an SVG that does not specify width and height -attributes, or its width and height match the corresponding variables -below. Alternatively, a PNG or other type of image can be used, but -its dimensions also need to match the corresponding variable below. -That in turn may result in blurry images, though. +### Configuration options -The URL can be absolute or relative. +See [skin.json](skin.json). -Example configuration: +Development +----------- - $wgVectorPrintLogo = [ - 'url' => 'https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-en.svg', - 'width' => 174, - 'height' => 27 - ]; +### Coding conventions -* Type: `Array` -* Default: `false` +We strive for compliance with MediaWiki conventions: + + + +Additions and deviations from those conventions that are more tailored to this +project are noted at: + + + +URL query parameters +-------------------- + +- `useskinversion`: Like `useskin` but for overriding the Vector skin version + user preference and configuration. E.g., + http://localhost:8181?useskin=vector&useskinversion=2. + +Skin preferences +---------------- + +Vector defines skin-specific user preferences. These are exposed on +Special:Preferences when the `VectorShowSkinPreferences` configuration is +enabled. The user's preference state for skin preferences is used for skin +previews and any other operation unless specified otherwise. + +### Version + +Vector defines a "version" preference to enable users who prefer the December +2019 version of Vector to continue to do so without any visible changes. This +version is called "Legacy Vector." The related preference defaults are +configurable via the configurations prefixed with `VectorDefaultSkinVersion`. +Version preference and configuration may be overridden by the `useskinversion` +URL query parameter. + +### Hooks +See [hooks.txt](hooks.txt). diff --git a/bundlesize.config.json b/bundlesize.config.json new file mode 100644 index 0000000..bef7f6d --- /dev/null +++ b/bundlesize.config.json @@ -0,0 +1,22 @@ +[ + { + "resourceModule": "skins.vector.styles.legacy", + "maxSize": "7.8 kB" + }, + { + "resourceModule": "skins.vector.styles", + "maxSize": "8.5 kB" + }, + { + "resourceModule": "skins.vector.icons", + "maxSize": "0.6 kB" + }, + { + "resourceModule": "skins.vector.styles.responsive", + "maxSize": "0.6 kB" + }, + { + "resourceModule": "skins.vector.legacy.js", + "maxSize": "1.7 kB" + } +] diff --git a/components/externalLinks.less b/components/externalLinks.less deleted file mode 100644 index d8095e2..0000000 --- a/components/externalLinks.less +++ /dev/null @@ -1,10 +0,0 @@ -@import 'mediawiki.mixins.less'; -// External links -.mw-parser-output { - .external { - background-position: center right; - background-repeat: no-repeat; - .background-image-svg( 'images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png' ); - padding-right: 13px; - } -} diff --git a/components/watchstar.less b/components/watchstar.less deleted file mode 100644 index 49d4c25..0000000 --- a/components/watchstar.less +++ /dev/null @@ -1,53 +0,0 @@ -@import 'mediawiki.mixins.rotation'; - -/* Watch/Unwatch Icon Styling */ -/* Only use icon if the menu item is not collapsed into the "More" dropdown - * (in which case it is inside .vectorMenu instead of .vectorTabs). */ -.vectorTabs { - // `#ca-unwatch` & `#ca-watch` both carry `.mw-watchlink` as well. - .mw-watchlink.icon a { - margin: 0; - padding: 0; - display: block; - width: 28px; - /* This hides the text but shows the background image */ - /* Must not exceed parent's height, otherwise the background disappears on Chrome (T196610) */ - padding-top: 2.5em / 0.8125; - height: 0; - overflow: hidden; - background-position: 5px 60%; - background-repeat: no-repeat; - } - - #ca-unwatch.icon a { - .background-image-svg( 'images/unwatch-icon.svg', 'images/unwatch-icon.png' ); - } - - #ca-watch.icon a { - .background-image-svg( 'images/watch-icon.svg', 'images/watch-icon.png' ); - } - - #ca-unwatch.icon a:hover, - #ca-unwatch.icon a:focus { - .background-image-svg( 'images/unwatch-icon-hl.svg', 'images/unwatch-icon-hl.png' ); - } - - #ca-watch.icon a:hover, - #ca-watch.icon a:focus { - .background-image-svg( 'images/watch-icon-hl.svg', 'images/watch-icon-hl.png' ); - } - - // Loading watchstar link class. - #ca-unwatch.icon .loading, - #ca-watch.icon .loading { - background-image: url( images/watch-icon-loading.svg ); - .rotation( 700ms ); - /* Suppress the hilarious rotating focus outline on Firefox */ - outline: 0; - cursor: default; - pointer-events: none; - background-position: 50% 60%; - -webkit-transform-origin: 50% 57%; - transform-origin: 50% 57%; - } -} diff --git a/composer.json b/composer.json index 7173a6f..cd2f0b6 100644 --- a/composer.json +++ b/composer.json @@ -24,32 +24,31 @@ "irc": "irc://irc.freenode.org/mediawiki" }, "require": { - "php": ">=5.5.9", "composer/installers": ">1.0.12" }, "extra": { "branch-alias": { "dev-master": "1.x-dev" }, - "installer-name": "Vector", - "phan-taint-check-plugin": "2.0.1" + "installer-name": "Vector" }, "require-dev": { - "jakub-onderka/php-parallel-lint": "1.0.0", - "mediawiki/mediawiki-codesniffer": "26.0.0", - "jakub-onderka/php-console-highlighter": "0.3.2", - "mediawiki/minus-x": "0.3.1", - "mediawiki/mediawiki-phan-config": "0.6.1" + "mediawiki/mediawiki-codesniffer": "31.0.0", + "mediawiki/mediawiki-phan-config": "0.10.2", + "mediawiki/minus-x": "1.1.0", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0" }, "scripts": { "fix": [ - "phpcbf", - "minus-x fix ." + "minus-x fix .", + "phpcbf" ], "test": [ "parallel-lint . --exclude node_modules --exclude vendor", "phpcs -p -s", "minus-x check ." - ] + ], + "phan": "phan -d . --long-progress-bar" } } diff --git a/dev-scripts/setup-storybook.sh b/dev-scripts/setup-storybook.sh new file mode 100755 index 0000000..30db9d5 --- /dev/null +++ b/dev-scripts/setup-storybook.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail +IFS=$'\n\t' + +mkdir -p .storybook/resolve-less-imports/mediawiki.ui +mkdir -p docs/ui/assets/ + +curl -sS "https://en.wikipedia.org/w/load.php?only=styles&skin=vector&debug=true&modules=ext.echo.styles.badge|ext.uls.pt|wikibase.client.init|mediawiki.skinning.interface" -o .storybook/integration.less +curl -sSL "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core/+/master/resources/src/mediawiki.less/mediawiki.mixins.less?format=TEXT" | base64 --decode > .storybook/resolve-less-imports/mediawiki.mixins.less +curl -sSL "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core/+/master/resources/src/mediawiki.less/mediawiki.ui/variables.less?format=TEXT" | base64 --decode > .storybook/resolve-less-imports/mediawiki.ui/variables.less +curl -sSL "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core/+/master/resources/src/mediawiki.less/mediawiki.mixins.rotation.less?format=TEXT" | base64 --decode > .storybook/resolve-less-imports/mediawiki.mixins.rotation.less +curl -sSL "https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core/+/master/resources/src/mediawiki.less/mediawiki.mixins.animation.less?format=TEXT" | base64 --decode > .storybook/resolve-less-imports/mediawiki.mixins.animation.less +curl -sS "https://en.m.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-en.svg" -o "docs/ui/assets/wordmark.svg" +curl -sS "https://en.m.wikipedia.org/static/images/mobile/copyright/wikipedia.png" -o "docs/ui/assets/icon.png" +curl -sS "https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-tagline-en.svg" -o "docs/ui/assets/tagline.svg" diff --git a/hooks.txt b/hooks.txt index 05f6c6b..eb14caa 100644 --- a/hooks.txt +++ b/hooks.txt @@ -1,12 +1,12 @@ Hooks provided by the Vector skin. -'VectorAfterToolbox': Called after rendering the toolbox portlet (div#p-tb). +'VectorAfterToolbox': Called after rendering the toolbox portlet (#p-tb). You can use this to inject items (such as ads or a hit counter, for example) from an extension. -This is the Vector couterpart to the MonoBookAfterToolbox hook in the MonoBook +This is the Vector counterpart to the MonoBookAfterToolbox hook in the MonoBook skin. -'VectorBeforeFooter': Called before the footer (div#footer) is output, but after -div#mw-navigation has been closed. +'VectorBeforeFooter': Called before the footer (#footer) is output, but after +#mw-navigation has been closed. You can use this to inject items (such as ads or a hit counter, for example) -from an extension. \ No newline at end of file +from an extension. diff --git a/i18n/ady-cyrl.json b/i18n/ady-cyrl.json index 8b98470..22cdb92 100644 --- a/i18n/ady-cyrl.json +++ b/i18n/ady-cyrl.json @@ -4,12 +4,12 @@ "Adamsa123", "Amire80", "Celekan", - "Siklawy", "GR44 Luc", - "SamGamgee", - "SmartNart12", + "Highlander45temp", "Inyzh", - "Highlander45temp" + "SamGamgee", + "Siklawy", + "SmartNart12" ] }, "vector-action-addsection": "Ӏофтхьабз", diff --git a/i18n/aeb-arab.json b/i18n/aeb-arab.json index f8e53b8..cd75ca0 100644 --- a/i18n/aeb-arab.json +++ b/i18n/aeb-arab.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "علاء", "Csisc", - "Meno25" + "Meno25", + "علاء" ] }, "vector-action-addsection": "أضف موضوعا", diff --git a/i18n/alt.json b/i18n/alt.json new file mode 100644 index 0000000..670ca12 --- /dev/null +++ b/i18n/alt.json @@ -0,0 +1,21 @@ +{ + "@metadata": { + "authors": [ + "Agilight", + "Altai uul", + "HalanTul" + ] + }, + "vector-action-addsection": "Тема кожор", + "vector-action-delete": "Јоголтор", + "vector-action-move": "Адын солыыр", + "vector-action-protect": "Корыыр", + "vector-action-undelete": "Орныктырар", + "vector-action-unprotect": "Корышты солыыр", + "vector-view-create": "Чаяалга", + "vector-view-edit": "Тӱзедери", + "vector-view-history": "Тӱӱкини кӧргӱзер", + "vector-view-view": "Кычырар", + "vector-view-viewsource": "Темдектерин кӧрӧр", + "vector-more-actions": "Ээчи" +} diff --git a/i18n/an.json b/i18n/an.json index fef37c1..30980c6 100644 --- a/i18n/an.json +++ b/i18n/an.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Juanpabl", - "Carlos Cristia" + "Carlos Cristia", + "Juanpabl" ] }, "skinname-vector": "Vector", diff --git a/i18n/ann.json b/i18n/ann.json new file mode 100644 index 0000000..66050cf --- /dev/null +++ b/i18n/ann.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Katelem" + ] + }, + "vector-action-addsection": "Tap Ibot-ikọ gbaalek", + "vector-action-delete": "Chọk", + "vector-view-create": "Nama", + "vector-view-edit": "Nen̄e ge", + "vector-view-history": "Kpọ mfufuk", + "vector-view-view": "Fuk", + "vector-more-actions": "Ofifi sin̄" +} diff --git a/i18n/ar.json b/i18n/ar.json index 89d1c04..9f6ef05 100644 --- a/i18n/ar.json +++ b/i18n/ar.json @@ -3,18 +3,21 @@ "authors": [ "Abanima", "Calak", + "Khaled", "Meno25", "Mido", "OsamaK", "أحمد", + "ديفيد", "زكريا", - "Khaled", - "علاء", - "ديفيد" + "علاء" ] }, "skinname-vector": "فكتور", "vector-skin-desc": "نسخة حديثة من مونوبوك بمظهر جديد وتحسينات لسهولة الاستخدام", + "prefs-vector-enable-vector-1-label": "استخدم Legacy Vector", + "prefs-vector-enable-vector-1-help": "على مدار السنوات القليلة القادمة، سنقوم بتحديث واجهة Vector بشكل تدريجي. سيسمح لك Legacy Vector بمشاهدة الإصدار القديم من Vector (اعتبارا من ديسمبر 2019). لمعرفة المزيد حول التحديثات، انتقل إلى [[mw:Reading/Web/Desktop_Improvements|صفحة المشروع]].", + "vector-opt-out": "التبديل إلى الشكل القديم", "vector.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة فكتور */", "vector.js": "/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة فكتور */", "vector-action-addsection": "أضف موضوعا", diff --git a/i18n/arq.json b/i18n/arq.json index 5491983..69d2c27 100644 --- a/i18n/arq.json +++ b/i18n/arq.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Bachounda", - "Oldstoneage", - "GeekEmad" + "GeekEmad", + "Oldstoneage" ] }, "vector-skin-desc": "طبعة جديدة تاع مونوبوك، ب شبحة جديدة و تحسانات فل إستعماليّة", diff --git a/i18n/ary.json b/i18n/ary.json index 05639fb..c97de7d 100644 --- a/i18n/ary.json +++ b/i18n/ary.json @@ -1,23 +1,24 @@ { "@metadata": { "authors": [ - "Enzoreg", - "Zanatos", "Abdeaitali", + "Enzoreg", "Reda Benkhadra", - "SADIQUI" + "SADI9I", + "SADIQUI", + "Zanatos" ] }, "vector-action-addsection": "زيد شي موضوع", - "vector-action-delete": "Suprimi", - "vector-action-move": "Neqel", - "vector-action-protect": "Ḫami", - "vector-action-undelete": "rja lhadf", - "vector-action-unprotect": "Ḫiyed l-ḫimaya", - "vector-view-create": "صاوب", - "vector-view-edit": "عدل", + "vector-action-delete": "حدف", + "vector-action-move": "حوّل", + "vector-action-protect": "حمي", + "vector-action-undelete": "لغي الحدف", + "vector-action-unprotect": "بدّل الحماية", + "vector-view-create": "أنشئ", + "vector-view-edit": "بدل", "vector-view-history": "تاريخ", "vector-view-view": "قرا", - "vector-view-viewsource": "Ċof l-masdar", - "vector-more-actions": "زيد" + "vector-view-viewsource": "شوف المصدر", + "vector-more-actions": "كتر" } diff --git a/i18n/ast.json b/i18n/ast.json index a37970b..745c468 100644 --- a/i18n/ast.json +++ b/i18n/ast.json @@ -7,6 +7,7 @@ }, "skinname-vector": "Vector", "vector-skin-desc": "Versión moderna de MonoBook, con un aspeutu frescu y munchos ameyoramientos d'usabilidá", + "prefs-vector-enable-vector-1-label": "Utilizar versión anticuada de Vector", "vector.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Vector */", "vector.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Vector */", "vector-action-addsection": "Amestar seición", diff --git a/i18n/atj.json b/i18n/atj.json index 9242427..0b73915 100644 --- a/i18n/atj.json +++ b/i18n/atj.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Benoit Rochon", "Amqui", + "Benoit Rochon", "Jean-paul echaquan" ] }, diff --git a/i18n/av.json b/i18n/av.json index 97be52f..f584dfd 100644 --- a/i18n/av.json +++ b/i18n/av.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Умар", - "Gazimagomedov" + "Gazimagomedov", + "Умар" ] }, "vector-skin-desc": "MonoBook'алъул цӀияб версия цияб куцгун ва цӀиял юзабилитиялгун", diff --git a/i18n/avk.json b/i18n/avk.json index 82f0986..502118a 100644 --- a/i18n/avk.json +++ b/i18n/avk.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Wikimistusik", - "Axel xadolik" + "Axel xadolik", + "Wikimistusik" ] }, "vector-action-addsection": "Loplekura va detce", diff --git a/i18n/azb.json b/i18n/azb.json index f97b827..9f76374 100644 --- a/i18n/azb.json +++ b/i18n/azb.json @@ -1,12 +1,12 @@ { "@metadata": { "authors": [ + "Alp Er Tunqa", + "Amir a57", "E THP", "Ebrahimi-amir", - "Mousa", - "Amir a57", - "Alp Er Tunqa", - "Ilğım" + "Ilğım", + "Mousa" ] }, "vector-action-addsection": "مؤوضوع آرتیر", diff --git a/i18n/ba.json b/i18n/ba.json index 03a6f87..1a7b9c9 100644 --- a/i18n/ba.json +++ b/i18n/ba.json @@ -3,8 +3,8 @@ "authors": [ "Assele", "Haqmar", - "Рустам Нурыев", - "Sagan" + "Sagan", + "Рустам Нурыев" ] }, "skinname-vector": "Векторлы", diff --git a/i18n/bar.json b/i18n/bar.json index 5f7da4a..2e8ef38 100644 --- a/i18n/bar.json +++ b/i18n/bar.json @@ -2,14 +2,15 @@ "@metadata": { "authors": [ "Bua333", + "Joe Watzmo", "Mucalexx", - "Joe Watzmo" + "WikiBayer" ] }, "vector-action-addsection": "An Obschnitt dazua doa", "vector-action-delete": "Leschn", "vector-action-move": "Vaschiabm", - "vector-action-protect": "Schitzn", + "vector-action-protect": "schitzn", "vector-action-undelete": "Wiederherstön", "vector-action-unprotect": "freigeem", "vector-view-create": "Aufbaun", diff --git a/i18n/bbc-latn.json b/i18n/bbc-latn.json index fe9a284..9a4a6a4 100644 --- a/i18n/bbc-latn.json +++ b/i18n/bbc-latn.json @@ -2,6 +2,8 @@ "@metadata": { "authors": [ "Daniel Harahap", + "NoiX180", + "Salomo Christian Hutajulu", "WBT003Bugari", "WBT006Hendra", "WBT009Anju" @@ -14,8 +16,9 @@ "vector-action-undelete": "unang sesa", "vector-action-unprotect": "Uba parlindungan", "vector-view-create": "Tompa", - "vector-view-edit": "Paubah", + "vector-view-edit": "Patota", "vector-view-history": "Patudu andorang na", "vector-view-view": "Jaha", - "vector-view-viewsource": "Ida haroanna" + "vector-view-viewsource": "Ida haroanna", + "vector-more-actions": "Lobian" } diff --git a/i18n/bci.json b/i18n/bci.json new file mode 100644 index 0000000..f754853 --- /dev/null +++ b/i18n/bci.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Kjeanclaude" + ] + }, + "vector-view-create": "Yi", + "vector-view-edit": "Klè noun", + "vector-view-history": "Nian laa sa", + "vector-view-view": "Kanngan", + "vector-more-actions": "Ouflè ékun" +} diff --git a/i18n/be.json b/i18n/be.json index 219fbeb..a772af7 100644 --- a/i18n/be.json +++ b/i18n/be.json @@ -1,14 +1,16 @@ { "@metadata": { "authors": [ + "Artsiom91", "Mikalai Udodau", "Yury Tarasievich", "Дзяніс Тутэйшы", - "Хомелка", - "Artsiom91" + "Хомелка" ] }, "vector-skin-desc": "Сучасная версія вокладкі Манабук, з абноўленым відам і шматлікімі зручнымі паляпшэннямі", + "prefs-vector-enable-vector-1-label": "Ужыць Legacy Vector", + "prefs-vector-enable-vector-1-help": "Цягам наступных некалькіх гадоў мы будзем паступова абнаўляць шаблон Vector. Legacy Vector дазволіць праглядаць старую версію Vector (станам на снежань 2019 года). Каб даведацца больш, перайдзіце на нашу [[mw:Reading/Web/Desktop_Improvements|старонку праекта]].", "vector-action-addsection": "Дадаць тэму", "vector-action-delete": "Выдаліць", "vector-action-move": "Перанесці", diff --git a/i18n/blc.json b/i18n/blc.json new file mode 100644 index 0000000..f9e122e --- /dev/null +++ b/i18n/blc.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Muskwatch" + ] + }, + "vector-view-edit": "qw'lasiitucw", + "vector-view-view": "sipaapqanu", + "vector-more-actions": "inic7acwlh" +} diff --git a/i18n/bn.json b/i18n/bn.json index 4f62884..45c30c3 100644 --- a/i18n/bn.json +++ b/i18n/bn.json @@ -2,17 +2,20 @@ "@metadata": { "authors": [ "Aftab1995", + "Aftabuzzaman", "Bellayet", "Leemon2010", "Nasir8891", + "Sourav Halder", "Tauhid16", "Wikitanvir", - "Aftabuzzaman", "আফতাবুজ্জামান" ] }, "skinname-vector": "ভেক্টর", "vector-skin-desc": "নতুন চেহারা মনোবুকের আধুনিক সংস্করণ এবং আরো অনেক ব্যবহারযোগ্যতার উন্নতি", + "prefs-vector-enable-vector-1-label": "উত্তরাধিকার ভেক্টর ব্যবহার করুন", + "vector-opt-out": "পুরানো চেহারাতে যান", "vector.css": "/* এখানে স্থাপিত CSS ভেক্টর আবরণ ব্যবহারকারীদের প্রভাবিত করবে */", "vector.js": "/* এখানের যে কোন জাভাস্ক্রিপ্ট ভেক্টর আবরণ ব্যবহারকারীদের জন্য লোড হবে */", "vector-action-addsection": "বিষয় যোগ করুন", diff --git a/i18n/bqi.json b/i18n/bqi.json index 92de707..157f376 100644 --- a/i18n/bqi.json +++ b/i18n/bqi.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Mogoeilor", - "Isevand" + "Isevand", + "Mogoeilor" ] }, "vector-action-addsection": "داسۊن اْزاف کونین", diff --git a/i18n/br.json b/i18n/br.json index 08bad56..d956083 100644 --- a/i18n/br.json +++ b/i18n/br.json @@ -7,6 +7,8 @@ }, "skinname-vector": "Vektor", "vector-skin-desc": "Stumm modern MonoBook freskaet e dres hag enni meur a wellaenn implijout", + "vector-opt-out": "Distreiñ d'an tres kozh", + "vector-opt-out-tooltip": "Kemmañ hoc'h arventennoù evit distreiñ da dres kozh ar gwiskadur (Vector istorel)", "vector.css": "/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Vektor */", "vector.js": "/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Vektor */", "vector-action-addsection": "Rannbennad nevez", diff --git a/i18n/bs.json b/i18n/bs.json index 34be4f6..32f728f 100644 --- a/i18n/bs.json +++ b/i18n/bs.json @@ -3,22 +3,24 @@ "authors": [ "CERminator", "DzWiki", - "KWiki", "Edinwiki", + "KWiki", "Srdjan m" ] }, "vector-skin-desc": "Moderna verzija MonoKnjige s novijim izgledom i mnogim poboljšanjima u pogledu upotrebljivosti", "vector-action-addsection": "Dodaj temu", - "vector-action-delete": "Obriši", + "vector-action-delete": "Izbriši", "vector-action-move": "Premjesti", "vector-action-protect": "Zaštiti", - "vector-action-undelete": "Vrati obrisano", + "vector-action-undelete": "Vrati izbrisano", "vector-action-unprotect": "Promijeni zaštitu", "vector-view-create": "Napravi", "vector-view-edit": "Uredi", "vector-view-history": "Historija", "vector-view-view": "Čitaj", "vector-view-viewsource": "Pogledaj izvor", + "vector-jumptonavigation": "Idi na navigaciju", + "vector-jumptosearch": "Idi na pretragu", "vector-more-actions": "Više" } diff --git a/i18n/btm.json b/i18n/btm.json index e45a85b..71ff8b5 100644 --- a/i18n/btm.json +++ b/i18n/btm.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Simartampua", - "Apundung" + "Apundung", + "Simartampua" ] }, "vector-action-addsection": "Baen tema", diff --git a/i18n/bug.json b/i18n/bug.json index b1b0f9e..cd77884 100644 --- a/i18n/bug.json +++ b/i18n/bug.json @@ -1,12 +1,14 @@ { "@metadata": { "authors": [ - "Kurniasan" + "Kurniasan", + "Notanotheramy" ] }, "vector-action-move": "Paléccé'", - "vector-view-create": "Ebbu", + "vector-view-create": "ᨆᨙᨅᨘ", "vector-view-edit": "Padéccéng", - "vector-view-view": "Baca", - "vector-view-viewsource": "Ita sumber" + "vector-view-view": "ᨅᨌ", + "vector-view-viewsource": "Ita sumber", + "vector-more-actions": "ᨒᨕᨗᨊᨕᨙ" } diff --git a/i18n/ca.json b/i18n/ca.json index dcc5dbe..b1d69d7 100644 --- a/i18n/ca.json +++ b/i18n/ca.json @@ -1,16 +1,16 @@ { "@metadata": { "authors": [ + "Abella", "Aleator", "Anskar", "Calak", + "Fitoschido", "Paucabot", "Ssola", - "Vriullop", "Toniher", - "Fitoschido", - "Abella", - "Townie" + "Townie", + "Vriullop" ] }, "skinname-vector": "Vector", diff --git a/i18n/cdo.json b/i18n/cdo.json index 9d7c44a..3b4c92f 100644 --- a/i18n/cdo.json +++ b/i18n/cdo.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "GnuDoyng", "Yejianfei", - "唐吉訶德的侍從", - "GnuDoyng" + "唐吉訶德的侍從" ] }, "vector-action-addsection": "Gă uâ-dà̤", diff --git a/i18n/ce.json b/i18n/ce.json index b72b094..b0a07fa 100644 --- a/i18n/ce.json +++ b/i18n/ce.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Sasan700", - "Умар", - "Исмаил Садуев" + "Исмаил Садуев", + "Умар" ] }, "skinname-vector": "Векторан", @@ -15,9 +15,9 @@ "vector-action-undelete": "МеттахӀоттае", "vector-action-unprotect": "Ларъяр хийцар", "vector-view-create": "Кхоллар", - "vector-view-edit": "Нисъе", - "vector-view-history": "АгӀона хийцамаш", - "vector-view-view": "Éшар", + "vector-view-edit": "Нисъе бӀаьра", + "vector-view-history": "АгӀонан хийцамаш", + "vector-view-view": "Ешар", "vector-view-viewsource": "Билглонашка хьажа", "vector-jumptonavigation": "Навигацин тӀегӀо", "vector-jumptosearch": "Лахарна тӀегӀо", diff --git a/i18n/ceb.json b/i18n/ceb.json index 80a00a7..c616093 100644 --- a/i18n/ceb.json +++ b/i18n/ceb.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Jordz", - "Bentong Isles" + "Bentong Isles", + "Jordz" ] }, "vector-action-addsection": "Pagdugang og topiko", diff --git a/i18n/cnr-latn.json b/i18n/cnr-latn.json index 272fca1..632d8f0 100644 --- a/i18n/cnr-latn.json +++ b/i18n/cnr-latn.json @@ -8,6 +8,7 @@ "vector-action-delete": "Izbriši", "vector-action-move": "Premjesti", "vector-action-protect": "Zaštiti", + "vector-view-create": "Napravi", "vector-view-edit": "Uredi", "vector-view-history": "Pregledaj istoriju", "vector-view-view": "Čitaj", diff --git a/i18n/co.json b/i18n/co.json index 2698088..be2b762 100644 --- a/i18n/co.json +++ b/i18n/co.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Paulu", - "Jun Misugi" + "Jun Misugi", + "Paulu" ] }, "vector-action-addsection": "Aghjunghje discussione", diff --git a/i18n/cop.json b/i18n/cop.json index e2d5b67..4f7b4a4 100644 --- a/i18n/cop.json +++ b/i18n/cop.json @@ -1,11 +1,12 @@ { "@metadata": { "authors": [ - "ⲁϩⲙⲉⲧ", - "Bloomaround" + "Bloomaround", + "ⲁϩⲙⲉⲧ" ] }, "vector-action-addsection": "ⲧⲟⲩϩⲟ ⲟⲩⲑⲉⲙⲁ", + "vector-action-move": "ⲕⲓⲙ", "vector-view-create": "ⲑⲁⲙⲓⲟ", "vector-view-edit": "ϫⲓⲛⲫⲱⲛϩ", "vector-view-history": "ⲁⲛⲁⲩ ⲉϯϩⲓⲥⲧⲟⲣⲓⲁ", diff --git a/i18n/crh-cyrl.json b/i18n/crh-cyrl.json index bccf53e..e436e6d 100644 --- a/i18n/crh-cyrl.json +++ b/i18n/crh-cyrl.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Don Alessandro", - "Danvintius Bookix" + "Danvintius Bookix", + "Don Alessandro" ] }, "vector-action-addsection": "Мевзу къош", diff --git a/i18n/cs.json b/i18n/cs.json index 163d35e..47f63e0 100644 --- a/i18n/cs.json +++ b/i18n/cs.json @@ -1,15 +1,19 @@ { "@metadata": { "authors": [ - "Mormegil", "Dvorapa", + "Matěj Suchánek", + "Mormegil", "Patriccck" ] }, "skinname-vector": "Vektor", "vector-skin-desc": "Moderní verze vzhledu Kniha s novějším vzhledem a vylepšenou použitelností", - "vector.css": "/* Zde uvedené CSS bude ovlivňovat pouze vzhled „Vektor“ */", - "vector.js": "/* Zde uvedený JavaScript bude použit pouze pro uživatele vzhledu „Vektor“ */", + "prefs-vector-enable-vector-1-label": "Použít starý Vektor", + "prefs-vector-enable-vector-1-help": "V následujících letech budeme postupně aktualizovat vzhled Vektor. Starý Vektor vám umožní používat starou verzi Vektoru z prosince 2019. Více o aktualizacích se dozvíte na naší [[mw:Reading/Web/Desktop_Improvements|projektové stránce]].", + "vector-opt-out": "Přepnout na starý vzhled", + "vector.css": "/* Veškeré zde uvedené CSS bude načítáno uživatelům vzhledu „Vektor“ */", + "vector.js": "/* Veškerý zde uvedený JavaScript bude načítán uživatelům vzhledu „Vektor“ */", "vector-action-addsection": "Přidat téma", "vector-action-delete": "Smazat", "vector-action-move": "Přesunout", diff --git a/i18n/csb.json b/i18n/csb.json index 65aa6a2..86ee501 100644 --- a/i18n/csb.json +++ b/i18n/csb.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Kaszeba", - "Kuvaly", - "Kirsan" + "Kirsan", + "Kuvaly" ] }, "vector-action-addsection": "Dodôj témã", diff --git a/i18n/cv.json b/i18n/cv.json index cda61b0..6421ef5 100644 --- a/i18n/cv.json +++ b/i18n/cv.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Chavash", - "FLAGELLVM DEI", - "Chuvash2014" + "Chuvash2014", + "FLAGELLVM DEI" ] }, "vector-action-addsection": "Тема хуш", diff --git a/i18n/de-ch.json b/i18n/de-ch.json index 8ca3910..604a6e8 100644 --- a/i18n/de-ch.json +++ b/i18n/de-ch.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Marcell0", - "L*E*D" + "L*E*D", + "Marcell0" ] }, "vector-view-edit": "Bearbeiten", diff --git a/i18n/de.json b/i18n/de.json index f6cea42..6b03e40 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -9,8 +9,13 @@ }, "skinname-vector": "Vector", "vector-skin-desc": "Stellt eine modernisierte Benutzeroberfläche bereit", + "prefs-vector-enable-vector-1-label": "Verwende Legacy-Vector", + "prefs-vector-enable-vector-1-help": "Im Laufe der nächsten Jahre werden wir den Vector-Skin schrittweise aktualisieren. Legacy-Vector wird es dir ermöglichen, die alte Version von Vector (Dezember 2019) anzusehen. Um mehr über die Aktualisierungen zu erfahren, gehe zu unserer [[mw:Reading/Web/Desktop_Improvements|Projektseite]].", + "vector-opt-out": "Umschalten zum bisherigen Aussehen", + "vector-opt-out-tooltip": "Ändere deine Einstellungen, um zum alten Aussehen der Benutzeroberfläche zurückzukehren (Legacy-Vector)", "vector.css": "/* Das folgende CSS wird für Benutzer der Vector-Benutzeroberfläche geladen. */", "vector.js": "/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. */", + "vector-action-toggle-sidebar": "Seitenleiste umschalten", "vector-action-addsection": "Abschnitt hinzufügen", "vector-action-delete": "Löschen", "vector-action-move": "Verschieben", diff --git a/i18n/din.json b/i18n/din.json index 111db9d..4778b79 100644 --- a/i18n/din.json +++ b/i18n/din.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Dinkawiki", - "Amire80" + "Amire80", + "Dinkawiki" ] }, "vector-action-addsection": "Mätë wɛ̈tnhom", diff --git a/i18n/diq.json b/i18n/diq.json index 8fbd8b2..5120635 100644 --- a/i18n/diq.json +++ b/i18n/diq.json @@ -1,33 +1,38 @@ { "@metadata": { "authors": [ + "1917 Ekim Devrimi", "Asmen", "Calak", - "Erdemaslancan", - "Mirzali", - "Gorizon", - "Kumkumuk", - "Gırd", - "Velg", - "1917 Ekim Devrimi", "Dılmıc", + "Erdemaslancan", "Gambollar", - "Orbot707" + "Gorizon", + "Gırd", + "Kumkumuk", + "Mirzali", + "Orbot707", + "Velg" ] }, "skinname-vector": "Vektor", "vector-skin-desc": "Asayışo de newe be versiyonê MonoBookiyo modern ra û weşkerdışê ke şenê bıgureniyê", + "prefs-vector-enable-vector-1-label": "Vektorê kehani bıkarnê", + "prefs-vector-enable-vector-1-help": "Serre ke ma ver yenê ma dê asayışê vektori qedemeyın rocanê kerê. Kehan versiyonê kehan vektori hetana Çele 2019 mısade deyeno. Seba rocane kerdışan zêde melumati rê şırê [[mw:Reading/Web/Desktop_Improvements|pela proceyi]]", + "vector-opt-out": "Ravêr asayışê verêni", + "vector-opt-out-tooltip": "Kehan asayışê cildi şiyayışi rê eyaranê ho bıvurnê (Vektoro kehan)", + "vector-action-toggle-sidebar": "Toggle sidebar", "vector-action-addsection": "Mewzu dek", "vector-action-delete": "Bestere", "vector-action-move": "Bıkırışe", "vector-action-protect": "Bışevekne", "vector-action-undelete": "Meestere", "vector-action-unprotect": "Sıtarnayışi bıvurne", - "vector-view-create": "Vıraz", + "vector-view-create": "Vıraze", "vector-view-edit": "Bıvurne", "vector-view-history": "Verêni bıvêne", "vector-view-view": "Bıwane", - "vector-view-viewsource": "Rêçi bıvin", + "vector-view-viewsource": "Çımeyi bıvêne", "vector-jumptonavigation": "Xıl de be pusula", "vector-jumptosearch": "Xıl de cıgeyrayışi", "vector-more-actions": "Zêde" diff --git a/i18n/dty.json b/i18n/dty.json index 3a1677d..112df2d 100644 --- a/i18n/dty.json +++ b/i18n/dty.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ + "Nirajan pant", "जनक राज भट्ट", - "राम प्रसाद जोशी", "रमेश सिंह बोहरा", - "Nirajan pant" + "राम प्रसाद जोशी" ] }, "vector-action-addsection": "विषय थपिदिय", diff --git a/i18n/dv.json b/i18n/dv.json index a356722..aea3c22 100644 --- a/i18n/dv.json +++ b/i18n/dv.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Ushau97", - "Glaisher" + "Glaisher", + "Ushau97" ] }, "vector-action-addsection": "ޚިޔާލެއް އިތުރުކުރައްވާ", diff --git a/i18n/dz.json b/i18n/dz.json new file mode 100644 index 0000000..282f81b --- /dev/null +++ b/i18n/dz.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Tshering Nidup" + ] + }, + "vector-view-view": "ལྷག" +} diff --git a/i18n/ee.json b/i18n/ee.json index 6676418..2432217 100644 --- a/i18n/ee.json +++ b/i18n/ee.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Natsubee", - "Aguve" + "Aguve", + "Natsubee" ] }, "vector-action-delete": "Tutui", diff --git a/i18n/el.json b/i18n/el.json index 53cafeb..84ed223 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -4,14 +4,18 @@ "Calak", "Crazymadlover", "Evropi", + "Geraki", + "Nikosgranturismogt", "Omnipaedista", "Protnet", "ZaDiak", - "Geraki", - "Nikosgranturismogt" + "Αντιγόνη" ] }, "vector-skin-desc": "Σύγχρονη έκδοση του MonoBook με φρέσκια ματιά και πολλές βελτιώσεις χρηστικότητας", + "prefs-vector-enable-vector-1-label": "Χρήση του Legacy Vector", + "prefs-vector-enable-vector-1-help": "Κατά τα επόμενα χρόνια, θα αναβαθμίζουμε σταδιακά το περιβάλλον Vector. Το Legacy Vector θα σας επιτρέψει να δείτε την παλιά έκδοση του Vector (ως τον Δεκέμβριο του 2019). Για να μάθετε περισσότερα σχετικά με τις αναβαθμίσεις, μεταβείτε στη [[mw:Reading/Web/Desktop_Improvements|σελίδα του έργου]] μας.", + "vector-opt-out": "Εναλλαγή στην παλιά εμφάνιση", "vector.css": "/* Το τοποθετημένο εδώ CSS θα επηρεάσει χρήστες του Vector skin */", "vector.js": "/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φορτωθεί για χρήστες που χρησιμοποιούν το Vector skin */", "vector-action-addsection": "Προσθήκη θέματος", @@ -25,7 +29,7 @@ "vector-view-history": "Προβολή ιστορικού", "vector-view-view": "Ανάγνωση", "vector-view-viewsource": "Προβολή κώδικα", - "vector-jumptonavigation": "Πήδηση στην πλοήγηση", + "vector-jumptonavigation": "Μετάβαση στην πλοήγηση", "vector-jumptosearch": "Πήδηση στην αναζήτηση", "vector-more-actions": "Περισσότερα" } diff --git a/i18n/en.json b/i18n/en.json index 8d3ce63..0459ebb 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -4,8 +4,13 @@ }, "skinname-vector": "Vector", "vector-skin-desc": "Modern version of MonoBook with fresh look and many usability improvements, customized for GOLEM", - "vector.css": "/* CSS placed here will affect users of the Vector skin */", - "vector.js": "/* Any JavaScript here will be loaded for users using the Vector skin */", + "prefs-vector-enable-vector-1-label": "Use Legacy Vector", + "prefs-vector-enable-vector-1-help": "Over the next few years, we will be gradually updating the Vector skin. Legacy Vector will allow you to view the old version of Vector (as of December 2019). To learn more about the updates, go to our [[mw:Reading/Web/Desktop_Improvements|project page]].", + "vector-opt-out": "Switch to old look", + "vector-opt-out-tooltip": "Change your settings to go back to the old look of the skin (legacy Vector)", + "vector.css": "/* All CSS here will be loaded for users of the Vector skin */", + "vector.js": "/* All JavaScript here will be loaded for users of the Vector skin */", + "vector-action-toggle-sidebar": "Toggle sidebar", "vector-action-addsection": "Add topic", "vector-action-delete": "Delete", "vector-action-move": "Move", diff --git a/i18n/eo.json b/i18n/eo.json index 13a590c..ffb2878 100644 --- a/i18n/eo.json +++ b/i18n/eo.json @@ -2,9 +2,9 @@ "@metadata": { "authors": [ "KuboF", + "Mirin", "Objectivesea", - "Yekrats", - "Mirin" + "Yekrats" ] }, "skinname-vector": "Vektoro", diff --git a/i18n/es-formal.json b/i18n/es-formal.json index a666c05..1f76612 100644 --- a/i18n/es-formal.json +++ b/i18n/es-formal.json @@ -1,10 +1,12 @@ { "@metadata": { "authors": [ + "KATRINE1993", "XanaG" ] }, "vector-view-edit": "Editar", "vector-view-history": "Ver historial", - "vector-view-view": "Leer" + "vector-view-view": "Leer", + "vector-more-actions": "Mas" } diff --git a/i18n/es.json b/i18n/es.json index aa5908d..ba11db8 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -5,6 +5,8 @@ "Crazymadlover", "Dalton2", "Fitoschido", + "Geryescalier", + "Ihojose", "Locos epraix", "Manuelt15", "MarcoAurelio", @@ -15,6 +17,9 @@ }, "skinname-vector": "Vector", "vector-skin-desc": "Versión moderna de MonoBook, con un aspecto actualizado y muchas mejoras de usabilidad", + "prefs-vector-enable-vector-1-label": "Utilizar versión heredada de Vector", + "vector-opt-out": "Cambiar a la apariencia anterior", + "vector-opt-out-tooltip": "Cambie su configuración para volver al aspecto anterior de la máscara (Vector heredado)", "vector.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"Vector\" */", "vector.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Vector */", "vector-action-addsection": "Sección nueva", diff --git a/i18n/et.json b/i18n/et.json index fc01b32..6ea2752 100644 --- a/i18n/et.json +++ b/i18n/et.json @@ -8,7 +8,9 @@ }, "skinname-vector": "Vektor", "vector-skin-desc": "MonoBooki uuem versioon värskema väljanägemise ja mitme kasutajasõbralikuma täiendusega", - "vector.css": "/* Siin asuv kaskaadilaadistik puudutab kõiki Vektori-kujunduse kasutajaid. */", + "prefs-vector-enable-vector-1-label": "Kasuta vana Vektorit", + "prefs-vector-enable-vector-1-help": "Tulevatel aastatel uuendame järk-järgult Vektori-kujundust. Vana Vektor võimaldab kuvada kujunduse vana versiooni (seisuga detsember 2019). Lisateavet uuenduste kohta leiad [[mw:Reading/Web/Desktop_Improvements|projekti lehelt]].", + "vector.css": "/* Siin asuv kaskaadilaadistik laaditakse kõigi Vektori-kujunduse kasutajate jaoks. */", "vector.js": "/* Siin asuv JavaScript laaditakse kõigi Vektori-kujunduse kasutajate jaoks. */", "vector-action-addsection": "Lisa teema", "vector-action-delete": "Kustuta", @@ -21,5 +23,7 @@ "vector-view-history": "Näita ajalugu", "vector-view-view": "Vaata", "vector-view-viewsource": "Vaata lähteteksti", + "vector-jumptonavigation": "Mine navigeerimisribale", + "vector-jumptosearch": "Mine otsikasti", "vector-more-actions": "Veel" } diff --git a/i18n/eu.json b/i18n/eu.json index 1fc829b..7a67904 100644 --- a/i18n/eu.json +++ b/i18n/eu.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ - "Unai Fdz. de Betoño", - "Xabier Armendaritz", "Fitoschido", - "Subi" + "Subi", + "Unai Fdz. de Betoño", + "Xabier Armendaritz" ] }, "vector-skin-desc": "MonoBook-en bertsio modernoa, itxura berriarekin eta erabilgarritasun hobekuntza askorekin", diff --git a/i18n/fa.json b/i18n/fa.json index 5542673..6e6530d 100644 --- a/i18n/fa.json +++ b/i18n/fa.json @@ -1,17 +1,19 @@ { "@metadata": { "authors": [ + "Alireza Ivaz", "Calak", + "DEXi", "Ebraminio", "Huji", + "Ladsgroup", "Reza1615", - "Zack90", - "DEXi", - "Alireza Ivaz" + "Zack90" ] }, "skinname-vector": "وکتور", "vector-skin-desc": "نگارش مدرن مونوبوک با نمای تازه و بهینه‌سازی‌های کاربردی", + "vector-opt-out": "بازگشت به ظاهر قدیمی", "vector.css": "/* دستورات این بخش کاربرانی را که از پوستهٔ وکتور استفاده کنند تحت تاثیر قرار می‌دهند. */", "vector.js": "/ * کدهای جاوااسکریپتی که در اینجا قرار می‌گیرند برای کاربران پوستهٔ وکتور بارگیری می‌شود * /", "vector-action-addsection": "افزودن بخش", diff --git a/i18n/ff.json b/i18n/ff.json index ac3ee5b..cf024a8 100644 --- a/i18n/ff.json +++ b/i18n/ff.json @@ -5,10 +5,13 @@ ] }, "vector-action-addsection": "Ɓeydi toɓɓere", + "vector-action-delete": "Momtu", "vector-action-move": "Dirtin", + "vector-action-protect": "Hisnu", "vector-view-create": "Sos", "vector-view-edit": "Taƴto", "vector-view-history": "Yiyto aslol", "vector-view-view": "Tar", - "vector-view-viewsource": "Yiyto ɗaɗol" + "vector-view-viewsource": "Yiyto ɗaɗol", + "vector-more-actions": "Ɓeydu" } diff --git a/i18n/fi.json b/i18n/fi.json index 5cf5a81..56657b3 100644 --- a/i18n/fi.json +++ b/i18n/fi.json @@ -1,19 +1,24 @@ { "@metadata": { "authors": [ + "01miki10", "Crt", "Nedergard", "Nike", "Pxos", - "SuperPete", - "01miki10", - "Pyscowicz" + "Pyscowicz", + "SuperPete" ] }, "skinname-vector": "Vektori", "vector-skin-desc": "Uudistettu versio MonoBookista raikkaalla ulkoasulla ja useilla käytettävyysparannuksilla", + "prefs-vector-enable-vector-1-label": "Käytä vanhaa Vektoria", + "prefs-vector-enable-vector-1-help": "Seuraavien muutaman vuoden aikana päivitämme Vektori-ulkoasua vaiheittain. Vanha Vektori mahdollistaa Vektorin vanhan (joulukuu 2019) version käyttämisen. Saadaksesi lisätietoa päivityksistä katso [[mw:Reading/Web/Desktop_Improvements|projektisivumme]].", + "vector-opt-out": "Vaihda vanhaan ulkoasuun", + "vector-opt-out-tooltip": "Muuta asetuksiasi palataksesi ulkoasun vanhaan versioon (vanha Vektori)", "vector.css": "/* Tämä sivu sisältää Vektori-ulkoasua muuttavia tyylejä. */", "vector.js": "/* Tämän sivun JavaScript-koodi liitetään Vektori-tyyliin */", + "vector-action-toggle-sidebar": "Näytä/piilota sivupalkki", "vector-action-addsection": "Lisää aihe", "vector-action-delete": "Poista", "vector-action-move": "Siirrä", diff --git a/i18n/fit.json b/i18n/fit.json index 46089ae..64aadef 100644 --- a/i18n/fit.json +++ b/i18n/fit.json @@ -1,10 +1,12 @@ { "@metadata": { "authors": [ - "Mestos" + "Mestos", + "Palmtree222", + "Pyscowicz" ] }, - "vector-action-addsection": "Lissää aine", + "vector-action-addsection": "Lissää aihe", "vector-action-delete": "Ota poies", "vector-action-move": "Siirä", "vector-action-protect": "Suojaa", @@ -14,5 +16,6 @@ "vector-view-edit": "Mookkaa", "vector-view-history": "Näytä histuuria", "vector-view-view": "Lue", - "vector-view-viewsource": "Näytä lähekooti" + "vector-view-viewsource": "Näytä lähekooti", + "vector-more-actions": "Lissää" } diff --git a/i18n/fon.json b/i18n/fon.json index fe9d51d..0402440 100644 --- a/i18n/fon.json +++ b/i18n/fon.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Mahuton", - "Amire80" + "Amire80", + "Mahuton" ] }, "vector-action-addsection": "Gɔ́ xóta yɔ́yɔ́ ɖévo ná", diff --git a/i18n/fr.json b/i18n/fr.json index dbf8ee8..593686a 100644 --- a/i18n/fr.json +++ b/i18n/fr.json @@ -4,17 +4,25 @@ "Akeron", "Crochet.david", "DavidL", + "DePlusJean", + "Eneelk", "Gomoko", "Jean-Frédéric", + "Niridya", "Od1n", - "DePlusJean", - "Niridya" + "Pamputt", + "Wladek92" ] }, "skinname-vector": "Vector", "vector-skin-desc": "Version moderne de MonoBook avec un aspect rajeuni et beaucoup d’améliorations ergonomiques", + "prefs-vector-enable-vector-1-label": "Utiliser l’ancienne version de Vector", + "prefs-vector-enable-vector-1-help": "Dans les années à venir, nous mettrons progressivement à jour l’habillage Vector. La version héritée de Vector vous permet de voir l’ancien habillage de Vector (tel qu’il était en décembre 2019). Pour en savoir plus, rendez-vous sur [[mw:Reading/Web/Desktop_Improvements|project page]].", + "vector-opt-out": "Basculer vers l’ancien habillage", + "vector-opt-out-tooltip": "Modifier vos paramètres pour revenir à l’ancien aspect de l’habillage (Vector historique)", "vector.css": "/* Le CSS placé ici affectera les utilisateurs de l’habillage Vector. */", "vector.js": "/* Tout code JavaScript placé ici sera chargé pour les utilisateurs de l’habillage Vector */", + "vector-action-toggle-sidebar": "Afficher/cacher la barre latérale", "vector-action-addsection": "Ajouter un sujet", "vector-action-delete": "Supprimer", "vector-action-move": "Renommer", diff --git a/i18n/fy.json b/i18n/fy.json index 72aa04d..2121b7d 100644 --- a/i18n/fy.json +++ b/i18n/fy.json @@ -2,23 +2,31 @@ "@metadata": { "authors": [ "Kening Aldgilles", - "SK-luuut", - "Robin0van0der0vliet", + "PiefPafPier", "Robin van der Vliet", - "PiefPafPier" + "Robin0van0der0vliet", + "SK-luuut" ] }, "skinname-vector": "Vektor", + "vector-skin-desc": "Moderne ferzje fan MonoBoek mei in fris oansjoch en protte noflike ferbetterings", + "prefs-vector-enable-vector-1-label": "De âlde bewende Vektor brûke", + "prefs-vector-enable-vector-1-help": "Yn 'e kommende pear jier geane wy de Vektor-foarmjouwing stadichoan bywurkje. Mei 'de âlde bewende Vektor' kinne jo it oansjoch fan de âlde ferzje fan Vektor (fan desimber 2019) behâlde. Gean nei ús [[mw:Reading/Web/Desktop_Improvements|projektside]] at jo mear witte wolle oer de oanpassings.", + "vector-opt-out": "Alde oansjoch weromsette", + "vector.css": "/* Al it CSS hjirre sil foar brûkers fan de Vector-foarmjouwing laden wurde */", + "vector.js": "/* Al it JavaScript hjirre sil foar brûkers fan de Vector-foarmjouwing laden wurde */", "vector-action-addsection": "Nij mêd", - "vector-action-delete": "Fuortsmite", + "vector-action-delete": "Wiskje", "vector-action-move": "Omneame", - "vector-action-protect": "Beskermje", - "vector-action-undelete": "Tebeksette", - "vector-action-unprotect": "Beskerming fuorthelje", + "vector-action-protect": "Skoattelje", + "vector-action-undelete": "Wer teplak sette", + "vector-action-unprotect": "Befeiliging wizigje", "vector-view-create": "Oanmeitsje", "vector-view-edit": "Bewurkje", - "vector-view-history": "Skiednis sjen litte", + "vector-view-history": "Skiednis besjen", "vector-view-view": "Lêze", - "vector-view-viewsource": "Besjoch de boarne", + "vector-view-viewsource": "Boarne besjen", + "vector-jumptonavigation": "Springe nei navigaasje", + "vector-jumptosearch": "Springe nei sykjen", "vector-more-actions": "Mear" } diff --git a/i18n/gaa.json b/i18n/gaa.json index 410911a..97aaf24 100644 --- a/i18n/gaa.json +++ b/i18n/gaa.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ + "Amire80", "Flixtey", - "Mybluberet", "Gkbediako", - "Amire80" + "Mybluberet" ] }, "vector-action-addsection": "Kɛ mlijaa yitso afata he", diff --git a/i18n/gl.json b/i18n/gl.json index 14d77ee..e8a8450 100644 --- a/i18n/gl.json +++ b/i18n/gl.json @@ -1,13 +1,14 @@ { "@metadata": { "authors": [ + "Banjo", "Elisardojm", "Toliño", - "Vivaelcelta", - "Banjo" + "Vivaelcelta" ] }, "vector-skin-desc": "Versión moderna da aparencia MonoBook, cun aspecto actualizado e moitas melloras na usabilidade", + "prefs-vector-enable-vector-1-label": "Usar Vector Legacy", "vector.css": "/* O CSS que se coloque aquí afectará a quen use a aparencia Vector */", "vector.js": "/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Vector */", "vector-action-addsection": "Nova sección", diff --git a/i18n/grc.json b/i18n/grc.json index 5a34f3e..3966efd 100644 --- a/i18n/grc.json +++ b/i18n/grc.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Crazymadlover", - "Omnipaedista", - "Gts-tg" + "Gts-tg", + "Omnipaedista" ] }, "vector-action-addsection": "Θέμα προστιθέναι", diff --git a/i18n/ha.json b/i18n/ha.json index 4f742ac..0a15dcf 100644 --- a/i18n/ha.json +++ b/i18n/ha.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "DonCamillo", - "Ammarpad" + "Ammarpad", + "DonCamillo" ] }, "vector-action-addsection": "Sabon sashe", diff --git a/i18n/hak.json b/i18n/hak.json index b07f495..1d7a9da 100644 --- a/i18n/hak.json +++ b/i18n/hak.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Anson2812", - "Jetlag", "Hakka", + "Jetlag", "唐吉訶德的侍從" ] }, diff --git a/i18n/he.json b/i18n/he.json index a807dfe..fb83c54 100644 --- a/i18n/he.json +++ b/i18n/he.json @@ -2,14 +2,19 @@ "@metadata": { "authors": [ "Amire80", - "Rotemliss", - "Guycn2" + "Guycn2", + "Rotemliss" ] }, "skinname-vector": "וקטור", "vector-skin-desc": "גרסה מודרנית של העיצוב \"מונובוק\" עם מראה רענן ושיפורי שמישות רבים", + "prefs-vector-enable-vector-1-label": "להשתמש בעיצוב וקטור הישן", + "prefs-vector-enable-vector-1-help": "בשנים הקרובות נעדכן בהדרגה את עיצוב וקטור. עיצוב וקטור הישן יאפשר לך לראות את הגרסה הישנה של וקטור (כפי שהיא הייתה בדצמבר 2019). למידע נוסף על העדכונים, ר' את [[mw:Reading/Web/Desktop_Improvements|דף הפרויקט שלנו]].", + "vector-opt-out": "מעבר למראה הישן", + "vector-opt-out-tooltip": "שינוי ההעדפות שלך וחזרה למראה הישן של העיצוב (וקטור ישן)", "vector.css": "/* הסגנונות הנכתבים כאן ישפיעו על העיצוב \"וקטור\" בלבד */", "vector.js": "/* כל הסקריפטים הנכתבים כאן ייטענו עבור מי שמשתמש בעיצוב \"וקטור\" בלבד */", + "vector-action-toggle-sidebar": "שינוי מצב סרגל צד", "vector-action-addsection": "פסקה חדשה", "vector-action-delete": "מחיקה", "vector-action-move": "העברה", diff --git a/i18n/hi.json b/i18n/hi.json index 0128d7d..18a7a5f 100644 --- a/i18n/hi.json +++ b/i18n/hi.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ + "Sfic", "Siddhartha Ghai", "आलोक", - "रोहित रावत", - "Sfic" + "रोहित रावत" ] }, "skinname-vector": "वेक्टर", diff --git a/i18n/hr.json b/i18n/hr.json index 8666ce8..3a11811 100644 --- a/i18n/hr.json +++ b/i18n/hr.json @@ -1,14 +1,18 @@ { "@metadata": { "authors": [ - "Ex13", - "Tivek", - "Bugoslav", "BadDog", - "MaGa" + "Bugoslav", + "Ex13", + "MaGa", + "Neptune, the Mystic", + "Tivek" ] }, "vector-skin-desc": "Osuvremenjena inačica MonoBooka s obnovljenim dizajnom i mnogim poboljšanjima u upotrebljivosti", + "prefs-vector-enable-vector-1-label": "Rabi stari (baštinjeni) izgled imena Vector", + "prefs-vector-enable-vector-1-help": "Tijekom nekoliko godina osvježavat će se izgled sučelja imena Vector. Baštinjeni Vector omogućit će Vam upotrebu pregleda starije inačice Vectora (do mjeseca prosinca 2019.). Ako želite saznati više o tehnološkome osuvremenjivanju posjetite naše [[mw:Reading/Web/Desktop_Improvements|stranice projekta na MedijaWikiju]].", + "vector-opt-out": "Prebaci na stari izgled", "vector-action-addsection": "Dodaj temu", "vector-action-delete": "Izbriši", "vector-action-move": "Premjesti", diff --git a/i18n/hrx.json b/i18n/hrx.json index 75249d6..10d47a9 100644 --- a/i18n/hrx.json +++ b/i18n/hrx.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Paul Beppler", - "Midnight Gambler" + "Midnight Gambler", + "Paul Beppler" ] }, "vector-action-addsection": "Abschnitt hinzufüche", diff --git a/i18n/hsn.json b/i18n/hsn.json index 66459c3..56c4bc4 100644 --- a/i18n/hsn.json +++ b/i18n/hsn.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "YulouCN", - "SolidBlock" + "SolidBlock", + "YulouCN" ] }, "vector-skin-desc": "给杂清新的样子再加上好多吧多可用性的新MonoBook", diff --git a/i18n/hu.json b/i18n/hu.json index f801599..392440a 100644 --- a/i18n/hu.json +++ b/i18n/hu.json @@ -10,6 +10,9 @@ ] }, "vector-skin-desc": "A MonoBook felület modern változata frissebb kinézettel és sok használhatóságot javító fejlesztéssel", + "prefs-vector-enable-vector-1-label": "Hagyományos Vector használata", + "prefs-vector-enable-vector-1-help": "A következő pár évben fokozatosan frissíteni fogjuk a Vector felületet. A hagyományos Vector beállítással a Vector felület régi (2019. decemberi) változatát használhatod továbbra is. A frissítésekről további információk a [[mw:Reading/Web/Desktop_Improvements|projektlapunkon]] találhatók.", + "vector-opt-out": "Vissza a régi megjelenéshez", "vector.css": "/* Az ide elhelyezett CSS hatással lesz a Vector felület használóira */", "vector.js": "/* A Vector felületet használó szerkesztők számára betöltendő JavaScriptek */", "vector-action-addsection": "Új téma nyitása", diff --git a/i18n/hy.json b/i18n/hy.json index 79e4601..7007f4a 100644 --- a/i18n/hy.json +++ b/i18n/hy.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ + "Arman musikyan", "Teak", "Vadgt", - "Xelgen", - "Arman musikyan" + "Xelgen" ] }, "skinname-vector": "Սովորական", diff --git a/i18n/hyw.json b/i18n/hyw.json index 86f5c72..6b8d4f1 100644 --- a/i18n/hyw.json +++ b/i18n/hyw.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Azniv Stepanian", "ArmenBakkalian", + "Azniv Stepanian", "Rajemian", "Դավիթ Սարոյան" ] diff --git a/i18n/ia.json b/i18n/ia.json index fe679fa..c7ee39c 100644 --- a/i18n/ia.json +++ b/i18n/ia.json @@ -5,6 +5,8 @@ ] }, "vector-skin-desc": "Version moderne de MonoBook con aspecto rejuvenescite e multe meliorationes de usabilitate.", + "prefs-vector-enable-vector-1-label": "Usar le version ancian de Vector", + "prefs-vector-enable-vector-1-help": "In le proxime annos nos va actualisar gradualmente le apparentia Vector. Il continua a esser possibile usar le version ancian de Vector (illo de decembre 2019). Pro leger plus sur le actualisationes, va a nostre [[mw:Reading/Web/Desktop_Improvements|pagina de projecto]].", "vector.css": "/* Le CSS placiate hic afficera le usatores del apparentia Vector */", "vector.js": "/* Omne JavaScript hic se executara pro le usatores del apparentia Vector */", "vector-action-addsection": "Adder topico", diff --git a/i18n/ike-latn.json b/i18n/ike-latn.json index 6c7337b..78ab869 100644 --- a/i18n/ike-latn.json +++ b/i18n/ike-latn.json @@ -1,4 +1,6 @@ { - "@metadata": [], + "@metadata": { + "authors": [] + }, "vector-view-edit": "Suqusiqpaa" } diff --git a/i18n/inh.json b/i18n/inh.json index 854c1c5..212eb80 100644 --- a/i18n/inh.json +++ b/i18n/inh.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ - "Amire80", - "Sapral Mikail", - "Умар", "Adam-Yourist", - "ElizaMag" + "Amire80", + "ElizaMag", + "Sapral Mikail", + "Умар" ] }, "skinname-vector": "Вéктора", @@ -14,10 +14,10 @@ "vector-action-move": "ЦӀи хувца", "vector-action-protect": "Лорае", "vector-action-undelete": "Хьаметтаоттаде", - "vector-action-unprotect": "Лорадар (гIо) хувца", + "vector-action-unprotect": "Лораяр хувца", "vector-view-create": "Хьакхолла", - "vector-view-edit": "Тоае", - "vector-view-history": "ОагӀон хувцамаш", + "vector-view-edit": "Тоаде", + "vector-view-history": "Хувцамаш", "vector-view-view": "Де́ша", "vector-view-viewsource": "Хьалххе бӀаргтохара разметкага хьажар", "vector-more-actions": "Кхы а" diff --git a/i18n/io.json b/i18n/io.json index cb6e8ee..c0524ad 100644 --- a/i18n/io.json +++ b/i18n/io.json @@ -1,11 +1,14 @@ { "@metadata": { "authors": [ - "Malafaya", + "Joao Xavier", "Lakaoso", - "Joao Xavier" + "Malafaya" ] }, + "prefs-vector-enable-vector-1-label": "Uzez 'Legacy Vector'", + "prefs-vector-enable-vector-1-help": "Dum la sequanta yari, ni gradope adoptos la vido-modelo ''Vector''. Legacy Vector permisos vu vidar l'anciena versiono di ''Vector'' (uzita til decembro 2019). Por savar pluse pri l'aktualigi, irez a [[mw:Reading/Web/Desktop_Improvements|nia pagino pri la projeto]].", + "vector-opt-out": "Chanjar al anciena ordino", "vector-action-addsection": "Adjuntar topiko", "vector-action-delete": "Efacar", "vector-action-move": "Movar", diff --git a/i18n/is.json b/i18n/is.json index 6c84d1b..ee89954 100644 --- a/i18n/is.json +++ b/i18n/is.json @@ -4,8 +4,8 @@ "Friðrik Bragi Dýrfjörð", "Maxí", "Snævar", - "Ævar Arnfjörð Bjarmason", - "Sveinn í Felli" + "Sveinn í Felli", + "Ævar Arnfjörð Bjarmason" ] }, "skinname-vector": "Vektor", diff --git a/i18n/it.json b/i18n/it.json index c1cbf76..80efe60 100644 --- a/i18n/it.json +++ b/i18n/it.json @@ -3,14 +3,16 @@ "authors": [ "Beta16", "Darth Kule", + "Elitre", + "FRacco", "Gianfranco", "Melos", "Pietrodn", - "FRacco", - "Elitre" + "Scompo" ] }, "vector-skin-desc": "Versione moderna del MonoBook con un aspetto rinnovato e miglioramenti dell'usabilità, personalizzato per GOLEM", + "vector-opt-out-tooltip": "Cambia le tue impostazioni per ritornare alla visualizzazione della skin precedente (legacy Vector)", "vector.css": "/* Gli stili CSS inseriti qui si applicano agli utenti che usano il tema Vector */", "vector.js": "/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano il tema Vector */", "vector-action-addsection": "Aggiungi discussione", diff --git a/i18n/ja.json b/i18n/ja.json index 0a40231..917989f 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -3,18 +3,21 @@ "authors": [ "Fryed-peach", "Marine-Blue", + "Otokoume", "Penn Station", "Shirayuki", - "Whym", - "青子守歌", "Takot", - "Otokoume" + "Tmv", + "Whym", + "青子守歌" ] }, "skinname-vector": "ベクター", "vector-skin-desc": "新しい見た目でユーザビリティが改善された、モダンバージョンのMonobook。", + "vector-opt-out": "以前の外観に切り替え", "vector.css": "/* ここに記述したCSSはベクター外装の利用者に影響します */", "vector.js": "/* ここにあるすべてのJavaScriptは、ベクター外装を使用している利用者に対して読み込まれます */", + "vector-action-toggle-sidebar": "サイドバーの切り替え", "vector-action-addsection": "話題追加", "vector-action-delete": "削除", "vector-action-move": "移動", diff --git a/i18n/jam.json b/i18n/jam.json index 7200a43..1f7f49b 100644 --- a/i18n/jam.json +++ b/i18n/jam.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Hazard-SJ", - "Yocahuna", - "Katxis" + "Katxis", + "Yocahuna" ] }, "vector-action-addsection": "Ad tapik", diff --git a/i18n/jut.json b/i18n/jut.json index c5db4d6..fd7c736 100644 --- a/i18n/jut.json +++ b/i18n/jut.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Jyllanj", - "Ghiutun" + "Ghiutun", + "Jyllanj" ] }, "vector-action-addsection": "Ny emn", diff --git a/i18n/jv.json b/i18n/jv.json index 19b095a..b0d8fec 100644 --- a/i18n/jv.json +++ b/i18n/jv.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Pras", - "NoiX180" + "NoiX180", + "Pras" ] }, "vector-action-addsection": "Tambah rembug", diff --git a/i18n/kab.json b/i18n/kab.json index c2aa341..f4b1379 100644 --- a/i18n/kab.json +++ b/i18n/kab.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ + "Belkacem77", "Mmistmurt", - "Belkacem77" + "YouvaDjouadi" ] }, "vector-skin-desc": "Lqem atrar n MonoBook s wudem ilemẓi akked ddeqs n usnerni ucbiḥ", - "vector-action-addsection": "Rnud ameggay", + "vector-action-addsection": "Rnu-d asentel", "vector-action-delete": "Mḥu", "vector-action-move": "Snifel isem", "vector-action-protect": "Mmesten", @@ -15,7 +16,7 @@ "vector-view-create": "Rnu", "vector-view-edit": "Ẓreg", "vector-view-history": "Wali amazray", - "vector-view-view": "Ɣer", + "vector-view-view": "Ɣeṛ", "vector-view-viewsource": "Ẓer aɣbalu", "vector-more-actions": "Ugar" } diff --git a/i18n/kea.json b/i18n/kea.json index a88e43a..71a1f5a 100644 --- a/i18n/kea.json +++ b/i18n/kea.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Waldir", "Quintino Lopes Castro Tavares", + "Waldir", "Waldyrious" ] }, diff --git a/i18n/kiu.json b/i18n/kiu.json index 3d1ab49..5c07dae 100644 --- a/i18n/kiu.json +++ b/i18n/kiu.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Mirzali", + "1917 Ekim Devrimi", "Kumkumuk", - "1917 Ekim Devrimi" + "Mirzali" ] }, "vector-skin-desc": "Asayışo de newe be versiyonê MonoBookiyo modern ra û weşkerdışê ke şenê bıgureniyê", diff --git a/i18n/kjh.json b/i18n/kjh.json index 1ff9954..48150da 100644 --- a/i18n/kjh.json +++ b/i18n/kjh.json @@ -5,5 +5,8 @@ ] }, "vector-view-create": "Идебзерге", - "vector-view-edit": "Тӱзедерге" + "vector-view-edit": "Тӱзедерге", + "vector-view-history": "Кӧрігтердің тархыны", + "vector-view-view": "Хығырарға", + "vector-more-actions": "Хоза" } diff --git a/i18n/kn.json b/i18n/kn.json index fcd84f7..bfa1e07 100644 --- a/i18n/kn.json +++ b/i18n/kn.json @@ -3,8 +3,8 @@ "authors": [ "Ktkaushik", "Nayvik", - "VASANTH S.N.", - "Omshivaprakash" + "Omshivaprakash", + "VASANTH S.N." ] }, "vector-action-addsection": "ವಿಷಯ ಸೇರಿಸಿ", diff --git a/i18n/ko.json b/i18n/ko.json index 583ff84..739a86b 100644 --- a/i18n/ko.json +++ b/i18n/ko.json @@ -2,17 +2,19 @@ "@metadata": { "authors": [ "ITurtle", + "Jay94ks", "Kwj2772", - "아라", "Revi", "Ykhwong", - "Jay94ks" + "아라" ] }, "skinname-vector": "벡터", "vector-skin-desc": "신선해 보이고 많은 사용성이 개선된 모노북의 현대 버전", + "vector-opt-out": "이전 스타일로 전환", "vector.css": "/* 이 CSS 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */", "vector.js": "/* 이 자바스크립트 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */", + "vector-action-toggle-sidebar": "사이드바 토글", "vector-action-addsection": "새 주제", "vector-action-delete": "삭제", "vector-action-move": "이동", diff --git a/i18n/krc.json b/i18n/krc.json index 834f714..3690850 100644 --- a/i18n/krc.json +++ b/i18n/krc.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Ernác", "Iltever", - "Къарачайлы", - "Ernác" + "Къарачайлы" ] }, "skinname-vector": "Вектор", diff --git a/i18n/krl.json b/i18n/krl.json index d336cff..6b5fe49 100644 --- a/i18n/krl.json +++ b/i18n/krl.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Mashoi7", "Ilja.mos", "Likopiän tyttö", + "Mashoi7", "Varvana" ] }, diff --git a/i18n/ks-arab.json b/i18n/ks-arab.json index 1f8ec54..adfb6ae 100644 --- a/i18n/ks-arab.json +++ b/i18n/ks-arab.json @@ -1,5 +1,7 @@ { - "@metadata": [], + "@metadata": { + "authors": [] + }, "vector-view-edit": "تَرتیٖب دِیُن", "vector-view-view": "پَرُن" } diff --git a/i18n/ksw.json b/i18n/ksw.json new file mode 100644 index 0000000..d3194a5 --- /dev/null +++ b/i18n/ksw.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Jaeminlovetaejoon", + "SawJaemin" + ] + }, + "vector-action-addsection": "မၤအါထီၣ်တၢ်ဂ့ၢ်ခိၣ်တီ", + "vector-action-delete": "ထူးသံကွံာ်", + "vector-action-move": "သုး", + "vector-action-protect": "ဒီသဒၢ", + "vector-view-create": "တ့ထီၣ်", + "vector-view-edit": "အဲးဒံၣ်", + "vector-view-history": "ကွၢ်တၢ်စံၣ်စိၤတဲစိၤ", + "vector-view-view": "ဖး", + "vector-more-actions": "အါထီၣ်" +} diff --git a/i18n/ku-latn.json b/i18n/ku-latn.json index 811baeb..92a7cad 100644 --- a/i18n/ku-latn.json +++ b/i18n/ku-latn.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ - "Ferhengvan", - "Gomada", "Bikarhêner", - "George Animal" + "Ferhengvan", + "George Animal", + "Gomada" ] }, "vector-action-addsection": "Mijarekê lê zêde bike", diff --git a/i18n/ky.json b/i18n/ky.json index 3513421..1f91d35 100644 --- a/i18n/ky.json +++ b/i18n/ky.json @@ -3,9 +3,9 @@ "authors": [ "Chorobek", "Growingup", + "Janatkg", "Ztimur", - "Викиней", - "Janatkg" + "Викиней" ] }, "vector-action-addsection": "Тема кошуу", diff --git a/i18n/la.json b/i18n/la.json index ad77cd0..f344690 100644 --- a/i18n/la.json +++ b/i18n/la.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "UV", - "Laurentianus" + "Laurentianus", + "UV" ] }, "vector-action-addsection": "Partem novam addere", diff --git a/i18n/lad.json b/i18n/lad.json index 8374031..93d5a95 100644 --- a/i18n/lad.json +++ b/i18n/lad.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Universal Life", - "Chabi1" + "Chabi1", + "Universal Life" ] }, "vector-action-addsection": "Ajustar sujeto", diff --git a/i18n/lb.json b/i18n/lb.json index 4e054e7..506d959 100644 --- a/i18n/lb.json +++ b/i18n/lb.json @@ -6,6 +6,8 @@ }, "skinname-vector": "Vector", "vector-skin-desc": "Modern Versioun vu Monobook mat frëschem Look a ville Verbesserunge vun der Benotzerfrëndlechkeet", + "prefs-vector-enable-vector-1-label": "Déi al-Versioun vu Vector benotzen", + "vector-opt-out": "An den ale Layout wiesselen", "vector.css": "/* CSS deen hei steet huet Afloss op all Benotzer vum Ausgesinn Vector */", "vector.js": "/* All JavaScript hei gëtt gelueden esoubal ee Benotzer d'Ausgesinn Vector benotzt */", "vector-action-addsection": "Sujet dobäisetzen", diff --git a/i18n/lfn.json b/i18n/lfn.json index aa0a390..f3ecd0d 100644 --- a/i18n/lfn.json +++ b/i18n/lfn.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Cgboeree", - "Katxis", - "Chabi" + "Chabi", + "Katxis" ] }, "vector-action-addsection": "Ajunta un tema", diff --git a/i18n/li.json b/i18n/li.json index a3f7ed7..c2c1c6b 100644 --- a/i18n/li.json +++ b/i18n/li.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Ooswesthoesbes", - "Robin0van0der0vliet", - "Robin van der Vliet" + "Robin van der Vliet", + "Robin0van0der0vliet" ] }, "vector-skin-desc": "Modern versie van MonoBook mit e frisj uterlik en verbaeteringe op 't gebeed van gebroeksvruntjelikheid", diff --git a/i18n/lij.json b/i18n/lij.json index c45f3c6..03f3e7b 100644 --- a/i18n/lij.json +++ b/i18n/lij.json @@ -6,6 +6,11 @@ "S4b1nuz E.656" ] }, + "vector-skin-desc": "Verscion moderna do MonoBook co-in aspetto rinovou e di belli avantaggi inta dœuviabilitæ", + "prefs-vector-enable-vector-1-label": "Adœuvia o Vector vegio", + "prefs-vector-enable-vector-1-help": "Inti proscimi anni ciancianin agiorniemo e pelle do Vector. O Vector Legacy o te permetiâ d'amiâ a verscion vegia do Vector (do dexembre 2019). Pe saveine de ciu in scî agiornamenti vanni a-a nostra [[mw:Reading/Web/Desktop_Improvements|paggina do progetto]]", + "vector-opt-out": "Passa a l'aspetto vegio", + "vector-opt-out-tooltip": "Cangia e to impostassioin pe tornâ a-a vixoalizassion da pelle vegia (legacy Vector)", "vector-action-addsection": "Azónzi discusción", "vector-action-delete": "Scancella", "vector-action-move": "Mescia", @@ -17,5 +22,7 @@ "vector-view-history": "Cronologîa", "vector-view-view": "Lêzi", "vector-view-viewsource": "Vixualizza wikitesto", + "vector-jumptonavigation": "Sata a-a navegassion", + "vector-jumptosearch": "Sata a-a serchia", "vector-more-actions": "Âtro" } diff --git a/i18n/liv.json b/i18n/liv.json index b5838fb..0a9dfac 100644 --- a/i18n/liv.json +++ b/i18n/liv.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Warbola", - "Kengšepā" + "Kengšepā", + "Warbola" ] }, "vector-action-addsection": "Pan jūrõ tēma", diff --git a/i18n/lki.json b/i18n/lki.json index 7c1cbfe..77a47ea 100644 --- a/i18n/lki.json +++ b/i18n/lki.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Hosseinblue", "Arash71", + "Hosseinblue", "Lakzon" ] }, diff --git a/i18n/lld.json b/i18n/lld.json index aaf11a7..2c31a8a 100644 --- a/i18n/lld.json +++ b/i18n/lld.json @@ -1,10 +1,14 @@ { "@metadata": { "authors": [ - "Asenoner" + "Asenoner", + "Starladin" ] }, "vector-action-addsection": "Mët leprò n tema de descuscion", + "vector-action-delete": "Straihëia", + "vector-action-move": "Spostëia", + "vector-action-protect": "Straverda", "vector-view-create": "Mët adum", "vector-view-edit": "Muda", "vector-view-history": "Storia dl documënt", diff --git a/i18n/lrc.json b/i18n/lrc.json index 5e9b0e1..d727cba 100644 --- a/i18n/lrc.json +++ b/i18n/lrc.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Mogoeilor", "Beyronvan", - "Lorestani" + "Lorestani", + "Mogoeilor" ] }, "vector-action-addsection": "سالفٱ اْزاف بٱکؽت", diff --git a/i18n/lt.json b/i18n/lt.json index ac89b12..50eb07f 100644 --- a/i18n/lt.json +++ b/i18n/lt.json @@ -1,13 +1,13 @@ { "@metadata": { "authors": [ + "Albertas", "Garas", "Homo", + "Hugo.arg", "Matasg", "Perkunas", - "Hugo.arg", - "Tomasdd", - "Albertas" + "Tomasdd" ] }, "skinname-vector": "Vektorinė", diff --git a/i18n/lzh.json b/i18n/lzh.json index ab2286d..21c7956 100644 --- a/i18n/lzh.json +++ b/i18n/lzh.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Itsmine", "Justincheng12345", - "Nemo bis", - "Itsmine" + "Nemo bis" ] }, "skinname-vector": "動力", diff --git a/i18n/lzz.json b/i18n/lzz.json index 1adad07..23d0055 100644 --- a/i18n/lzz.json +++ b/i18n/lzz.json @@ -3,9 +3,9 @@ "authors": [ "Bombola", "Ceas08", + "Cem Rize", "Erdemaslancan", - "Velg", - "Cem Rize" + "Velg" ] }, "vector-action-addsection": "Konu ekle", diff --git a/i18n/mad.json b/i18n/mad.json new file mode 100644 index 0000000..7ed42f6 --- /dev/null +++ b/i18n/mad.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Abdiafrizal", + "NoiX180" + ] + }, + "vector-view-edit": "Sontèng", + "vector-view-view": "Bâcâ", + "vector-more-actions": "Polè" +} diff --git a/i18n/mai.json b/i18n/mai.json index 8a6ae45..f85dddc 100644 --- a/i18n/mai.json +++ b/i18n/mai.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Ggajendra", - "Umeshberma", "Tulsi Bhagat", + "Umeshberma", "बिप्लब आनन्द" ] }, diff --git a/i18n/map-bms.json b/i18n/map-bms.json index 40cbfae..bff0e37 100644 --- a/i18n/map-bms.json +++ b/i18n/map-bms.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "StefanusRA", - "Mbrt" + "Mbrt", + "StefanusRA" ] }, "vector-action-addsection": "Nambah topik", diff --git a/i18n/mdf.json b/i18n/mdf.json index 202a893..c38c5ef 100644 --- a/i18n/mdf.json +++ b/i18n/mdf.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Numulunj pilgae", - "Metsavend" + "Metsavend", + "Numulunj pilgae" ] }, "vector-action-addsection": "Поладомс мезень колга корхтамс", diff --git a/i18n/min.json b/i18n/min.json index f60ea0c..e9ca322 100644 --- a/i18n/min.json +++ b/i18n/min.json @@ -3,8 +3,8 @@ "authors": [ "Iwan Novirion", "Luthfi94", - "VoteITP", - "Naval Scene" + "Naval Scene", + "VoteITP" ] }, "skinname-vector": "Vektor", diff --git a/i18n/mk.json b/i18n/mk.json index b98e321..ea7857a 100644 --- a/i18n/mk.json +++ b/i18n/mk.json @@ -7,8 +7,13 @@ }, "skinname-vector": "Векторско", "vector-skin-desc": "Современа верзија на рувото „МоноБук“ со свеж изглед и многу подобрувања на употребливоста", + "prefs-vector-enable-vector-1-label": "Користи Векторско по старо", + "prefs-vector-enable-vector-1-help": "Во текот на следните некмолку години постепено ќе го надградуваме рувото Векторско. Неговата употреба по старо ќе ви овозможува да ја гледате старата верзија (по податок од декември 2019 г.). За да дознаете повеќе за надградбите, појдете на нашата [[mw:Reading/Web/Desktop_Improvements|проектна страница]].", + "vector-opt-out": "Смени на стариот изглед", + "vector-opt-out-tooltip": "Сменете си ги нагодувањата за да се вратите на стариот изглед на рувото (поранешното Векторско)", "vector.css": "/* Тука поставениот CSS се однесува на корисниците на рувото „Векторско“ */", "vector.js": "/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Векторско“ */", + "vector-action-toggle-sidebar": "Префрлање на страничник", "vector-action-addsection": "Додај тема", "vector-action-delete": "Избриши", "vector-action-move": "Премести", diff --git a/i18n/mn.json b/i18n/mn.json index 46c736d..d9a7e8a 100644 --- a/i18n/mn.json +++ b/i18n/mn.json @@ -3,8 +3,8 @@ "authors": [ "Chinneeb", "MongolWiki", - "Wisdom", - "Sembuk" + "Sembuk", + "Wisdom" ] }, "vector-action-addsection": "Сэдэв нэмэх", diff --git a/i18n/mo.json b/i18n/mo.json index d9d3e83..2431dcf 100644 --- a/i18n/mo.json +++ b/i18n/mo.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "TheChampionMan1234", - "Cybernenea11" + "Cybernenea11", + "TheChampionMan1234" ] }, "vector-action-delete": "Штерӂере", diff --git a/i18n/mrh.json b/i18n/mrh.json new file mode 100644 index 0000000..8d07a41 --- /dev/null +++ b/i18n/mrh.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Laitei", + "Teitei Para" + ] + }, + "vector-action-addsection": "Chôtlâhpi khô", + "vector-view-create": "Tao", + "vector-view-edit": "Taopathi", + "vector-view-history": "Chhichânazy palâ teih", + "vector-view-view": "Reih teih", + "vector-more-actions": "Ahluhviapa" +} diff --git a/i18n/mui.json b/i18n/mui.json index 5a7480d..80d38ec 100644 --- a/i18n/mui.json +++ b/i18n/mui.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Mahali syarifuddin", "Jawadywn", + "Mahali syarifuddin", "Masjawad99" ] }, diff --git a/i18n/mwl.json b/i18n/mwl.json index 5ac61e2..43d0084 100644 --- a/i18n/mwl.json +++ b/i18n/mwl.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "MokaAkashiyaPT", - "Athena in Wonderland" + "Athena in Wonderland", + "MokaAkashiyaPT" ] }, "vector-action-addsection": "Nuobo cacho", diff --git a/i18n/my.json b/i18n/my.json index f9812c6..6bb2a90 100644 --- a/i18n/my.json +++ b/i18n/my.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Dr Lotus Black", "Lionslayer", "Myanmars", "Ninjastrikers", @@ -18,5 +19,7 @@ "vector-view-history": "ရာဇဝင်ကြည့်ရန်", "vector-view-view": "ဖတ်ရန်", "vector-view-viewsource": "ရင်းမြစ်ကို ကြည့်ရန်", + "vector-jumptonavigation": "အ​ညွှန်း​သို့ ခုန်ကူးရန်", + "vector-jumptosearch": "ရှာဖွေရန် ခုန်ကူးမည်", "vector-more-actions": "ပို၍" } diff --git a/i18n/nah.json b/i18n/nah.json index d711990..4917190 100644 --- a/i18n/nah.json +++ b/i18n/nah.json @@ -1,12 +1,12 @@ { "@metadata": { "authors": [ + "Akapochtli", "Ricardo gs", - "Taresi", - "Akapochtli" + "Taresi" ] }, - "vector-action-addsection": "Xicahxilti netlahtōlpepechtiliztli", + "vector-action-addsection": "Xicahxilti netlahtolpepechtiliztli", "vector-action-delete": "Xicpolo", "vector-action-move": "Xiczaca", "vector-action-protect": "Xicpiya", diff --git a/i18n/nan.json b/i18n/nan.json index a4ed07b..706a51c 100644 --- a/i18n/nan.json +++ b/i18n/nan.json @@ -1,9 +1,10 @@ { "@metadata": { "authors": [ + "A-lú-mih", "Ianbu", - "唐吉訶德的侍從", - "Luuva" + "Luuva", + "唐吉訶德的侍從" ] }, "vector-action-addsection": "Ke chi̍t-ê toān-lo̍h", diff --git a/i18n/nap.json b/i18n/nap.json index f93c333..ba7282d 100644 --- a/i18n/nap.json +++ b/i18n/nap.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Chelin", "C.R.", + "Chelin", "Ruthven", "Sannita" ] diff --git a/i18n/nb.json b/i18n/nb.json index c580953..e2ff942 100644 --- a/i18n/nb.json +++ b/i18n/nb.json @@ -3,8 +3,8 @@ "authors": [ "Danmichaelo", "Event", - "Nghtwlkr", - "Jon Harald Søby" + "Jon Harald Søby", + "Nghtwlkr" ] }, "skinname-vector": "Vector", diff --git a/i18n/nds.json b/i18n/nds.json index cc1d443..b6a4a86 100644 --- a/i18n/nds.json +++ b/i18n/nds.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Servien", "Slomox", - "Zylbath", - "Servien" + "Zylbath" ] }, "vector-action-addsection": "Thema tofögen", diff --git a/i18n/ne.json b/i18n/ne.json index 916d212..88185aa 100644 --- a/i18n/ne.json +++ b/i18n/ne.json @@ -3,9 +3,9 @@ "authors": [ "Bhawani Gautam", "RajeshPandey", - "सरोज कुमार ढकाल", "बिप्लब आनन्द", - "राम प्रसाद जोशी" + "राम प्रसाद जोशी", + "सरोज कुमार ढकाल" ] }, "skinname-vector": "भेक्टर", diff --git a/i18n/nl.json b/i18n/nl.json index b694046..791e04f 100644 --- a/i18n/nl.json +++ b/i18n/nl.json @@ -2,16 +2,17 @@ "@metadata": { "authors": [ "Calak", + "Mainframe98", "Romaine", "SPQRobin", "Siebrand", - "Troefkaart", "Sjoerddebruin", - "Mainframe98" + "Troefkaart" ] }, "skinname-vector": "Vector", "vector-skin-desc": "Moderne versie van MonoBook met een fris uiterlijk en verbeteringen op het gebied van gebruiksvriendelijkheid", + "vector-opt-out": "Naar oude vormgeving omschakelen", "vector.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op het uiterlijk Vector */", "vector.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die het uiterlijk Vector gebruiken */", "vector-action-addsection": "Kopje toevoegen", diff --git a/i18n/nqo.json b/i18n/nqo.json index a2a95a0..6295681 100644 --- a/i18n/nqo.json +++ b/i18n/nqo.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ - "Youssoufkadialy", - "Lanciné.kounfantoh.fofana", + "Babamamadidiane", "Lancine.kounfantoh.fofana", - "Babamamadidiane" + "Lanciné.kounfantoh.fofana", + "Youssoufkadialy" ] }, "vector-action-addsection": "ߥߟߊ߬ߘߊ߫ ߝߙߊ߬", diff --git a/i18n/om.json b/i18n/om.json new file mode 100644 index 0000000..5c042df --- /dev/null +++ b/i18n/om.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Oromoo" + ] + }, + "vector-action-addsection": "Mata-dure ida'i", + "vector-action-delete": "Balleessi", + "vector-action-undelete": "Hin balleessin", + "vector-view-create": "Uumi", + "vector-view-edit": "Gulaali", + "vector-view-history": "Seenaa laali", + "vector-view-view": "Dubbisi", + "vector-jumptosearch": "Gara barbaadutti ce'i", + "vector-more-actions": "Dabalata" +} diff --git a/i18n/pam.json b/i18n/pam.json index 1e0a3b7..f831466 100644 --- a/i18n/pam.json +++ b/i18n/pam.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Katimawan2005", - "Val2397", - "Leeheonjin" + "Leeheonjin", + "Val2397" ] }, "vector-action-addsection": "Dagdagan ing pisasabian", diff --git a/i18n/pl.json b/i18n/pl.json index c1abc68..29c1492 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -1,15 +1,21 @@ { "@metadata": { "authors": [ + "Chrumps", "Matma Rex", - "Sp5uhe", - "Chrumps" + "Rail", + "Sp5uhe" ] }, "skinname-vector": "Wektor", "vector-skin-desc": "Odświeżona wersja skórki Książka, z nowym wyglądem i usprawnieniami", + "prefs-vector-enable-vector-1-label": "Użyj starego Wektora", + "prefs-vector-enable-vector-1-help": "W ciągu najbliższych kilku lat będziemy stopniowo aktualizować skórkę Wektor. Stary Wektor umożliwi ci używanie poprzedniej wersji skórki (na grudzień 2019). Aby dowiedzieć się więcej o aktualizacjach przejdź do naszej [[mw:Reading/Web/Desktop_Improvements|strony projektu]].", + "vector-opt-out": "Przełącz na stary widok", + "vector-opt-out-tooltip": "Zmień ustawienia, aby powrócić do starego wyglądu skórki (stary Wektor)", "vector.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Wektor */", "vector.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Wektor */", + "vector-action-toggle-sidebar": "Przełącz panel boczny", "vector-action-addsection": "Dodaj temat", "vector-action-delete": "Usuń", "vector-action-move": "Przenieś", diff --git a/i18n/prs.json b/i18n/prs.json index b8bf21f..c572191 100644 --- a/i18n/prs.json +++ b/i18n/prs.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Mjbmr", - "Ahmed-Najib-Biabani-Ibrahimkhel" + "Ahmed-Najib-Biabani-Ibrahimkhel", + "Mjbmr" ] }, "vector-view-create": "ساختن", diff --git a/i18n/pt-br.json b/i18n/pt-br.json index 89b7c07..bc53f09 100644 --- a/i18n/pt-br.json +++ b/i18n/pt-br.json @@ -1,22 +1,27 @@ { "@metadata": { "authors": [ + "!Silent", "Cainamarques", "Diego Queiroz", - "Giro720", - "Helder.wiki", - 555, - "He7d3r", - "!Silent", + "Eduardo Addad de Oliveira", "Felipe L. Ewald", + "Giro720", + "He7d3r", + "Helder.wiki", "Opraco", - "Eduardo Addad de Oliveira" + 555 ] }, "skinname-vector": "Vector", "vector-skin-desc": "Versão moderna do MonoBook com um visual limpo e várias melhorias de usabilidade", + "prefs-vector-enable-vector-1-label": "Usar vetor legado", + "prefs-vector-enable-vector-1-help": "Nos próximos anos, atualizaremos gradualmente a capa Vector. O Vetor legado permitirá que você visualize a versão antiga do Vector (a partir de dezembro de 2019). Para saber mais sobre as atualizações, acesse nosso [[mw:Reading/Web/Desktop_Improvements|project page]].", + "vector-opt-out": "Mudar para aparência antiga", + "vector-opt-out-tooltip": "Altere suas configurações para voltar à aparência antiga da pele (vetor herdado)", "vector.css": "/* CSS colocado aqui irá afetar usuários do tema Vector */", "vector.js": "/* Qualquer JavaScript aqui colocado será carregado para usuários usando o tema Vector */", + "vector-action-toggle-sidebar": "Alternar barra lateral", "vector-action-addsection": "Adicionar tópico", "vector-action-delete": "Excluir", "vector-action-move": "Mover", diff --git a/i18n/pt.json b/i18n/pt.json index 702c20b..c165bd1 100644 --- a/i18n/pt.json +++ b/i18n/pt.json @@ -1,21 +1,26 @@ { "@metadata": { "authors": [ + "Athena in Wonderland", "Crazymadlover", "Giro720", "Hamilton Abreu", "Malafaya", + "MokaAkashiyaPT", "Vitorvicentevalente", "Waldir", - "MokaAkashiyaPT", - "Athena in Wonderland", "Waldyrious" ] }, "skinname-vector": "Vector", "vector-skin-desc": "Versão moderna do MonoBook com um aspeto fresco e várias melhorias de usabilidade", + "prefs-vector-enable-vector-1-label": "Usar o Vector antigo", + "prefs-vector-enable-vector-1-help": "Durante os próximos anos iremos atualizar gradualmente o tema Vector. O Vetor antigo permitirá ver a versão antiga do tema Vector (a partir de dezembro de 2019). Para saber mais sobre as atualizações, consulte a [[mw:Reading/Web/Desktop_Improvements|página do projeto]].", + "vector-opt-out": "Mudar para aparência antiga", + "vector-opt-out-tooltip": "Alterar as suas configurações para voltar ao aspeto anterior do tema (Vector anterior)", "vector.css": "/* Código CSS colocado aqui afectará os utilizadores do tema Vector */", "vector.js": "/* Código Javascript colocado aqui será carregado para utilizadores do tema Vector */", + "vector-action-toggle-sidebar": "Alternar barra lateral", "vector-action-addsection": "Adicionar tópico", "vector-action-delete": "Eliminar", "vector-action-move": "Mover", diff --git a/i18n/qqq.json b/i18n/qqq.json index 209eddd..b350642 100644 --- a/i18n/qqq.json +++ b/i18n/qqq.json @@ -3,20 +3,25 @@ "authors": [ "Darth Kule", "EugeneZelenko", - "Lloffiwr", - "Shirayuki", - "Umherirrender", - "Matma Rex", "Liuxinyu970226", - "Raymond", + "Lloffiwr", + "Matma Rex", "Metalhead64", - "Tacsipacsi" + "Raymond", + "Shirayuki", + "Tacsipacsi", + "Umherirrender" ] }, "skinname-vector": "{{name}}", "vector-skin-desc": "{{desc|what=skin|name=Vector|url=https://www.mediawiki.org/wiki/Skin:Vector}}", + "prefs-vector-enable-vector-1-label": "Label for the checkbox to force Legacy Vector operation accessible via Special:Preferences. When this checkbox is enabled, the December 2019 of Vector is used. When this checkbox is disabled, the actively developed version of Vector is used instead.", + "prefs-vector-enable-vector-1-help": "Detail explaining the operation of the prefs-vector-enable-vector-1-label checkbox.", + "vector-opt-out": "Text of link that takes the user to the Special:Preferences page so they can opt-out of the latest version of Vector and go back to legacy Vector.", + "vector-opt-out-tooltip": "Used as the tooltip for the Vector opt-out link", "vector.css": "{{optional}}", "vector.js": "{{optional}}", + "vector-action-toggle-sidebar": "Accessibility label for the button that toggles the sidebar's visibility, as well as audible presentation for screen readers.", "vector-action-addsection": "Used in the Vector skin. See for example {{canonicalurl:Talk:Main_Page|useskin=vector}}\n{{Identical|Add topic}}", "vector-action-delete": "Used in the Vector skin, as the name of a tab at the top of the page. See for example {{canonicalurl:Translating:MediaWiki|useskin=vector}}\n\n{{Identical|Delete}}", "vector-action-move": "Used in the Vector skin, on the tabs at the top of the page. See for example {{canonicalurl:Talk:Main_Page|useskin=vector}}\n\n{{Identical|Move}}", diff --git a/i18n/rgn.json b/i18n/rgn.json index 401915f..959fd80 100644 --- a/i18n/rgn.json +++ b/i18n/rgn.json @@ -1,5 +1,7 @@ { - "@metadata": [], + "@metadata": { + "authors": [] + }, "vector-action-addsection": "Zonta una cjacarèda", "vector-action-delete": "Scanzèla", "vector-action-move": "Chèmbia nòm", diff --git a/i18n/rif.json b/i18n/rif.json index b994ff9..baad84e 100644 --- a/i18n/rif.json +++ b/i18n/rif.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "MoubarikBelkasim", - "Amara-Amaziɣ" + "Amara-Amaziɣ", + "MoubarikBelkasim" ] }, "vector-action-addsection": "ⵔⵏⵓ ⴰⵙⵏⵜⵍ", diff --git a/i18n/ro.json b/i18n/ro.json index 6c54a3d..9f34582 100644 --- a/i18n/ro.json +++ b/i18n/ro.json @@ -4,9 +4,9 @@ "AdiJapan", "Danutz", "Firilacroco", + "ImGelu", "Minisarm", - "Strainu", - "ImGelu" + "Strainu" ] }, "skinname-vector": "Vector", diff --git a/i18n/roa-tara.json b/i18n/roa-tara.json index 9760c65..50e8f74 100644 --- a/i18n/roa-tara.json +++ b/i18n/roa-tara.json @@ -6,8 +6,13 @@ }, "skinname-vector": "Vettore", "vector-skin-desc": "Versione moderne de MonoBook cu 'nu sguarde aggiornate e 'nu sbuènne de miglioramende sus a l'ausabbilità", + "prefs-vector-enable-vector-1-label": "Ause 'u vettore andiche", + "prefs-vector-enable-vector-1-help": "Jndr'à le prossime anne, amma aggiornà a chiane chiane 'u skin Vector. Legacy Vector te face 'ndrucà 'a versione vecchie de Vector (partenne da decembre 2019). Pe sapè de cchiù sus a le aggiornaminde, vèje sus 'a [[mw:Reading/Web/Desktop_Improvements|pàgene d'u pruggette]] nostre.", + "vector-opt-out": "Passe a grafeche d'apprime", + "vector-opt-out-tooltip": "Cange le 'mbostaziune pe turnà rrete a 'u vecchie mode d'u skin (Vector andiche)", "vector.css": "/* 'U CSS ca se iacchie aqquà 'u 'ndrucane le utinde d'a masckere Vettore */", "vector.js": "/* Ogne JavaScript aqquà avène carecate pe le utinde ca ausane 'a masckere Vettore */", + "vector-action-toggle-sidebar": "Live e mitte 'a barre laterale", "vector-action-addsection": "Aggiunge 'na discussiona", "vector-action-delete": "Scangille", "vector-action-move": "Spuèste", diff --git a/i18n/ru.json b/i18n/ru.json index 07fadfb..43fcff0 100644 --- a/i18n/ru.json +++ b/i18n/ru.json @@ -1,18 +1,23 @@ { "@metadata": { "authors": [ + "Alexander Yukal", "Ignatus", "JenVan", "Kaganer", "Nemo bis", "Okras", - "Александр Сигачёв", "Ole Yves", - "Stjn" + "Stjn", + "Александр Сигачёв" ] }, "skinname-vector": "Векторное", "vector-skin-desc": "Современная версия MonoBook с обновлённым оформлением и многими улучшениями в юзабилити", + "prefs-vector-enable-vector-1-label": "Использовать Устаревшее векторное", + "prefs-vector-enable-vector-1-help": "В течение следующих нескольких лет мы будем постепенно обновлять тему Векторное. Устаревшее векторное позволит вам просмотреть старую версию Векторное (по состоянию на декабрь 2019 года). Чтобы узнать больше об обновлениях, перейдите на нашу [[mw:Reading/Web/Desktop_Improvements|страницу проекта]].", + "vector-opt-out": "Переключиться на старый вид", + "vector-opt-out-tooltip": "Измените настройки, чтобы вернуться к старому виду темы (Устаревшее векторное)", "vector.css": "/* Размещённый здесь CSS будет применяться к векторной теме оформления */", "vector.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Vector */", "vector-action-addsection": "Добавить тему", diff --git a/i18n/rue.json b/i18n/rue.json index 1b3b06f..286d31c 100644 --- a/i18n/rue.json +++ b/i18n/rue.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Gazeb", - "Tkalyn", - "KHMELNYTSKYIA" + "KHMELNYTSKYIA", + "Tkalyn" ] }, "vector-action-addsection": "Придати тему", diff --git a/i18n/sat.json b/i18n/sat.json index c32f059..7991369 100644 --- a/i18n/sat.json +++ b/i18n/sat.json @@ -2,11 +2,11 @@ "@metadata": { "authors": [ "Albinus", - "Samar88", - "Srabony90", + "Amire80", "Manik Soren", "Ramjit Tudu", - "Amire80" + "Samar88", + "Srabony90" ] }, "vector-action-addsection": "ᱥᱟᱛᱚᱢ ᱥᱮᱞᱮᱫ", diff --git a/i18n/sc.json b/i18n/sc.json index 22fd72f..4d5e911 100644 --- a/i18n/sc.json +++ b/i18n/sc.json @@ -3,9 +3,9 @@ "authors": [ "Andria", "Marzedu", - "Via maxima", + "Taxandru", "Uharteko", - "Taxandru" + "Via maxima" ] }, "vector-action-addsection": "Agiunghe cuntierra", diff --git a/i18n/sco.json b/i18n/sco.json index f8e52e8..38ceb87 100644 --- a/i18n/sco.json +++ b/i18n/sco.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "Aursani", "Avicennasis", "John Reid", - "Omnipaedista", - "Aursani", - "Macofe" + "Macofe", + "Omnipaedista" ] }, "vector-skin-desc": "Modern version o MonoBook wi ae fresh luik n monie uisabeelitie impruivments", diff --git a/i18n/sd.json b/i18n/sd.json index 7ba214d..0280d43 100644 --- a/i18n/sd.json +++ b/i18n/sd.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ - "Sindhu", "Aursani", "Mehtab ahmed", + "Sindhu", "Tweety" ] }, diff --git a/i18n/sh.json b/i18n/sh.json index 9454788..915df8c 100644 --- a/i18n/sh.json +++ b/i18n/sh.json @@ -1,10 +1,10 @@ { "@metadata": { "authors": [ - "OC Ripper", + "BadDog", "Conquistador", - "Srdjan m", - "BadDog" + "OC Ripper", + "Srdjan m" ] }, "vector-action-addsection": "Dodaj temu", diff --git a/i18n/shi.json b/i18n/shi.json index f4d30dc..d602a01 100644 --- a/i18n/shi.json +++ b/i18n/shi.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Dalinanir", - "Amara-Amaziɣ" + "Amara-Amaziɣ", + "Dalinanir" ] }, "vector-action-addsection": "ⵔⵏⵓ ⴰⵙⵏⵜⵍ", diff --git a/i18n/si.json b/i18n/si.json index b4feebb..ad85a65 100644 --- a/i18n/si.json +++ b/i18n/si.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "Singhalawap", "Thushara", "දසනැබළයෝ", "පසිඳු කාවින්ද", - "සුරනිමල", - "Singhalawap" + "සුරනිමල" ] }, "vector-action-addsection": "මාතෘකාවක් එක්කරන්න", diff --git a/i18n/sjd.json b/i18n/sjd.json new file mode 100644 index 0000000..c792b53 --- /dev/null +++ b/i18n/sjd.json @@ -0,0 +1,15 @@ +{ + "@metadata": { + "authors": [ + "Meerrahtar" + ] + }, + "vector-action-addsection": "Лажьхэ тема", + "vector-action-move": "Вуайхэ нэ̄м", + "vector-action-protect": "Пынне", + "vector-view-create": "Лыһкэ", + "vector-view-edit": "Вуайхэ", + "vector-view-history": "История", + "vector-view-view": "Ло̄гкэ", + "vector-more-actions": "Вя̄л" +} diff --git a/i18n/sk.json b/i18n/sk.json index 527713a..7cbb4b7 100644 --- a/i18n/sk.json +++ b/i18n/sk.json @@ -2,11 +2,11 @@ "@metadata": { "authors": [ "Helix84", - "Rudko", - "Sudo77(new)", "KuboF", "Mikulas1", - "Robert Važan" + "Robert Važan", + "Rudko", + "Sudo77(new)" ] }, "skinname-vector": "Vector", diff --git a/i18n/sl.json b/i18n/sl.json index 4b2847f..a1dd84d 100644 --- a/i18n/sl.json +++ b/i18n/sl.json @@ -2,9 +2,9 @@ "@metadata": { "authors": [ "Dbc334", + "Janezdrilc", "Smihael", - "Yerpo", - "Janezdrilc" + "Yerpo" ] }, "vector-skin-desc": "Sodobna različica MonoBook s svežim videzom in mnogimi izboljšavami uporabnosti", diff --git a/i18n/smn.json b/i18n/smn.json new file mode 100644 index 0000000..a97c364 --- /dev/null +++ b/i18n/smn.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Trondtr" + ] + }, + "vector-action-addsection": "Lasseet fáádá", + "vector-action-delete": "Siho", + "vector-action-move": "Sirde", + "vector-action-protect": "Suoijii", + "vector-view-create": "Räähti", + "vector-view-edit": "Mute", + "vector-view-history": "Čääiti historiá", + "vector-view-view": "Luuvâ", + "vector-more-actions": "Eenâb" +} diff --git a/i18n/sms.json b/i18n/sms.json new file mode 100644 index 0000000..4c52692 --- /dev/null +++ b/i18n/sms.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Yupik" + ] + }, + "vector-view-view": "Looǥǥ" +} diff --git a/i18n/so.json b/i18n/so.json index 1362fd8..32634f5 100644 --- a/i18n/so.json +++ b/i18n/so.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Abdullahi", "Maax" ] }, @@ -10,9 +11,10 @@ "vector-action-protect": "Difaac", "vector-action-undelete": "Ha tirtirin", "vector-action-unprotect": "Bedel difaacida", - "vector-view-create": "Sameey", - "vector-view-edit": "Wax ka bedel", - "vector-view-history": "Itusi taariikhda", + "vector-view-create": "Abuur", + "vector-view-edit": "Wax ka badal", + "vector-view-history": "Fiiri taariikhda", "vector-view-view": "Akhri", - "vector-view-viewsource": "Itusi xogta" + "vector-view-viewsource": "Itusi xogta", + "vector-more-actions": "Dheeraad" } diff --git a/i18n/sr-ec.json b/i18n/sr-ec.json index 7580719..6366607 100644 --- a/i18n/sr-ec.json +++ b/i18n/sr-ec.json @@ -1,17 +1,20 @@ { "@metadata": { "authors": [ + "Acamicamacaraca", + "BadDog", "Milicevic01", + "Obsuser", "Rancher", "Жељко Тодоровић", - "Михајло Анђелковић", - "Obsuser", - "Acamicamacaraca", - "BadDog" + "Михајло Анђелковић" ] }, "skinname-vector": "Векторско", "vector-skin-desc": "Модерна верзија Монобука са свежим изгледом и много корисних побољшања", + "prefs-vector-enable-vector-1-label": "Користи стару векторску тему", + "prefs-vector-enable-vector-1-help": "Током неколико наредних година, постепено ћемо ажурирати векторску тему. Стара векторска тема омогућиће вам да користите ту стару верзију (од децембра 2019). Како бисте сазнали више о ажурирањима, идите на [[mw:Reading/Web/Desktop_Improvements|страницу пројекта]].", + "vector-opt-out-tooltip": "Промените подешавања да бисте се вратили старом изгледу теме (застарела векторска)", "vector.css": "/* CSS постављен овде ће утицати на све кориснике векторске теме */", "vector.js": "/* JavaScript постављен овде ће се учитати за све оне који користе векторску тему */", "vector-action-addsection": "Додај тему", diff --git a/i18n/sr-el.json b/i18n/sr-el.json index e3b5e2a..1031771 100644 --- a/i18n/sr-el.json +++ b/i18n/sr-el.json @@ -3,10 +3,10 @@ "authors": [ "Michaello", "Milicevic01", + "Obsuser", "Rancher", - "Жељко Тодоровић", "Zoranzoki21", - "Obsuser" + "Жељко Тодоровић" ] }, "skinname-vector": "Vektorsko", diff --git a/i18n/sv.json b/i18n/sv.json index ebece26..c7082e4 100644 --- a/i18n/sv.json +++ b/i18n/sv.json @@ -1,18 +1,23 @@ { "@metadata": { "authors": [ + "Lokal Profil", "Martinwiss", "Najami", "Skalman", - "WikiPhoenix", - "Lokal Profil", - "Sturban" + "Sturban", + "WikiPhoenix" ] }, "skinname-vector": "Vector", "vector-skin-desc": "Modern version av MonoBook med ett nytt utseende och flera användarvänlighetsförbättringar", + "prefs-vector-enable-vector-1-label": "Använd gamla Vector", + "prefs-vector-enable-vector-1-help": "Under de nästkommande åren kommer vi gradvis uppdatera utseendet Vector. Gamla Vector kommer låta dig se den gamla version av Vector (fr.o.m. december 2019). För att läsa mer om uppdateringarna, gå till vår [[mw:Reading/Web/Desktop_Improvements|projektsida]].", + "vector-opt-out": "Byt till gamla utseendet", + "vector-opt-out-tooltip": "Ändra dina inställningar för att återgå till utseendets gamla design (gamla Vector)", "vector.css": "/* CSS som skrivs här kommer att påverka alla användare av utseendet Vector */", "vector.js": "/* JavaScript här kommer att laddas för dem som använder utseendet Vector */", + "vector-action-toggle-sidebar": "Visa/dölj sidofält", "vector-action-addsection": "Nytt ämne", "vector-action-delete": "Radera", "vector-action-move": "Flytta", diff --git a/i18n/sw.json b/i18n/sw.json index febe89b..bdfd69e 100644 --- a/i18n/sw.json +++ b/i18n/sw.json @@ -2,8 +2,8 @@ "@metadata": { "authors": [ "Lloffiwr", - "Muddyb Blast Producer", "Muddyb", + "Muddyb Blast Producer", "Yasen igra" ] }, diff --git a/i18n/syl.json b/i18n/syl.json new file mode 100644 index 0000000..3658641 --- /dev/null +++ b/i18n/syl.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "এম আবু সাঈদ" + ] + }, + "vector-view-edit": "ꠟꠦꠈ", + "vector-view-history": "ꠁꠔꠤꠀꠡ ꠖꠦꠈ", + "vector-view-view": "ꠙꠠ", + "vector-more-actions": "ꠀꠞꠧ" +} diff --git a/i18n/szl.json b/i18n/szl.json index 74815b7..16cade9 100644 --- a/i18n/szl.json +++ b/i18n/szl.json @@ -3,9 +3,9 @@ "authors": [ "Britscher", "Gaj777", - "Przemub", "Krol111", "Przem(1)s", + "Przemub", "Uostofchuodnego" ] }, diff --git a/i18n/ais.json b/i18n/szy.json similarity index 100% rename from i18n/ais.json rename to i18n/szy.json diff --git a/i18n/ta.json b/i18n/ta.json index 6c96b0a..9b76306 100644 --- a/i18n/ta.json +++ b/i18n/ta.json @@ -1,14 +1,14 @@ { "@metadata": { "authors": [ + "ElangoRamanujam", + "Jayarathina", + "Kaartic", + "Kanags", "Mayooranathan", "Shanmugamp7", "Surya Prakash.S.A.", - "TRYPPN", - "Jayarathina", - "Kaartic", - "ElangoRamanujam", - "Kanags" + "TRYPPN" ] }, "vector-action-addsection": "தலைப்பைச் சேர்", diff --git a/i18n/tcy.json b/i18n/tcy.json index 091182b..c77eaa1 100644 --- a/i18n/tcy.json +++ b/i18n/tcy.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "BHARATHESHA ALASANDEMAJALU", + "Kiranpoojary", "NamwikiTL", "VASANTH S.N.", - "Vishwanatha Badikana", - "Kiranpoojary", - "BHARATHESHA ALASANDEMAJALU" + "Vishwanatha Badikana" ] }, "vector-action-addsection": "ವಿಸಯೊ ಸೇರಾಲೆ", diff --git a/i18n/th.json b/i18n/th.json index bbf1ed3..4a325c0 100644 --- a/i18n/th.json +++ b/i18n/th.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "Ans", + "Geonuch", "Horus", "Octahedron80", - "Woraponboonkerd", - "Ans", - "Geonuch" + "Woraponboonkerd" ] }, "skinname-vector": "เวกเตอร์", diff --git a/i18n/ti.json b/i18n/ti.json new file mode 100644 index 0000000..d5d9207 --- /dev/null +++ b/i18n/ti.json @@ -0,0 +1,15 @@ +{ + "@metadata": { + "authors": [ + "Joanmp17" + ] + }, + "vector-action-delete": "ሰርዝ", + "vector-action-move": "ኣንቀሳቕስ", + "vector-action-protect": "ተኸላኸለ", + "vector-view-create": "ፈጠረ", + "vector-view-edit": "ኣተዓራረየ", + "vector-view-history": "ታሪኽ ርኣይ", + "vector-view-view": "ኣንብብ", + "vector-more-actions": "ተወሳኺ" +} diff --git a/i18n/tly.json b/i18n/tly.json index 235af02..9be486f 100644 --- a/i18n/tly.json +++ b/i18n/tly.json @@ -1,21 +1,21 @@ { "@metadata": { "authors": [ - "Гусейн", "Ganbarzada", - "Patriot Kur" + "Patriot Kur", + "Гусейн" ] }, "vector-action-addsection": "Мывзу зијод кардеј", - "vector-action-delete": "Рәдд кардеј", + "vector-action-delete": "Bısü", "vector-action-move": "Номи дәгиш кардеј", "vector-action-protect": "Mıdofiə karde", "vector-action-undelete": "Бәрпо кардеј", "vector-action-unprotect": "Мыдофијә дәгиш кардеј", "vector-view-create": "Офәјеј", - "vector-view-edit": "Сәрост кардеј", + "vector-view-edit": "Dəqiş karde", "vector-view-history": "Тarix", - "vector-view-view": "Һандемон", + "vector-view-view": "Bahand", "vector-view-viewsource": "Дијә кардеј", - "vector-more-actions": "həniyən" + "vector-more-actions": "Həniyən" } diff --git a/i18n/tr.json b/i18n/tr.json index 84e2d82..4a43ad7 100644 --- a/i18n/tr.json +++ b/i18n/tr.json @@ -2,20 +2,26 @@ "@metadata": { "authors": [ "Arystanbek", + "BaRaN6161 TURK", "Emperyan", "Joseph", - "Stultiwikia", - "Vito Genovese", + "Kumkumuk", "Rapsar", - "Kumkumuk" + "Stultiwikia", + "Vito Genovese" ] }, - "vector-skin-desc": "MonoBook Modern versiyonu ile taze bir görünüm ve iyi bir kullanım kolaylığı", + "vector-skin-desc": "MonoBook modern sürümünü ile taze bir görünüm ve iyi bir kullanım kolaylığı", + "prefs-vector-enable-vector-1-label": "Eski Vektörü Kullan", + "prefs-vector-enable-vector-1-help": "Önümüzdeki birkaç yıl içinde Vektör görünümünü kademeli olarak güncelleyeceğiz. Eski Vektörün eski sürümünü görüntülemenize izin verir (Aralık 2019 itibariyle). Güncellemeler hakkında daha fazla bilgi için [[mw:Reading/Web/Desktop_Improvements|proje sayfamıza]] gidin.", + "vector-opt-out": "Eski görünüme geç", + "vector-opt-out-tooltip": "Cildin eski görünümüne geri dönmek için ayarlarınızı değiştirin (eski Vektör)", + "vector-action-toggle-sidebar": "Kenar çubuğunu aç/kapat", "vector-action-addsection": "Konu ekle", "vector-action-delete": "Sil", "vector-action-move": "Taşı", "vector-action-protect": "Koru", - "vector-action-undelete": "Silinmeyi geri al", + "vector-action-undelete": "Geri al", "vector-action-unprotect": "Korumayı değiştir", "vector-view-create": "Oluştur", "vector-view-edit": "Düzenle", diff --git a/i18n/tt-cyrl.json b/i18n/tt-cyrl.json index f45db39..044badb 100644 --- a/i18n/tt-cyrl.json +++ b/i18n/tt-cyrl.json @@ -1,11 +1,11 @@ { "@metadata": { "authors": [ + "Derslek", "Don Alessandro", "Rinatus", "Ильнар", - "Рашат Якупов", - "Derslek" + "Рашат Якупов" ] }, "skinname-vector": "Сызымлы", diff --git a/i18n/tzm.json b/i18n/tzm.json index 7f2e333..3ac4bc5 100644 --- a/i18n/tzm.json +++ b/i18n/tzm.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Moha", + "Mohamed Belarhzali", "Tifinaghes", "ⵕⴰⵊⵉ" ] @@ -17,5 +18,5 @@ "vector-view-history": "ⵥⵕ ⴰⵎⵣⵔⵓⵢ", "vector-view-view": "ⵖⵔ", "vector-view-viewsource": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ", - "vector-more-actions": "ⵓⴳⴳⴰⵔ" + "vector-more-actions": "Uggar" } diff --git a/i18n/uk.json b/i18n/uk.json index b3521b3..f12b1c1 100644 --- a/i18n/uk.json +++ b/i18n/uk.json @@ -6,15 +6,20 @@ "Base", "Calak", "Dim Grits", + "Movses", "NickK", + "Piramidion", "Prima klasy4na", - "Тест", "Ата", - "Piramidion" + "Тест" ] }, "skinname-vector": "Векторне", "vector-skin-desc": "Сучасна версія MonoBook зі свіжим виглядом і багатьма зручними покращеннями", + "prefs-vector-enable-vector-1-label": "Використовувати стару версію", + "prefs-vector-enable-vector-1-help": "Протягом наступних декількох років ми поступово оновлюватимемо тему оформлення «Векторне». Стара версія цього оформлення дозволить вам бачити його таким, яким воно було станом на грудень 2019 року. Щоб дізнатись більше про ці оновлення, відвідайте нашу [[mw:Reading/Web/Desktop_Improvements|сторінку проекту]].", + "vector-opt-out": "Перемкнутися на старий вигляд", + "vector-opt-out-tooltip": "Змінити ваші налаштування щоб повернутись до оформлення Вектор", "vector.css": "/* Розміщений тут CSS-код буде використаний в темі оформлення Векторне */", "vector.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують векторну тему оформлення */", "vector-action-addsection": "Додати тему", diff --git a/i18n/ur.json b/i18n/ur.json index 4c83303..c5c5f18 100644 --- a/i18n/ur.json +++ b/i18n/ur.json @@ -3,13 +3,13 @@ "authors": [ "Calak", "Istabani", + "Muhammad Shuaib", "Noor2020", + "Obaid Raza", "Tahir mq", - "محبوب عالم", "عثمان خان شاہ", "عرفان ارشد", - "Obaid Raza", - "Muhammad Shuaib" + "محبوب عالم" ] }, "skinname-vector": "ویکٹر", diff --git a/i18n/uz.json b/i18n/uz.json index 05d3d63..4a65759 100644 --- a/i18n/uz.json +++ b/i18n/uz.json @@ -5,8 +5,8 @@ "Arystanbek", "Casual", "CoderSI", - "Sociologist", - "Nataev" + "Nataev", + "Sociologist" ] }, "skinname-vector": "Vektor", diff --git a/i18n/vec.json b/i18n/vec.json index f2db77d..19164d6 100644 --- a/i18n/vec.json +++ b/i18n/vec.json @@ -3,21 +3,22 @@ "authors": [ "Alunardon90", "Candalua", + "Fierodelveneto", "Frigotoni", "GatoSelvadego", "Vajotwo" ] }, "vector-action-addsection": "Xonta discusion", - "vector-action-delete": "Scanseƚa", + "vector-action-delete": "Descançeła", "vector-action-move": "Sposta", - "vector-action-protect": "Protegi", - "vector-action-undelete": "Recupera", + "vector-action-protect": "Protexi", + "vector-action-undelete": "Recùpara", "vector-action-unprotect": "Canbia ƚa protesion", "vector-view-create": "Crea", "vector-view-edit": "Canbia", - "vector-view-history": "Varda ƚa stòria", + "vector-view-history": "Varda l'istorego", "vector-view-view": "Lexi", "vector-view-viewsource": "Varda el testo", - "vector-more-actions": "Piassè" + "vector-more-actions": "Piasè" } diff --git a/i18n/vep.json b/i18n/vep.json index 87c686a..dc32614 100644 --- a/i18n/vep.json +++ b/i18n/vep.json @@ -1,8 +1,8 @@ { "@metadata": { "authors": [ - "Игорь Бродский", - "Sebranik" + "Sebranik", + "Игорь Бродский" ] }, "vector-action-addsection": "Ližada tem", diff --git a/i18n/vi.json b/i18n/vi.json index b652e26..ee3aedb 100644 --- a/i18n/vi.json +++ b/i18n/vi.json @@ -2,15 +2,20 @@ "@metadata": { "authors": [ "Minh Nguyen", + "Trần Nguyễn Minh Huy", "Vinhtantran", - "Withoutaname", - "Trần Nguyễn Minh Huy" + "Withoutaname" ] }, "skinname-vector": "Vectơ", "vector-skin-desc": "Giao diện làm lại từ MonoBook có màu tươi và khả dụng hơn", - "vector.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện Vectơ */", - "vector.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện Vectơ */", + "prefs-vector-enable-vector-1-label": "Chế độ Vectơ cũ", + "prefs-vector-enable-vector-1-help": "Trong thời gian vài năm nữa, giao diện Vectơ sẽ được cập nhật từ từ. Chế độ Vectơ cũ cho phép bạn xem phiên bản giao diện Vectơ cũ (tính đến tháng 12 năm 2019). Tìm hiểu thêm về các thay đổi này tại [[mw:Reading/Web/Desktop_Improvements|trang dự án]].", + "vector-opt-out": "Chuyển sang giao diện cũ", + "vector-opt-out-tooltip": "Thay đổi tùy chọn để quay lại kiểu giao diện cũ (Vectơ cũ)", + "vector.css": "/* Tất cả mã CSS tại đây sẽ được tải khi người dùng sử dụng giao diện Vectơ */", + "vector.js": "/* Tất cả mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện Vectơ */", + "vector-action-toggle-sidebar": "Bật/tắt thanh bên", "vector-action-addsection": "Thêm đề tài", "vector-action-delete": "Xóa", "vector-action-move": "Di chuyển", diff --git a/i18n/wa.json b/i18n/wa.json index a2ffa0f..8e9a443 100644 --- a/i18n/wa.json +++ b/i18n/wa.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Reptilien.19831209BE1", "Srtxg" ] }, @@ -12,7 +13,7 @@ "vector-action-unprotect": "Candjî l' protedjaedje", "vector-view-create": "Ahiver", "vector-view-edit": "Candjî", - "vector-view-history": "Vey l' istwere", + "vector-view-history": "Vey l’ istwere", "vector-view-view": "Lére", "vector-view-viewsource": "Vey côde sourdant", "vector-more-actions": "Di pus" diff --git a/i18n/wuu.json b/i18n/wuu.json index e0d2e73..ed2d04d 100644 --- a/i18n/wuu.json +++ b/i18n/wuu.json @@ -8,11 +8,11 @@ }, "vector.css": "/* 放勒伊𡍲个CSS会影响用Vector皮肤个用户 */", "vector-action-addsection": "加話題", - "vector-action-delete": "刪", + "vector-action-delete": "删除", "vector-action-move": "移动", - "vector-action-protect": "保", - "vector-action-undelete": "弗刪", - "vector-action-unprotect": "换保护状态", + "vector-action-protect": "保护", + "vector-action-undelete": "取消删除", + "vector-action-unprotect": "更改保护", "vector-view-create": "创建", "vector-view-edit": "编辑", "vector-view-history": "望历史", diff --git a/i18n/xmf.json b/i18n/xmf.json index 505dd76..21c5b61 100644 --- a/i18n/xmf.json +++ b/i18n/xmf.json @@ -4,9 +4,11 @@ "Kilavagora", "Lika2672", "Machirkholi", + "Narazeni", "Silovan" ] }, + "vector-opt-out": "ჯვეში მეჯინაშა გინულა", "vector-action-addsection": "თემაშ მიშაძინა", "vector-action-delete": "ლასუა", "vector-action-move": "გინოღალა", diff --git a/i18n/yi.json b/i18n/yi.json index 66a7960..04ae65f 100644 --- a/i18n/yi.json +++ b/i18n/yi.json @@ -1,9 +1,9 @@ { "@metadata": { "authors": [ + "Har-wradim", "Joystick", - "פוילישער", - "Har-wradim" + "פוילישער" ] }, "skinname-vector": "וועקטאר", diff --git a/i18n/yue.json b/i18n/yue.json index 25744e6..80b79f6 100644 --- a/i18n/yue.json +++ b/i18n/yue.json @@ -2,9 +2,9 @@ "@metadata": { "authors": [ "Ktchankt", + "Roy17", "Waihorace", - "Yueman", - "Roy17" + "Yueman" ] }, "skinname-vector": "Vector", diff --git a/i18n/zgh.json b/i18n/zgh.json index fd43302..e97f9c2 100644 --- a/i18n/zgh.json +++ b/i18n/zgh.json @@ -2,9 +2,9 @@ "@metadata": { "authors": [ "Amara-Amaziɣ", - "ⵕⴰⵊⵉ", + "Aslmad mohamed belarhzali", "YesIn", - "Aslmad mohamed belarhzali" + "ⵕⴰⵊⵉ" ] }, "vector-action-addsection": "ⵔⵏⵓ ⴰⵙⵏⵜⵍ", diff --git a/i18n/zh-hans.json b/i18n/zh-hans.json index f2b9fd4..e9bce43 100644 --- a/i18n/zh-hans.json +++ b/i18n/zh-hans.json @@ -1,15 +1,18 @@ { "@metadata": { "authors": [ + "500000000006城", + "Cwek", "Hydra", "Liangent", "Liuxinyu970226", - "Xiaomingyan", - "Cwek" + "Xiaomingyan" ] }, "skinname-vector": "Vector", "vector-skin-desc": "提供清新的外观和许多可用性改进的现代版MonoBook", + "prefs-vector-enable-vector-1-label": "使用旧的矢量", + "prefs-vector-enable-vector-1-help": "在接下来的几年中,我们将逐步更新Vector外观。 旧版Vector将允许您查看Vector的旧版本(截至2019年12月)。 要了解有关更新的更多信息,请转到我们的[[mw:Reading/Web/Desktop_Improvements|project page]]", "vector.css": "/* 这里放置的CSS将影响使用Vector皮肤的用户 */", "vector.js": "/* 这里的任何JavaScript将为使用Vector皮肤的用户加载 */", "vector-action-addsection": "添加话题", diff --git a/i18n/zh-hant.json b/i18n/zh-hant.json index dc1a280..5ec3158 100644 --- a/i18n/zh-hant.json +++ b/i18n/zh-hant.json @@ -3,16 +3,21 @@ "authors": [ "Cwlin0416", "Justincheng12345", - "Liuxinyu970226", - "Mark85296341", + "Kly", "LNDDYL", - "Kly" + "Liuxinyu970226", + "Mark85296341" ] }, "skinname-vector": "Vector", "vector-skin-desc": "現代版的 MonoBook,有著較新穎的外觀與許多使用性的改進", + "prefs-vector-enable-vector-1-label": "使用先前的 Vector", + "prefs-vector-enable-vector-1-help": "在接下來的幾年,我們會逐步更新 Vector 外觀。先前的 Vector 能讓您觀看舊版本 Vector(截至 2019 年 12 月)。要了解更多更新方面內容,請前往我們的[[mw:Reading/Web/Desktop_Improvements|專案頁面]]。", + "vector-opt-out": "切換成舊外觀", + "vector-opt-out-tooltip": "更改您的設定來回到舊模樣主題(舊版 Vector)", "vector.css": "/* 此 CSS 會影響使用 Vector 介面外觀的使用者 */", "vector.js": "/* 此 JavaScript 會用於使用 Vector 介面外觀的使用者 */", + "vector-action-toggle-sidebar": "切換側邊欄", "vector-action-addsection": "新增話題", "vector-action-delete": "刪除", "vector-action-move": "移動", diff --git a/i18n/zh-hk.json b/i18n/zh-hk.json index 54a69dc..c5c4515 100644 --- a/i18n/zh-hk.json +++ b/i18n/zh-hk.json @@ -1,8 +1,10 @@ { "@metadata": { "authors": [ + "C933103", "Wxyveronica" ] }, + "vector-view-view": "閱讀", "vector-more-actions": "更多" } diff --git a/i18n/zu.json b/i18n/zu.json index dd42783..8b4382d 100644 --- a/i18n/zu.json +++ b/i18n/zu.json @@ -1,11 +1,14 @@ { "@metadata": { "authors": [ + "Fwolff", "Irus", - "Fwolff" + "Nkankane" ] }, + "vector-view-create": "Qamba", "vector-view-edit": "Ukuhlela", "vector-view-history": "Bona umlando", - "vector-view-view": "Funda" + "vector-view-view": "Funda", + "vector-more-actions": "Okunye" } diff --git a/images/unwatch-icon-hl.png b/images/unwatch-icon-hl.png deleted file mode 100644 index b7397c7..0000000 Binary files a/images/unwatch-icon-hl.png and /dev/null differ diff --git a/images/unwatch-icon-hl.svg b/images/unwatch-icon-hl.svg deleted file mode 100644 index c44d1e9..0000000 --- a/images/unwatch-icon-hl.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/images/unwatch-icon.png b/images/unwatch-icon.png deleted file mode 100644 index b4d3d9a..0000000 Binary files a/images/unwatch-icon.png and /dev/null differ diff --git a/images/unwatch-icon.svg b/images/unwatch-icon.svg deleted file mode 100644 index c7ae884..0000000 --- a/images/unwatch-icon.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/images/watch-icon-hl.png b/images/watch-icon-hl.png deleted file mode 100644 index 21de7cb..0000000 Binary files a/images/watch-icon-hl.png and /dev/null differ diff --git a/images/watch-icon-hl.svg b/images/watch-icon-hl.svg deleted file mode 100644 index 2293892..0000000 --- a/images/watch-icon-hl.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/images/watch-icon-loading.svg b/images/watch-icon-loading.svg deleted file mode 100644 index 5b39a74..0000000 --- a/images/watch-icon-loading.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/images/watch-icon.png b/images/watch-icon.png deleted file mode 100644 index c0396fb..0000000 Binary files a/images/watch-icon.png and /dev/null differ diff --git a/images/watch-icon.svg b/images/watch-icon.svg deleted file mode 100644 index b83596c..0000000 --- a/images/watch-icon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/includes/Constants.php b/includes/Constants.php new file mode 100644 index 0000000..0441d81 --- /dev/null +++ b/includes/Constants.php @@ -0,0 +1,121 @@ + + */ + private $features = []; + + /** + * A map of requirement name to the Requirement instance that represents it. + * + * The names of requirements are assumed to be static for the lifetime of the request. Therefore + * we can use them to look up Requirement instances quickly. + * + * @var Array + */ + private $requirements = []; + + /** + * Register a feature and its requirements. + * + * Essentially, a "feature" is a friendly (hopefully) name for some component, however big or + * small, that has some requirements. A feature manager allows us to decouple the component's + * logic from its requirements, allowing them to vary independently. Moreover, the use of + * friendly names wherever possible allows us to define a common language with our non-technical + * colleagues. + * + * ```php + * $featureManager->registerFeature( 'featureA', 'requirementA' ); + * ``` + * + * defines the "featureA" feature, which is enabled when the "requirementA" requirement is met. + * + * ```php + * $featureManager->registerFeature( 'featureB', [ 'requirementA', 'requirementB' ] ); + * ``` + * + * defines the "featureB" feature, which is enabled when the "requirementA" and "requirementB" + * requirements are met. Note well that the feature is only enabled when _all_ requirements are + * met, i.e. the requirements are evaluated in order and logically `AND`ed together. + * + * @param string $feature The name of the feature + * @param string|array $requirements The feature's requirements. As above, you can define a + * feature that requires a single requirement via the shorthand + * + * ```php + * $featureManager->registerFeature( 'feature', 'requirementA' ); + * // Equivalent to $featureManager->registerFeature( 'feature', [ 'requirementA' ] ); + * ``` + * + * @throws \LogicException If the feature is already registered + * @throws \Wikimedia\Assert\ParameterAssertionException If the feature's requirements aren't + * the name of a single requirement or a list of requirements + * @throws \InvalidArgumentException If the feature references a requirement that isn't + * registered + */ + public function registerFeature( string $feature, $requirements ) { + // + // Validation + if ( array_key_exists( $feature, $this->features ) ) { + throw new \LogicException( sprintf( + 'Feature "%s" is already registered.', + $feature + ) ); + } + + Assert::parameterType( 'string|array', $requirements, 'requirements' ); + + $requirements = (array)$requirements; + + Assert::parameterElementType( 'string', $requirements, 'requirements' ); + + foreach ( $requirements as $name ) { + if ( !array_key_exists( $name, $this->requirements ) ) { + throw new \InvalidArgumentException( sprintf( + 'Feature "%s" references requirement "%s", which hasn\'t been registered', + $feature, + $name + ) ); + } + } + + // Mutation + $this->features[$feature] = $requirements; + } + + /** + * Gets whether the feature's requirements are met. + * + * @param string $feature + * @return bool + * + * @throws \InvalidArgumentException If the feature isn't registered + */ + public function isFeatureEnabled( string $feature ) : bool { + if ( !array_key_exists( $feature, $this->features ) ) { + throw new \InvalidArgumentException( "The feature \"{$feature}\" isn't registered." ); + } + + $requirements = $this->features[$feature]; + + foreach ( $requirements as $name ) { + if ( !$this->requirements[$name]->isMet() ) { + return false; + } + } + + return true; + } + + /** + * Register a complex requirement. + * + * A complex requirement is one that depends on object that may or may not be fully loaded + * while the application is booting, e.g. see `User::isSafeToLoad`. + * + * Such requirements are expected to be registered during a hook that is run early on in the + * application lifecycle, e.g. the `BeforePerformAction` and `APIBeforeMain` hooks. + * + * @see FeatureManager::registerRequirement + * + * @param Requirement $requirement + * + * @throws \LogicException If the requirement has already been registered + */ + public function registerRequirement( Requirement $requirement ) { + $name = $requirement->getName(); + + if ( array_key_exists( $name, $this->requirements ) ) { + throw new \LogicException( "The requirement \"{$name}\" is already registered." ); + } + + $this->requirements[$name] = $requirement; + } + + /** + * Register a requirement. + * + * A requirement is some condition of the application state that a feature requires to be true + * or false. + * + * @see FeatureManager::registerComplexRequirement + * + * @param string $name The name of the requirement + * @param bool $isMet Whether the requirement is met + * + * @throws \LogicException If the requirement has already been registered + */ + public function registerSimpleRequirement( string $name, bool $isMet ) { + $this->registerRequirement( new SimpleRequirement( $name, $isMet ) ); + } + + /** + * Gets whether the requirement is met. + * + * @param string $name The name of the requirement + * @return bool + * + * @throws \InvalidArgumentException If the requirement isn't registered + */ + public function isRequirementMet( string $name ) : bool { + if ( !array_key_exists( $name, $this->requirements ) ) { + throw new \InvalidArgumentException( "Requirement \"{$name}\" isn't registered." ); + } + + return $this->requirements[$name]->isMet(); + } +} diff --git a/includes/FeatureManagement/Requirement.php b/includes/FeatureManagement/Requirement.php new file mode 100644 index 0000000..281ae66 --- /dev/null +++ b/includes/FeatureManagement/Requirement.php @@ -0,0 +1,45 @@ +registerComplexRequirement( + * new DynamicConfigRequirement( + * $config, + * 'Sitename', + * 'Foo' + * ) + * ); + * ``` + * + * registers a requirement that will evaluate to true only when `mediawiki/includes/Setup.php` has + * finished executing (after all service wiring has executed). I.e., every call to + * `Requirement->isMet()` reinterrogates the Config object for the current state and returns it. + * Contrast to + * + * ```lang=php + * $featureManager->registerRequirement( + * 'Foo', + * $config->get( 'Sitename' ) + * ); + * ``` + * + * wherein state is evaluated only once at registration time and permanently cached. + * + * NOTE: This API hasn't settled. It may change at any time without warning. Please don't bind to + * it unless you absolutely need to + * + * @unstable + * + * @package FeatureManagement + * @internal + */ +final class DynamicConfigRequirement implements Requirement { + + /** + * @var \Config + */ + private $config; + + /** + * @var string + */ + private $configName; + + /** + * @var string + */ + private $requirementName; + + /** + * @param \Config $config + * @param string $configName Any `Config` key. This name is used to query `$config` state. E.g., + * `'DBname'`. See https://www.mediawiki.org/wiki/Manual:Configuration_settings + * @param string $requirementName The name of the requirement presented to FeatureManager. + * This name _usually_ matches the `$configName` parameter for simplicity but allows for + * abstraction as needed. See `Requirement->getName()`. + */ + public function __construct( \Config $config, string $configName, string $requirementName ) { + $this->config = $config; + $this->configName = $configName; + $this->requirementName = $requirementName; + } + + /** + * @inheritDoc + */ + public function getName() : string { + return $this->requirementName; + } + + /** + * @inheritDoc + */ + public function isMet() : bool { + return (bool)$this->config->get( $this->configName ); + } +} diff --git a/includes/FeatureManagement/Requirements/LatestSkinVersionRequirement.php b/includes/FeatureManagement/Requirements/LatestSkinVersionRequirement.php new file mode 100644 index 0000000..47554de --- /dev/null +++ b/includes/FeatureManagement/Requirements/LatestSkinVersionRequirement.php @@ -0,0 +1,86 @@ +skinVersionLookup = $skinVersionLookup; + } + + /** + * @inheritDoc + */ + public function getName() : string { + return Constants::REQUIREMENT_LATEST_SKIN_VERSION; + } + + /** + * @inheritDoc + * @throws \ConfigException + */ + public function isMet() : bool { + return $this->skinVersionLookup->getVersion() === Constants::SKIN_VERSION_LATEST; + } +} diff --git a/includes/FeatureManagement/Requirements/SimpleRequirement.php b/includes/FeatureManagement/Requirements/SimpleRequirement.php new file mode 100644 index 0000000..35fd7f1 --- /dev/null +++ b/includes/FeatureManagement/Requirements/SimpleRequirement.php @@ -0,0 +1,70 @@ +name = $name; + $this->isMet = $isMet; + } + + /** + * @inheritDoc + */ + public function getName() : string { + return $this->name; + } + + /** + * @inheritDoc + */ + public function isMet() : bool { + return $this->isMet; + } +} diff --git a/includes/FeatureManagement/TODO.md b/includes/FeatureManagement/TODO.md new file mode 100644 index 0000000..017407d --- /dev/null +++ b/includes/FeatureManagement/TODO.md @@ -0,0 +1,11 @@ +TODO +==== + +Currently the `FeatureManager` class is a very shallow interpretation of Piotr Miazga's proposed +API and associated scaffolding classes (see https://phabricator.wikimedia.org/T244481 and +https://gerrit.wikimedia.org/r/#/c/mediawiki/skins/Vector/+/572323/). This document aims to list +the steps required to get from this system to something as powerful as Piotr's. + +1. Consider supporing memoization of those requirements (see https://gerrit.wikimedia.org/r/#/c/mediawiki/skins/Vector/+/573626/7/includes/FeatureManagement/FeatureManager.php@68) +2. Add support for getting all requirements +3. Add support for getting all features enabled when a requirement is enabled/disabled diff --git a/includes/Hooks.php b/includes/Hooks.php index cdebeae..2d4a9db 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -2,12 +2,18 @@ namespace Vector; +use ExtensionRegistry; +use HTMLForm; +use MediaWiki\MediaWikiServices; use OutputPage; +use RequestContext; +use Skin; use SkinTemplate; use SkinVector; +use User; /** - * Hook handlers for Vector skin. + * Presentation hook handlers for Vector skin. * * Hook handler method names should be in the form of: * on() @@ -16,16 +22,227 @@ class Hooks { /** * BeforePageDisplayMobile hook handler * - * Make Vector responsive when operating in mobile mode (useformat=mobile) + * Make Legacy Vector responsive when $wgVectorResponsive = true * - * @see https://www.mediawiki.org/wiki/Extension:MobileFrontend/BeforePageDisplayMobile + * @see https://www.mediawiki.org/wiki/Manual:Hooks/BeforePageDisplay * @param OutputPage $out * @param SkinTemplate $sk */ - public static function onBeforePageDisplayMobile( OutputPage $out, $sk ) { - // This makes Vector behave in responsive mode when MobileFrontend is installed - if ( $sk instanceof SkinVector ) { - $sk->enableResponsiveMode(); + public static function onBeforePageDisplay( OutputPage $out, $sk ) { + if ( !$sk instanceof SkinVector ) { + return; + } + + $skinVersionLookup = new SkinVersionLookup( + $out->getRequest(), $sk->getUser(), self::getServiceConfig() + ); + + $mobile = false; + if ( ExtensionRegistry::getInstance()->isLoaded( 'MobileFrontend' ) ) { + + $mobFrontContext = MediaWikiServices::getInstance()->getService( 'MobileFrontend.Context' ); + $mobile = $mobFrontContext->shouldDisplayMobileView(); + } + + if ( $skinVersionLookup->isLegacy() + && ( $mobile || $sk->getConfig()->get( 'VectorResponsive' ) ) + ) { + $out->addMeta( 'viewport', 'width=device-width, initial-scale=1' ); + $out->addModuleStyles( 'skins.vector.styles.responsive' ); } } + + /** + * Add icon class to an existing navigation item inside a menu hook. + * See self::onSkinTemplateNavigation. + * @param array $item + * @return array + */ + private static function navigationLinkToIcon( array $item ) { + if ( !isset( $item['class'] ) ) { + $item['class'] = ''; + } + $item['class'] = rtrim( 'icon ' . $item['class'], ' ' ); + return $item; + } + + /** + * Upgrades Vector's watch action to a watchstar. + * + * @see https://www.mediawiki.org/wiki/Manual:Hooks/SkinTemplateNavigation + * @param SkinTemplate $sk + * @param array &$content_navigation + */ + public static function onSkinTemplateNavigation( $sk, &$content_navigation ) { + if ( + $sk->getSkinName() === 'vector' && + $sk->getConfig()->get( 'VectorUseIconWatch' ) + ) { + $key = null; + if ( isset( $content_navigation['actions']['watch'] ) ) { + $key = 'watch'; + } + if ( isset( $content_navigation['actions']['unwatch'] ) ) { + $key = 'unwatch'; + } + + // Promote watch link from actions to views and add an icon + if ( $key !== null ) { + $content_navigation['views'][$key] = self::navigationLinkToIcon( + $content_navigation['actions'][$key] + ); + unset( $content_navigation['actions'][$key] ); + } + } + } + + /** + * Add Vector preferences to the user's Special:Preferences page directly underneath skins. + * + * @param User $user User whose preferences are being modified. + * @param array[] &$prefs Preferences description array, to be fed to a HTMLForm object. + */ + public static function onGetPreferences( User $user, array &$prefs ) { + if ( !self::getConfig( Constants::CONFIG_KEY_SHOW_SKIN_PREFERENCES ) ) { + // Do not add Vector skin specific preferences. + return; + } + + $skinVersionLookup = new SkinVersionLookup( + RequestContext::getMain()->getRequest(), $user, self::getServiceConfig() + ); + + // Preferences to add. + $vectorPrefs = [ + Constants::PREF_KEY_SKIN_VERSION => [ + 'type' => 'toggle', + // The checkbox title. + 'label-message' => 'prefs-vector-enable-vector-1-label', + // Show a little informational snippet underneath the checkbox. + 'help-message' => 'prefs-vector-enable-vector-1-help', + // The tab location and title of the section to insert the checkbox. The bit after the slash + // indicates that a prefs-skin-prefs string will be provided. + 'section' => 'rendering/skin/skin-prefs', + // Convert the preference string to a boolean presentation. + 'default' => $skinVersionLookup->isLegacy() ? '1' : '0', + // Only show this section when the Vector skin is checked. The JavaScript client also uses + // this state to determine whether to show or hide the whole section. + 'hide-if' => [ '!==', 'wpskin', Constants::SKIN_NAME ] + ], + Constants::PREF_KEY_SIDEBAR_VISIBLE => [ + 'type' => 'api', + 'default' => self::getConfig( Constants::CONFIG_KEY_DEFAULT_SIDEBAR_VISIBLE_FOR_AUTHORISED_USER ) + ], + ]; + + // Seek the skin preference section to add Vector preferences just below it. + $skinSectionIndex = array_search( 'skin', array_keys( $prefs ) ); + if ( $skinSectionIndex !== false ) { + // Skin preference section found. Inject Vector skin-specific preferences just below it. + // This pattern can be found in Popups too. See T246162. + $vectorSectionIndex = $skinSectionIndex + 1; + $prefs = array_slice( $prefs, 0, $vectorSectionIndex, true ) + + $vectorPrefs + + array_slice( $prefs, $vectorSectionIndex, null, true ); + } else { + // Skin preference section not found. Just append Vector skin-specific preferences. + $prefs += $vectorPrefs; + } + } + + /** + * Hook executed on user's Special:Preferences form save. This is used to convert the boolean + * presentation of skin version to a version string. That is, a single preference change by the + * user may trigger two writes: a boolean followed by a string. + * + * @param array $formData Form data submitted by user + * @param HTMLForm $form A preferences form + * @param User $user Logged-in user + * @param bool &$result Variable defining is form save successful + * @param array $oldPreferences + */ + public static function onPreferencesFormPreSave( + array $formData, + HTMLForm $form, + User $user, + &$result, + $oldPreferences + ) { + $preference = null; + $isVectorEnabled = ( $formData[ 'skin' ] ?? '' ) === Constants::SKIN_NAME; + if ( $isVectorEnabled && array_key_exists( Constants::PREF_KEY_SKIN_VERSION, $formData ) ) { + // A preference was set. However, Special:Preferences converts the result to a boolean when a + // version name string is wanted instead. Convert the boolean to a version string in case the + // preference display is changed to a list later (e.g., a "_new_ new Vector" / '3' or + // 'alpha'). + $preference = $formData[ Constants::PREF_KEY_SKIN_VERSION ] ? + Constants::SKIN_VERSION_LEGACY : + Constants::SKIN_VERSION_LATEST; + } elseif ( array_key_exists( Constants::PREF_KEY_SKIN_VERSION, $oldPreferences ) ) { + // The setting was cleared. However, this is likely because a different skin was chosen and + // the skin version preference was hidden. + $preference = $oldPreferences[ Constants::PREF_KEY_SKIN_VERSION ]; + } + if ( $preference !== null ) { + $user->setOption( Constants::PREF_KEY_SKIN_VERSION, $preference ); + } + } + + /** + * Called one time when initializing a users preferences for a newly created account. + * + * @param User $user Newly created user object. + * @param bool $isAutoCreated + */ + public static function onLocalUserCreated( User $user, $isAutoCreated ) { + $default = self::getConfig( Constants::CONFIG_KEY_DEFAULT_SKIN_VERSION_FOR_NEW_ACCOUNTS ); + // Permanently set the default preference. The user can later change this preference, however, + // self::onLocalUserCreated() will not be executed for that account again. + $user->setOption( Constants::PREF_KEY_SKIN_VERSION, $default ); + } + + /** + * Called when OutputPage::headElement is creating the body tag to allow skins + * and extensions to add attributes they might need to the body of the page. + * + * @param OutputPage $out + * @param Skin $sk + * @param string[] &$bodyAttrs + */ + public static function onOutputPageBodyAttributes( OutputPage $out, Skin $sk, &$bodyAttrs ) { + if ( !$sk instanceof SkinVector ) { + return; + } + + $skinVersionLookup = new SkinVersionLookup( + $out->getRequest(), $sk->getUser(), self::getServiceConfig() + ); + + if ( $skinVersionLookup->isLegacy() ) { + $bodyAttrs['class'] .= ' skin-vector-legacy'; + return; + } + + if ( self::getConfig( Constants::CONFIG_KEY_LAYOUT_MAX_WIDTH ) ) { + $bodyAttrs['class'] .= ' skin-vector-max-width'; + } + } + + /** + * Get a configuration variable such as `Constants::CONFIG_KEY_SHOW_SKIN_PREFERENCES`. + * + * @param string $name Name of configuration option. + * @return mixed Value configured. + * @throws \ConfigException + */ + private static function getConfig( $name ) { + return self::getServiceConfig()->get( $name ); + } + + /** + * @return \Config + */ + private static function getServiceConfig() { + return MediaWikiServices::getInstance()->getService( Constants::SERVICE_CONFIG ); + } } diff --git a/includes/ResourceLoaderLessModule.php b/includes/ResourceLoaderLessModule.php deleted file mode 100644 index 5849755..0000000 --- a/includes/ResourceLoaderLessModule.php +++ /dev/null @@ -1,64 +0,0 @@ -getConfigFactory()->makeConfig( 'vector' ); - $printLogo = $config->get( 'VectorPrintLogo' ); - } catch ( ConfigException $e ) { - // Config is not available when running in the context of the MediaWiki installer. (T183640) - $printLogo = false; - } - if ( $printLogo ) { - $lessVars[ 'printLogo' ] = true; - $lessVars[ 'printLogoUrl' ] = CSSMin::buildUrlValue( $printLogo['url'] ); - $lessVars[ 'printLogoWidth' ] = intval( $printLogo['width'] ); - $lessVars[ 'printLogoHeight' ] = intval( $printLogo['height'] ); - } else { - $lessVars[ 'printLogo' ] = false; - } - return $lessVars; - } -} diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php new file mode 100644 index 0000000..cddcf54 --- /dev/null +++ b/includes/ServiceWiring.php @@ -0,0 +1,71 @@ + function ( MediaWikiServices $services ) { + return $services->getService( 'ConfigFactory' )->makeConfig( Constants::SKIN_NAME ); + }, + Constants::SERVICE_FEATURE_MANAGER => function ( MediaWikiServices $services ) { + $featureManager = new FeatureManager(); + + $featureManager->registerRequirement( + new DynamicConfigRequirement( + $services->getMainConfig(), + Constants::CONFIG_KEY_FULLY_INITIALISED, + Constants::REQUIREMENT_FULLY_INITIALISED + ) + ); + + // Feature: Latest skin + // ==================== + $context = RequestContext::getMain(); + + $featureManager->registerRequirement( + new LatestSkinVersionRequirement( + new SkinVersionLookup( + $context->getRequest(), + $context->getUser(), + $services->getService( Constants::SERVICE_CONFIG ) + ) + ) + ); + + $featureManager->registerFeature( + Constants::FEATURE_LATEST_SKIN, + [ + Constants::REQUIREMENT_FULLY_INITIALISED, + Constants::REQUIREMENT_LATEST_SKIN_VERSION, + ] + ); + + return $featureManager; + } +]; diff --git a/includes/SkinVector.php b/includes/SkinVector.php index 0ee7e73..9931533 100644 --- a/includes/SkinVector.php +++ b/includes/SkinVector.php @@ -22,88 +22,119 @@ * @ingroup Skins */ +use MediaWiki\MediaWikiServices; +use Vector\Constants; +use Wikimedia\WrappedString; + /** * Skin subclass for Vector * @ingroup Skins + * @final skins extending SkinVector are not supported + * @unstable */ class SkinVector extends SkinTemplate { - public $skinname = 'vector'; + public $skinname = Constants::SKIN_NAME; public $stylename = 'Vector'; public $template = 'VectorTemplate'; - /** - * @var Config - */ - private $vectorConfig; - private $responsiveMode = false; - - public function __construct() { - parent::__construct( ...func_get_args() ); - $this->vectorConfig = \MediaWiki\MediaWikiServices::getInstance()->getConfigFactory() - ->makeConfig( 'vector' ); - } - - /** @inheritDoc */ - public function getPageClasses( $title ) { - $className = parent::getPageClasses( $title ); - return $className; - } /** - * Enables the responsive mode + * @inheritDoc + * @return array */ - public function enableResponsiveMode() { - if ( !$this->responsiveMode ) { - $out = $this->getOutput(); - $out->addMeta( 'viewport', 'width=device-width, initial-scale=1' ); - $out->addModuleStyles( 'skins.vector.styles.responsive' ); - $this->responsiveMode = true; - } - } + public function getDefaultModules() { + $modules = parent::getDefaultModules(); - /** - * Initializes output page and sets up skin-specific parameters - * @param OutputPage $out Object to initialize - */ - public function initPage( OutputPage $out ) { - parent::initPage( $out ); - - if ( $this->vectorConfig->get( 'VectorResponsive' ) ) { - $this->enableResponsiveMode(); + if ( $this->isLegacy() ) { + $modules['styles']['skin'][] = 'skins.vector.styles.legacy'; + $modules[Constants::SKIN_NAME] = 'skins.vector.legacy.js'; + } else { + $modules['styles'] = array_merge( + $modules['styles'], + [ 'skins.vector.styles', 'mediawiki.ui.icon', 'skins.vector.icons' ] + ); + $modules[Constants::SKIN_NAME][] = 'skins.vector.js'; } - $out->addModules( 'skins.vector.js' ); + return $modules; } /** - * Loads skin and user CSS files. - * @param OutputPage $out - */ - public function setupSkinUserCss( OutputPage $out ) { - parent::setupSkinUserCss( $out ); - - $out->addModuleStyles( [ - 'mediawiki.skinning.interface', - 'skins.vector.styles', - ] ); - } - - /** - * Override to pass our Config instance to it + * Set up the VectorTemplate. Overrides the default behaviour of SkinTemplate allowing + * the safe calling of constructor with additional arguments. If dropping this method + * please ensure that VectorTemplate constructor arguments match those in SkinTemplate. + * + * @internal * @param string $classname - * @param bool|string $repository - * @param bool|string $cache_dir - * @return QuickTemplate + * @return VectorTemplate */ - public function setupTemplate( $classname, $repository = false, $cache_dir = false ) { - return new $classname( $this->vectorConfig ); + protected function setupTemplate( $classname ) { + $tp = new TemplateParser( __DIR__ . '/templates' ); + return new VectorTemplate( $this->getConfig(), $tp, $this->isLegacy() ); } /** - * Whether the logo should be preloaded with an HTTP link header or not - * @since 1.29 + * Whether or not the legacy version of the skin is being used. + * * @return bool */ - public function shouldPreloadLogo() { - return true; + private function isLegacy() : bool { + $isLatestSkinFeatureEnabled = MediaWikiServices::getInstance() + ->getService( Constants::SERVICE_FEATURE_MANAGER ) + ->isFeatureEnabled( Constants::FEATURE_LATEST_SKIN ); + + return !$isLatestSkinFeatureEnabled; + } + + /** + * @internal only for use inside VectorTemplate + * @return array of data for a Mustache template + */ + public function getTemplateData() { + $out = $this->getOutput(); + $title = $out->getTitle(); + + $indicators = []; + foreach ( $out->getIndicators() as $id => $content ) { + $indicators[] = [ + 'id' => Sanitizer::escapeIdForAttribute( "mw-indicator-$id" ), + 'class' => 'mw-indicator', + 'html' => $content, + ]; + } + + $printFooter = Html::rawElement( + 'div', + [ 'class' => 'printfooter' ], + $this->printSource() + ); + + return [ + // Data objects: + 'array-indicators' => $indicators, + // HTML strings: + 'html-printtail' => WrappedString::join( "\n", [ + MWDebug::getHTMLDebugLog(), + MWDebug::getDebugHTML( $this->getContext() ), + $this->bottomScripts(), + wfReportTime( $out->getCSP()->getNonce() ) + ] ) . '', + 'html-site-notice' => $this->getSiteNotice(), + 'html-userlangattributes' => $this->prepareUserLanguageAttributes(), + 'html-subtitle' => $this->prepareSubtitle(), + // Always returns string, cast to null if empty. + 'html-undelete-link' => $this->prepareUndeleteLink() ?: null, + // Result of OutputPage::addHTML calls + 'html-body-content' => $this->wrapHTML( $title, $out->mBodytext ) + . $printFooter, + 'html-after-content' => $this->afterContentHook(), + ]; + } + + /** + * @internal only for use inside VectorTemplate + * @return array + */ + public function getMenuProps() { + return $this->buildContentNavigationUrls(); } } diff --git a/includes/SkinVersionLookup.php b/includes/SkinVersionLookup.php new file mode 100644 index 0000000..2a9b8d6 --- /dev/null +++ b/includes/SkinVersionLookup.php @@ -0,0 +1,119 @@ +request = $request; + $this->user = $user; + $this->config = $config; + } + + /** + * Whether or not the legacy skin is being used. + * + * @return bool + * @throws \ConfigException + */ + public function isLegacy(): bool { + return $this->getVersion() === Constants::SKIN_VERSION_LEGACY; + } + + /** + * The skin version as a string. E.g., `Constants::SKIN_VERSION_LATEST`, + * `Constants::SKIN_VERSION_LATEST`, or maybe 'beta'. Note: it's likely someone will put arbitrary + * strings in the query parameter which means this function returns those strings as is. + * + * @return string + * @throws \ConfigException + */ + public function getVersion(): string { + // Obtain the skin version from the 1) `useskinversion` URL query parameter override, 2) the + // user preference, 3) the configured default for logged in users, 4) or the site default. + // + // The latter two configurations cannot be set by `Hooks::onUserGetDefaultOptions()` as user + // sessions are unavailable at that time so it's not possible to determine whether the + // preference is for a logged in user or an anonymous user. Since new users are known to have + // had their user preferences initialized in `Hooks::onLocalUserCreated()`, that means all + // subsequent requests to `User->getOption()` that do not have a preference set are either + // existing accounts or anonymous users. Login state makes the distinction. + return (string)$this->request->getVal( + Constants::QUERY_PARAM_SKIN_VERSION, + $this->user->getOption( + Constants::PREF_KEY_SKIN_VERSION, + $this->config->get( + $this->user->isLoggedIn() + ? Constants::CONFIG_KEY_DEFAULT_SKIN_VERSION_FOR_EXISTING_ACCOUNTS + : Constants::CONFIG_KEY_DEFAULT_SKIN_VERSION + ) + ) + ); + } +} diff --git a/includes/VectorTemplate.php b/includes/VectorTemplate.php index 58f6da8..0cf0734 100644 --- a/includes/VectorTemplate.php +++ b/includes/VectorTemplate.php @@ -22,37 +22,102 @@ * @ingroup Skins */ +use Vector\Constants; + /** * QuickTemplate subclass for Vector * @ingroup Skins + * @deprecated Since 1.35, duplicate class locally if its functionality is needed. + * Extensions or skins should extend it under no circumstances. */ class VectorTemplate extends BaseTemplate { + /** @var array of alternate message keys for menu labels */ + private const MENU_LABEL_KEYS = [ + 'cactions' => 'vector-more-actions', + 'tb' => 'toolbox', + 'personal' => 'personaltools', + 'lang' => 'otherlanguages', + ]; + /** @var int */ + private const MENU_TYPE_DEFAULT = 0; + /** @var int */ + private const MENU_TYPE_TABS = 1; + /** @var int */ + private const MENU_TYPE_DROPDOWN = 2; + private const MENU_TYPE_PORTAL = 3; /** - * Outputs the entire contents of the HTML page + * T243281: Code used to track clicks to opt-out link. + * + * The "vct" substring is used to describe the newest "Vector" (non-legacy) + * feature. The "w" describes the web platform. The "1" describes the version + * of the feature. + * + * @see https://wikitech.wikimedia.org/wiki/Provenance + * @var string */ - public function execute() { - $this->data['namespace_urls'] = $this->data['content_navigation']['namespaces']; - $this->data['view_urls'] = $this->data['content_navigation']['views']; - $this->data['action_urls'] = $this->data['content_navigation']['actions']; - $this->data['variant_urls'] = $this->data['content_navigation']['variants']; + private const OPT_OUT_LINK_TRACKING_CODE = 'vctw1'; - // Move the watch/unwatch star outside of the collapsed "actions" menu to the main "views" menu - if ( $this->config->get( 'VectorUseIconWatch' ) ) { - $mode = $this->getSkin()->getUser()->isWatched( $this->getSkin()->getRelevantTitle() ) - ? 'unwatch' - : 'watch'; + /** @var TemplateParser */ + private $templateParser; + /** @var string File name of the root (master) template without folder path and extension */ + private $templateRoot; - if ( isset( $this->data['action_urls'][$mode] ) ) { - $this->data['view_urls'][$mode] = $this->data['action_urls'][$mode]; - unset( $this->data['action_urls'][$mode] ); - } + /** @var bool */ + private $isLegacy; + + /** + * @param Config $config + * @param TemplateParser $templateParser + * @param bool $isLegacy + */ + public function __construct( + Config $config, + TemplateParser $templateParser, + bool $isLegacy + ) { + parent::__construct( $config ); + + $this->templateParser = $templateParser; + $this->isLegacy = $isLegacy; + $this->templateRoot = $isLegacy ? 'skin-legacy' : 'skin'; + } + + /** + * @return Config + */ + private function getConfig() { + return $this->config; + } + + /** + * The template parser might be undefined. This function will check if it set first + * + * @return TemplateParser + */ + protected function getTemplateParser() { + if ( $this->templateParser === null ) { + throw new \LogicException( + 'TemplateParser has to be set first via setTemplateParser method' + ); } + return $this->templateParser; + } + /** + * @deprecated Please use Skin::getTemplateData instead + * @return array Returns an array of data shared between Vector and legacy + * Vector. + */ + private function getSkinData() : array { + // @phan-suppress-next-line PhanUndeclaredMethod + $contentNavigation = $this->getSkin()->getMenuProps(); + $skin = $this->getSkin(); + $out = $skin->getOutput(); + $title = $out->getTitle(); /* GOLEM Navigation Bar -- BEGIN */ - $golemNavBar = ' -
+ $golemNavBar = '
'; /* GOLEM Navigation Bar -- END */ - // Naming conventions for Mustache parameters: - // - Prefix "is" for boolean values. - // - Prefix "msg-" for interface messages. - // - Prefix "page-" for data relating to the current page (e.g. Title, WikiPage, or OutputPage). - // - Prefix "html-" for raw HTML (in front of other keys, if applicable). - // - Conditional values are null if absent. - $params = [ - 'html-headelement' => $this->get( 'headelement', '' ), + + // Naming conventions for Mustache parameters. + // + // Value type (first segment): + // - Prefix "is" or "has" for boolean values. + // - Prefix "msg-" for interface message text. + // - Prefix "html-" for raw HTML. + // - Prefix "data-" for an array of template parameters that should be passed directly + // to a template partial. + // - Prefix "array-" for lists of any values. + // + // Source of value (first or second segment) + // - Segment "page-" for data relating to the current page (e.g. Title, WikiPage, or OutputPage). + // - Segment "hook-" for any thing generated from a hook. + // It should be followed by the name of the hook in hyphenated lowercase. + // + // Conditionally used values must use null to indicate absence (not false or ''). + $mainPageHref = Skin::makeMainPageUrl(); + // From Skin::getNewtalks(). Always returns string, cast to null if empty. + $newTalksHtml = $skin->getNewtalks() ?: null; + + // @phan-suppress-next-line PhanUndeclaredMethod + $commonSkinData = $skin->getTemplateData() + [ + 'html-headelement' => $out->headElement( $skin ), 'html-golemnavbar' => $golemNavBar, - 'html-sitenotice' => $this->get( 'sitenotice', null ), - 'html-indicators' => $this->getIndicators(), - 'page-langcode' => $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode(), - 'page-isarticle' => (bool)$this->data['isarticle'], + 'page-langcode' => $title->getPageViewLanguage()->getHtmlCode(), + 'page-isarticle' => (bool)$out->isArticle(), // Remember that the string '0' is a valid title. // From OutputPage::getPageTitle, via ::setPageTitle(). - 'html-title' => $this->get( 'title', '' ), + 'html-title' => $out->getPageTitle(), + 'msg-tagline' => $skin->msg( 'tagline' )->text(), + 'html-newtalk' => $newTalksHtml ? '
' . $newTalksHtml . '
' : '', - 'html-prebodyhtml' => $this->get( 'prebodyhtml', '' ), - 'msg-tagline' => $this->getMsg( 'tagline' )->text(), - // TODO: mediawiki/SkinTemplate should expose langCode and langDir properly. - 'html-userlangattributes' => $this->get( 'userlangattributes', '' ), - // From OutputPage::getSubtitle() - 'html-subtitle' => $this->get( 'subtitle', '' ), + 'msg-vector-jumptonavigation' => $skin->msg( 'vector-jumptonavigation' )->text(), + 'msg-vector-jumptosearch' => $skin->msg( 'vector-jumptosearch' )->text(), - // TODO: Use directly Skin::getUndeleteLink() directly. - // Always returns string, cast to null if empty. - 'html-undelete' => $this->get( 'undelete', null ) ?: null, + 'html-printfooter' => $skin->printSource(), + 'html-categories' => $skin->getCategories(), + 'data-footer' => $this->getFooterData(), + 'html-navigation-heading' => $skin->msg( 'navigation-heading' ), + 'data-search-box' => $this->buildSearchProps(), - // From Skin::getNewtalks(). Always returns string, cast to null if empty. - 'html-newtalk' => $this->get( 'newtalk', '' ) ?: null, + // Header + 'data-logos' => ResourceLoaderSkinModule::getAvailableLogos( $this->getConfig() ), + 'msg-sitetitle' => $skin->msg( 'sitetitle' )->text(), + 'msg-sitesubtitle' => $skin->msg( 'sitesubtitle' )->text(), + 'main-page-href' => $mainPageHref, - 'msg-jumptonavigation' => $this->getMsg( 'vector-jumptonavigation' )->text(), - 'msg-jumptosearch' => $this->getMsg( 'vector-jumptosearch' )->text(), + 'data-sidebar' => $this->buildSidebar(), + 'sidebar-visible' => $this->isSidebarVisible(), + 'msg-vector-action-toggle-sidebar' => $skin->msg( 'vector-action-toggle-sidebar' )->text(), + ] + $this->getMenuProps(); - // Result of OutputPage::addHTML calls - 'html-bodycontent' => $this->get( 'bodycontent' ), + // The following logic is unqiue to Vector (not used by legacy Vector) and + // is planned to be moved in a follow-up patch. + if ( !$this->isLegacy && $skin->getUser()->isLoggedIn() ) { + $commonSkinData['data-sidebar']['data-emphasized-sidebar-action'] = [ + 'href' => SpecialPage::getTitleFor( + 'Preferences', + false, + 'mw-prefsection-rendering-skin-skin-prefs' + )->getLinkURL( 'wprov=' . self::OPT_OUT_LINK_TRACKING_CODE ), + 'text' => $skin->msg( 'vector-opt-out' )->text(), + 'title' => $skin->msg( 'vector-opt-out-tooltip' )->text(), + ]; + } - 'html-printfooter' => $this->get( 'printfooter', null ), - 'html-catlinks' => $this->get( 'catlinks', '' ), - 'html-dataAfterContent' => $this->get( 'dataAfterContent', '' ), - // From MWDebug::getHTMLDebugLog (when $wgShowDebug is enabled) - 'html-debuglog' => $this->get( 'debughtml', '' ), - // From BaseTemplate::getTrail (handles bottom JavaScript) - 'html-printtail' => $this->getTrail(), - ]; + return $commonSkinData; + } - // TODO: Convert the rest to Mustache - ob_start(); - ?> -
-

msg( 'navigation-heading' ) ?>

-
+ /** + * Renders the entire contents of the HTML page. + */ + public function execute() { + $tp = $this->getTemplateParser(); + echo $tp->processTemplate( $this->templateRoot, $this->getSkinData() ); + } -
-
- renderNavigation( [ 'SEARCH', 'PERSONAL', 'NAMESPACES', 'VARIANTS', 'VIEWS', 'ACTIONS' ] ); ?> - renderPortals( $this->data['sidebar'] ); ?> -
-
- - - 'footer-icons', + 'className' => 'noprint', + 'array-items' => $items, + ]; + } + + ob_start(); + Hooks::run( 'VectorBeforeFooter', [], '1.35' ); + $htmlHookVectorBeforeFooter = ob_get_contents(); ob_end_clean(); - // Prepare and output the HTML response - $templates = new TemplateParser( __DIR__ . '/templates' ); - echo $templates->processTemplate( 'index', $params ); + $data = [ + 'html-hook-vector-before-footer' => $htmlHookVectorBeforeFooter, + 'array-footer-rows' => $footerRows, + ]; + + return $data; + } + + /** + * Determines wheather the initial state of sidebar is visible on not + * + * @return bool + */ + private function isSidebarVisible() { + $skin = $this->getSkin(); + if ( $skin->getUser()->isLoggedIn() ) { + $userPrefSidebarState = $skin->getUser()->getOption( + Constants::PREF_KEY_SIDEBAR_VISIBLE + ); + + $defaultLoggedinSidebarState = $this->getConfig()->get( + Constants::CONFIG_KEY_DEFAULT_SIDEBAR_VISIBLE_FOR_AUTHORISED_USER + ); + + // If the sidebar user preference has been set, return that value, + // if not, then the default sidebar state for logged-in users. + return ( $userPrefSidebarState !== null ) + ? (bool)$userPrefSidebarState + : $defaultLoggedinSidebarState; + } + return $this->getConfig()->get( + Constants::CONFIG_KEY_DEFAULT_SIDEBAR_VISIBLE_FOR_ANONYMOUS_USER + ); } /** * Render a series of portals * - * @param array $portals + * @return array */ - protected function renderPortals( array $portals ) { - // Force the rendering of the following portals - if ( !isset( $portals['TOOLBOX'] ) ) { - $portals['TOOLBOX'] = true; - } - if ( !isset( $portals['LANGUAGES'] ) ) { - $portals['LANGUAGES'] = true; - } + private function buildSidebar() : array { + $skin = $this->getSkin(); + $portals = $skin->buildSidebar(); + $props = []; + $languages = null; + // Render portals foreach ( $portals as $name => $content ) { if ( $content === false ) { @@ -201,293 +321,237 @@ class VectorTemplate extends BaseTemplate { case 'SEARCH': break; case 'TOOLBOX': - $this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' ); - Hooks::run( 'VectorAfterToolbox' ); + $portal = $this->getMenuData( + 'tb', $content, self::MENU_TYPE_PORTAL + ); + // Run deprecated hook. + // Use SidebarBeforeOutput instead. + ob_start(); + Hooks::run( 'VectorAfterToolbox', [], '1.35' ); + $props[] = $portal + [ + 'html-hook-vector-after-toolbox' => ob_get_clean(), + ]; break; case 'LANGUAGES': - if ( $this->data['language_urls'] !== false ) { - $this->renderPortal( 'lang', $this->data['language_urls'], 'otherlanguages' ); + $portal = $this->getMenuData( + 'lang', + $content, + self::MENU_TYPE_PORTAL + ); + // The language portal will be added provided either + // languages exist or there is a value in html-after-portal + // for example to show the add language wikidata link (T252800) + if ( count( $content ) || $portal['html-after-portal'] ) { + $languages = $portal; } break; default: - $this->renderPortal( $name, $content ); + // Historically some portals have been defined using HTML rather than arrays. + // Let's move away from that to a uniform definition. + if ( !is_array( $content ) ) { + $html = $content; + $content = []; + wfDeprecated( + "`content` field in portal $name must be array." + . "Previously it could be a string but this is no longer supported.", + '1.35.0' + ); + } else { + $html = false; + } + $portal = $this->getMenuData( + $name, $content, self::MENU_TYPE_PORTAL + ); + if ( $html ) { + $portal['html-items'] .= $html; + } + $props[] = $portal; break; } } + + $firstPortal = $props[0] ?? null; + if ( $firstPortal ) { + $firstPortal[ 'class' ] .= ' portal-first'; + } + + return [ + 'has-logo' => $this->isLegacy, + 'html-logo-attributes' => Xml::expandAttributes( + Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) + [ + 'class' => 'mw-wiki-logo', + 'href' => Skin::makeMainPageUrl(), + ] + ), + 'array-portals-rest' => array_slice( $props, 1 ), + 'data-portals-first' => $firstPortal, + 'data-portals-languages' => $languages, + ]; } /** - * @param string $name - * @param array|string $content - * @param null|string $msg - * @param null|string|array $hook + * @param string $label to be used to derive the id and human readable label of the menu + * If the key has an entry in the constant MENU_LABEL_KEYS then that message will be used for the + * human readable text instead. + * @param array $urls to convert to list items stored as string in html-items key + * @param int $type of menu (optional) - a plain list (MENU_TYPE_DEFAULT), + * a tab (MENU_TYPE_TABS) or a dropdown (MENU_TYPE_DROPDOWN) + * @param array $options (optional) to be passed to makeListItem + * @param bool $setLabelToSelected (optional) the menu label will take the value of the + * selected item if found. + * @return array */ - protected function renderPortal( $name, $content, $msg = null, $hook = null ) { - if ( $msg === null ) { - $msg = $name; - } - $msgObj = $this->getMsg( $msg ); - $labelId = Sanitizer::escapeIdForAttribute( "p-$name-label" ); - ?> - - $element ) { - switch ( $element ) { - case 'NAMESPACES': - ?> - - - - - - - - - - - - -
- getAfterPortlet( $label ) : ''; + + // Mark the portal as empty if it has no content + $class = ( count( $urls ) == 0 && !$props['html-after-portal'] ) + ? 'vector-menu-empty emptyPortlet' : ''; + $props['class'] = trim( "$class $extraClasses[$type]" ); + return $props; } /** - * @inheritDoc + * @return array */ - public function makeLink( $key, $item, $options = [] ) { - $html = parent::makeLink( $key, $item, $options ); - // Add an extra wrapper because our CSS is weird - if ( isset( $options['vector-wrap'] ) && $options['vector-wrap'] ) { - $html = Html::rawElement( 'span', [], $html ); + private function getMenuProps() : array { + // @phan-suppress-next-line PhanUndeclaredMethod + $contentNavigation = $this->getSkin()->getMenuProps(); + $personalTools = $this->getPersonalTools(); + $skin = $this->getSkin(); + + // For logged out users Vector shows a "Not logged in message" + // This should be upstreamed to core, with instructions for how to hide it for skins + // that do not want it. + // For now we create a dedicated list item to avoid having to sync the API internals + // of makeListItem. + if ( !$skin->getUser()->isLoggedIn() && User::groupHasPermission( '*', 'edit' ) ) { + $loggedIn = + Html::element( 'li', + [ 'id' => 'pt-anonuserpage' ], + $skin->msg( 'notloggedin' )->text() + ); + } else { + $loggedIn = ''; } - return $html; + + // This code doesn't belong here, it belongs in the UniversalLanguageSelector + // It is here to workaround the fact that it wants to be the first item in the personal menus. + if ( array_key_exists( 'uls', $personalTools ) ) { + $uls = $skin->makeListItem( 'uls', $personalTools[ 'uls' ] ); + unset( $personalTools[ 'uls' ] ); + } else { + $uls = ''; + } + + $ptools = $this->getMenuData( 'personal', $personalTools ); + // Append additional link items if present. + $ptools['html-items'] = $uls . $loggedIn . $ptools['html-items']; + + return [ + 'data-personal-menu' => $ptools, + 'data-namespace-tabs' => $this->getMenuData( + 'namespaces', + $contentNavigation[ 'namespaces' ] ?? [], + self::MENU_TYPE_TABS + ), + 'data-variants' => $this->getMenuData( + 'variants', + $contentNavigation[ 'variants' ] ?? [], + self::MENU_TYPE_DROPDOWN, + [], true + ), + 'data-page-actions' => $this->getMenuData( + 'views', + $contentNavigation[ 'views' ] ?? [], + self::MENU_TYPE_TABS, [ + 'vector-collapsible' => true, + ] + ), + 'data-page-actions-more' => $this->getMenuData( + 'cactions', + $contentNavigation[ 'actions' ] ?? [], + self::MENU_TYPE_DROPDOWN + ), + ]; } /** - * @inheritDoc + * @return array */ - public function makeListItem( $key, $item, $options = [] ) { - // For fancy styling of watch/unwatch star - if ( - $this->config->get( 'VectorUseIconWatch' ) - && ( $key === 'watch' || $key === 'unwatch' ) - ) { - $item['class'] = rtrim( 'icon ' . $item['class'], ' ' ); - $item['primary'] = true; - } - - // Add CSS class 'collapsible' to links which are not marked as "primary" - if ( - isset( $options['vector-collapsible'] ) && $options['vector-collapsible'] ) { - $item['class'] = rtrim( 'collapsible ' . $item['class'], ' ' ); - } - - return parent::makeListItem( $key, $item, $options ); + private function buildSearchProps() : array { + $config = $this->getConfig(); + $skin = $this->getSkin(); + $props = [ + 'form-action' => $config->get( 'Script' ), + 'html-button-search-fallback' => $this->makeSearchButton( + 'fulltext', + [ 'id' => 'mw-searchButton', 'class' => 'searchButton mw-fallbackSearchButton' ] + ), + 'html-button-search' => $this->makeSearchButton( + 'go', + [ 'id' => 'searchButton', 'class' => 'searchButton' ] + ), + 'html-input' => $this->makeSearchInput( [ 'id' => 'searchInput' ] ), + 'msg-search' => $skin->msg( 'search' ), + 'page-title' => SpecialPage::getTitleFor( 'Search' )->getPrefixedDBkey(), + ]; + return $props; } } diff --git a/includes/templates/Footer.mustache b/includes/templates/Footer.mustache new file mode 100644 index 0000000..58d261b --- /dev/null +++ b/includes/templates/Footer.mustache @@ -0,0 +1,28 @@ +{{! + @typedef object footerItem + @prop string id of list item element + @prop string html of list item + @prop footerItem[] items + + @typedef object footerRow + @prop string className of list element + @prop string id of list element + @prop footerItem[] array-items + + string html-hook-vector-before-footer output of VectorBeforeFooter hook + string|null html-userlangattributes a string of attribute HTML + footerRow[] array-footer-rows iterable list of footer rows +}} +{{{html-hook-vector-before-footer}}} +{{! `role` is unnecessary but kept to support selectors in any gadgets or user styles and + to mitigate a VoiceOver bug. }} +
+ {{#array-footer-rows}} +
    + {{#array-items}} +
  • {{{html}}}
  • + {{/array-items}} +
+ {{/array-footer-rows}} +
+
diff --git a/includes/templates/Indicators.mustache b/includes/templates/Indicators.mustache new file mode 100644 index 0000000..6e1cc7b --- /dev/null +++ b/includes/templates/Indicators.mustache @@ -0,0 +1,6 @@ +{{! @typedef Indicator[]}} +
+{{#array-indicators}} +
{{{html}}}
+{{/array-indicators}} +
diff --git a/includes/templates/Logo.mustache b/includes/templates/Logo.mustache new file mode 100644 index 0000000..c7dc224 --- /dev/null +++ b/includes/templates/Logo.mustache @@ -0,0 +1,28 @@ +{{! + LogoDefinition logo + string main-page-href link to the main page + string msg-sitesubtitle the contents of the sitesubtitle message key +}} +{{#data-logos}} + +{{/data-logos}} diff --git a/includes/templates/Menu.mustache b/includes/templates/Menu.mustache new file mode 100644 index 0000000..81979e2 --- /dev/null +++ b/includes/templates/Menu.mustache @@ -0,0 +1,24 @@ +{{! + See @typedef MenuDefinition +}} +{{! `role` is unnecessary but kept to support selectors in any gadgets or user styles. }} + + +{{! Note: html-hook-vector-after-toolbox is deprecated. }} +{{{html-hook-vector-after-toolbox}}} diff --git a/includes/templates/SearchBox.mustache b/includes/templates/SearchBox.mustache new file mode 100644 index 0000000..9a68542 --- /dev/null +++ b/includes/templates/SearchBox.mustache @@ -0,0 +1,24 @@ +{{! + See @typedef SearchData +}} + diff --git a/includes/templates/Sidebar.mustache b/includes/templates/Sidebar.mustache new file mode 100644 index 0000000..cb8ea4d --- /dev/null +++ b/includes/templates/Sidebar.mustache @@ -0,0 +1,21 @@ +{{! + @typedef object emphasized-sidebar-action + @prop string href + @prop string text + + string html-logo-attributes for site logo. Must be used inside tag e.g. `class="logo" lang="en-gb"` + MenuDefinition data-portals-first + MenuDefinition[] array-portals-rest + emphasized-sidebar-action data-emphasized-sidebar-action For displaying an emphasized action in the sidebar. +}} + +
+ {{#data-portals-first}}{{>Menu}}{{/data-portals-first}} + {{#data-emphasized-sidebar-action}} +
+ {{text}} +
+ {{/data-emphasized-sidebar-action}} + {{#array-portals-rest}}{{>Menu}}{{/array-portals-rest}} + {{#data-portals-languages}}{{>Menu}}{{/data-portals-languages}} +
diff --git a/includes/templates/legacy/Sidebar.mustache b/includes/templates/legacy/Sidebar.mustache new file mode 100644 index 0000000..1e53014 --- /dev/null +++ b/includes/templates/legacy/Sidebar.mustache @@ -0,0 +1,15 @@ +{{! + See @typedef SidebarData + string html-logo-attributes for site logo. Must be used inside tag e.g. `class="logo" lang="en-gb"` +}} + +
+ {{#has-logo}} + + {{/has-logo}} + {{#data-portals-first}}{{>Menu}}{{/data-portals-first}} + {{#array-portals-rest}}{{>Menu}}{{/array-portals-rest}} + {{#data-portals-languages}}{{>Menu}}{{/data-portals-languages}} +
diff --git a/includes/templates/skin-legacy.mustache b/includes/templates/skin-legacy.mustache new file mode 100644 index 0000000..dd38046 --- /dev/null +++ b/includes/templates/skin-legacy.mustache @@ -0,0 +1,76 @@ +{{! + string html-headelement a string of attribute HTML that begins with `` and ends with + `` and contains `meta` tags and ResourceLoader internals. + string|null html-site-notice the contents of a banner defined in MediaWiki:Sitenotice. + Also used by CentralNotice to inject banners into Vector. + Indicator[] array-indicators wiki-defined badges such as "good article", + "featured article". An empty array if none are defined. + string page-langcode the content language of the article. Assumed to be escaped HTML. + string html-title + bool page-isarticle + string msg-tagline + string html-subtitle + string html-undelete-link + string html-newtalk + string msg-vector-jumptonavigation + string msg-vector-jumptosearch + string html-body-content + string html-categories + string html-after-content + string html-navigation-heading heading for entire navigation that is + usually hidden to screen readers + MenuDefinition data-personal-menu + MenuDefinition data-namespace-tabs + MenuDefinition data-variants + MenuDefinition data-page-actions + MenuDefinition data-page-actions-more + object data-search-box. See SearchBox.mustache for documentation. + object data-sidebar. See Sidebar.mustache for documentation. + object data-footer for footer template partial. see Footer.mustache for documentation. + string html-printtail HTML to render at the end of the page contained necessary script tags for + ResourceLoader terminated with ``. +}} + +{{{html-headelement}}} +
+
+
+ +
{{{html-site-notice}}}
+ {{>Indicators}} +

{{{html-title}}}

+
+ {{#page-isarticle}}
{{msg-tagline}}
{{/page-isarticle}} +
{{{html-subtitle}}}
+
{{{html-undelete-link}}}
+ {{{html-newtalk}}} + {{! + Keep this empty `div` for compatibility with gadgets and user scripts + using this place to insert extra elements before. + }} +
+ {{msg-vector-jumptonavigation}} + {{msg-vector-jumptosearch}} + {{{html-body-content}}} + {{{html-categories}}} +
+
+{{{html-after-content}}} +
+

{{{html-navigation-heading}}}

+
+ {{#data-personal-menu}}{{>Menu}}{{/data-personal-menu}} +
+ {{#data-namespace-tabs}}{{>Menu}}{{/data-namespace-tabs}} + {{#data-variants}}{{>Menu}}{{/data-variants}} +
+
+ {{#data-page-actions}}{{>Menu}}{{/data-page-actions}} + {{#data-page-actions-more}}{{>Menu}}{{/data-page-actions-more}} + {{#data-search-box}}{{>SearchBox}}{{/data-search-box}} +
+
+ {{#data-sidebar}}{{>legacy/Sidebar}}{{/data-sidebar}} +
+{{#data-footer}}{{>Footer}}{{/data-footer}} +{{{html-printtail}}} diff --git a/includes/templates/skin.mustache b/includes/templates/skin.mustache new file mode 100644 index 0000000..e720556 --- /dev/null +++ b/includes/templates/skin.mustache @@ -0,0 +1,122 @@ +{{! + string html-headelement a string of attribute HTML that begins with `` and ends with + `` and contains `meta` tags and ResourceLoader internals. + string|null html-site-notice the contents of a banner defined in MediaWiki:Sitenotice. + Also used by CentralNotice to inject banners into Vector. + Indicator[] array-indicators wiki-defined badges such as "good article", + "featured article". An empty array if none are defined. + string page-langcode the content language of the article. Assumed to be escaped HTML. + string html-title + bool page-isarticle + string msg-tagline + string html-subtitle + string html-undelete-link + string html-newtalk + string msg-vector-jumptonavigation + string msg-vector-jumptosearch + string html-body-content + string html-categories + string html-after-content + string html-navigation-heading heading for entire navigation that is usually hidden to screen + readers + LogoOptions data-logos + MenuDefinition data-personal-menu + MenuDefinition data-namespace-tabs + MenuDefinition data-variants + MenuDefinition data-page-actions + MenuDefinition data-page-actions-more + object data-search-box. See SearchBox.mustache for documentation. + boolean sidebar-visible For users that want to see the sidebar on initial render, this should be + true. + string msg-vector-action-toggle-sidebar The label used by the sidebar button. + object data-sidebar. See Sidebar.mustache for documentation. + object data-footer for footer template partial. see Footer.mustache for documentation. + string html-printtail HTML to render at the end of the page contained necessary script tags for + ResourceLoader terminated with ``. +}} + +{{{html-headelement}}} + +
+
+ +
+ + + +
+
+{{! `role` is unnecessary but kept to support selectors in any gadgets or user styles. }} + +
+ +
{{{html-site-notice}}}
+ {{>Indicators}} +

{{{html-title}}}

+
+ {{#page-isarticle}}
{{msg-tagline}}
{{/page-isarticle}} +
{{{html-subtitle}}}
+
{{{html-undelete-link}}}
+ {{{html-newtalk}}} + {{! + Keep this empty `div` for compatibility with gadgets and user scripts + using this place to insert extra elements before. + }} +
+ {{msg-vector-jumptonavigation}} + {{msg-vector-jumptosearch}} + {{{html-body-content}}} + {{{html-categories}}} +
+
+{{{html-after-content}}} +
{{! END mw-content-container }} +
{{! END mw-workspace-container }} + +
+ +
+ {{#data-sidebar}}{{>Sidebar}}{{/data-sidebar}} +
+ {{>Logo}} +
+ +
+

{{{html-navigation-heading}}}

+
+ {{#data-personal-menu}}{{>Menu}}{{/data-personal-menu}} +
+
+ {{#data-namespace-tabs}}{{>Menu}}{{/data-namespace-tabs}} + {{#data-variants}}{{>Menu}}{{/data-variants}} +
+
+ {{#data-page-actions}}{{>Menu}}{{/data-page-actions}} + {{#data-page-actions-more}}{{>Menu}}{{/data-page-actions-more}} + {{#data-search-box}}{{>SearchBox}}{{/data-search-box}} +
+
+
+
+ + +
{{! END mw-page-container-inner }} +
{{! END mw-page-container }} +{{{html-printtail}}} diff --git a/jsdoc.json b/jsdoc.json new file mode 100644 index 0000000..e7f4ab4 --- /dev/null +++ b/jsdoc.json @@ -0,0 +1,34 @@ +{ + "opts": { + "destination": "docs/js", + "package": "package.json", + "pedantic": true, + "readme": "README.md", + "recurse": true, + "template": "node_modules/jsdoc-wmf-theme" + }, + "source": { + "include": [ "resources" ] + }, + "templates": { + "cleverLinks": true, + "default": { + "useLongnameInNav": true + }, + "wmf": { + "linkMap": { + "Document": "https://developer.mozilla.org/docs/Web/API/Document", + "HTMLElement": "https://developer.mozilla.org/docs/Web/API/HTMLElement", + "HTMLInputElement": "https://developer.mozilla.org/docs/Web/API/HTMLInputElement", + "Window": "https://developer.mozilla.org/docs/Web/API/Window", + + "CheckboxHack": "https://doc.wikimedia.org/mediawiki-core/master/js", + + "MW": "https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw", + "JQueryStatic": "https://api.jquery.com", + + "void": "#" + } + } + } +} diff --git a/package-lock.json b/package-lock.json index 07bac2d..8c811cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,109 +3,317 @@ "lockfileVersion": 1, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.6.tgz", + "integrity": "sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "invariant": "^2.2.4", + "semver": "^5.5.0" } }, "@babel/core": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", - "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", + "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helpers": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.5", - "@babel/types": "^7.4.4", - "convert-source-map": "^1.1.0", + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.7", + "@babel/helpers": "^7.7.4", + "@babel/parser": "^7.7.7", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", "json5": "^2.1.0", - "lodash": "^4.17.11", + "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", + "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", "dev": true, "requires": { - "@babel/types": "^7.4.4", + "@babel/types": "^7.8.7", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-call-delegate": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz", + "integrity": "sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz", + "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz", + "integrity": "sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.8.6", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helpers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", - "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", "dev": true, "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", "dev": true, "requires": { "chalk": "^2.0.0", @@ -114,50 +322,735 @@ } }, "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, - "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", + "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz", + "integrity": "sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz", + "integrity": "sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", + "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", + "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", + "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", + "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz", + "integrity": "sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.8.7", + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz", + "integrity": "sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.7.tgz", + "integrity": "sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.6", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.8.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@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-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.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.8.6", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.8.6", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.8.3", + "@babel/plugin-transform-modules-commonjs": "^7.8.3", + "@babel/plugin-transform-modules-systemjs": "^7.8.3", + "@babel/plugin-transform-modules-umd": "^7.8.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/types": "^7.8.7", + "browserslist": "^4.8.5", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz", + "integrity": "sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" } }, "@babel/traverse": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", - "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/types": "^7.4.4", + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.11" + "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.11", + "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, + "@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, + "requires": { + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" + } + }, + "@emotion/core": { + "version": "10.0.28", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.28.tgz", + "integrity": "sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "dev": true, + "requires": { + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true + }, + "@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, + "requires": { + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" + } + }, + "@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true + }, + "@emotion/styled": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", + "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "dev": true, + "requires": { + "@emotion/styled-base": "^10.0.27", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/styled-base": { + "version": "10.0.30", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.30.tgz", + "integrity": "sha512-pjAZxjnDzLQ5F0Wv3DgTLvg8pw4bMSABP9GHDdCaDjZak/8Il5mQRLs15h9AKC95E8QG1NEr11GfHO1SGYV5ZA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -168,108 +1061,1262 @@ "glob-to-regexp": "^0.3.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true + } + } + }, "@nodelib/fs.stat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", "dev": true, "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@reach/router": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.3.tgz", + "integrity": "sha512-gOIAiFhWdiVGSVjukKeNKkCRBLmnORoTPyBihI/jLunICPgxdP30DroAvPQuf1eVfQbfGJQDJkwhJXsNPMnVWw==", + "dev": true, + "requires": { + "create-react-context": "0.3.0", + "invariant": "^2.2.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4" + } + }, + "@storybook/addons": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.2.8.tgz", + "integrity": "sha512-yAo1N5z/45bNIQP8SD+HVTr7X898bYAtz1EZBrQ6zD8bGamzA2Br06rOLL9xXw29eQhsaVnPlqgDwCS1sTC7aQ==", + "dev": true, + "requires": { + "@storybook/api": "5.2.8", + "@storybook/channels": "5.2.8", + "@storybook/client-logger": "5.2.8", + "@storybook/core-events": "5.2.8", + "core-js": "^3.0.1", + "global": "^4.3.2", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/api": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.2.8.tgz", + "integrity": "sha512-rFrPtTFDIPQoicLwq1AVsOvZNTUKnjD1w/NX1kKcyuWLL9BcOkU3YNLBlliGBg2JX/yS+fJKMyKk4NMzNBCZCg==", + "dev": true, + "requires": { + "@storybook/channels": "5.2.8", + "@storybook/client-logger": "5.2.8", + "@storybook/core-events": "5.2.8", + "@storybook/router": "5.2.8", + "@storybook/theming": "5.2.8", + "core-js": "^3.0.1", + "fast-deep-equal": "^2.0.1", + "global": "^4.3.2", + "lodash": "^4.17.15", + "memoizerific": "^1.11.3", + "prop-types": "^15.6.2", + "react": "^16.8.3", + "semver": "^6.0.0", + "shallow-equal": "^1.1.0", + "store2": "^2.7.1", + "telejson": "^3.0.2", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@storybook/channel-postmessage": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.2.8.tgz", + "integrity": "sha512-RS3iDW1kpfODN+kBq3youn+KtLqHslZ4m7mTlOL80BUHKb4YkrA1lVkzpy1kVMWBU523pyDVQUVXr+M8y3iVug==", + "dev": true, + "requires": { + "@storybook/channels": "5.2.8", + "@storybook/client-logger": "5.2.8", + "core-js": "^3.0.1", + "global": "^4.3.2", + "telejson": "^3.0.2" + } + }, + "@storybook/channels": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.2.8.tgz", + "integrity": "sha512-mFwQec27QSrqcl+IH0xA+4jfoEqC4m1G99LBHt/aTDjLZXclX1A470WqeZCp7Gx4OALpaPEVTaaaKPbiKz4C6w==", + "dev": true, + "requires": { + "core-js": "^3.0.1" + } + }, + "@storybook/client-api": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.2.8.tgz", + "integrity": "sha512-OCKhZ+2sS3ot0ZV48nD79BWVzvvdMjUFYl0073ps5q+1+TLic1AlNmH0Sb5/9NrYXNV86v3VrM2jUbGsKe1qyw==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.8", + "@storybook/channel-postmessage": "5.2.8", + "@storybook/channels": "5.2.8", + "@storybook/client-logger": "5.2.8", + "@storybook/core-events": "5.2.8", + "@storybook/router": "5.2.8", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "eventemitter3": "^4.0.0", + "global": "^4.3.2", + "is-plain-object": "^3.0.0", + "lodash": "^4.17.15", + "memoizerific": "^1.11.3", + "qs": "^6.6.0", + "stable": "^0.1.8", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.2.8.tgz", + "integrity": "sha512-+oVSEJdeh7TQ1Bhanb3mCr7fc3Bug3+K79abZ28J45Ub5x4L/ZVClj1xMgUsJs30BZ5FB8vhdgH6TQb0NSxR4A==", + "dev": true, + "requires": { + "core-js": "^3.0.1" + } + }, + "@storybook/components": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.2.8.tgz", + "integrity": "sha512-h9l/LAMaj+emUCOyY/+ETy/S3P0npwQU280J88uL4O9XJALJ72EKfyttBCvMLvpM50E+fAPeDzuYn0t5qzGGxg==", + "dev": true, + "requires": { + "@storybook/client-logger": "5.2.8", + "@storybook/theming": "5.2.8", + "@types/react-syntax-highlighter": "10.1.0", + "@types/react-textarea-autosize": "^4.3.3", + "core-js": "^3.0.1", + "global": "^4.3.2", + "markdown-to-jsx": "^6.9.1", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "popper.js": "^1.14.7", + "prop-types": "^15.7.2", + "react": "^16.8.3", + "react-dom": "^16.8.3", + "react-focus-lock": "^1.18.3", + "react-helmet-async": "^1.0.2", + "react-popper-tooltip": "^2.8.3", + "react-syntax-highlighter": "^8.0.1", + "react-textarea-autosize": "^7.1.0", + "simplebar-react": "^1.0.0-alpha.6" + } + }, + "@storybook/core": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.2.8.tgz", + "integrity": "sha512-P1Xx4setLBESPgS5KgL7Jskf5Q6fRa3ApwPt+ocjDoSDGCvsV7cUEpAp09U65u+89e5K4nQxvaZouhknFQBc1A==", + "dev": true, + "requires": { + "@babel/plugin-proposal-class-properties": "^7.7.0", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-transform-react-constant-elements": "^7.6.3", + "@babel/preset-env": "^7.7.1", + "@storybook/addons": "5.2.8", + "@storybook/channel-postmessage": "5.2.8", + "@storybook/client-api": "5.2.8", + "@storybook/client-logger": "5.2.8", + "@storybook/core-events": "5.2.8", + "@storybook/node-logger": "5.2.8", + "@storybook/router": "5.2.8", + "@storybook/theming": "5.2.8", + "@storybook/ui": "5.2.8", + "airbnb-js-shims": "^1 || ^2", + "ansi-to-html": "^0.6.11", + "autoprefixer": "^9.4.9", + "babel-plugin-add-react-displayname": "^0.0.5", + "babel-plugin-emotion": "^10.0.14", + "babel-plugin-macros": "^2.4.5", + "babel-preset-minify": "^0.5.0 || 0.6.0-alpha.5", + "boxen": "^3.0.0", + "case-sensitive-paths-webpack-plugin": "^2.2.0", + "chalk": "^2.4.2", + "cli-table3": "0.5.1", + "commander": "^2.19.0", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "corejs-upgrade-webpack-plugin": "^2.2.0", + "css-loader": "^3.0.0", + "detect-port": "^1.3.0", + "dotenv-webpack": "^1.7.0", + "ejs": "^2.6.1", + "express": "^4.17.0", + "file-loader": "^3.0.1", + "file-system-cache": "^1.0.5", + "find-cache-dir": "^3.0.0", + "fs-extra": "^8.0.1", + "global": "^4.3.2", + "html-webpack-plugin": "^4.0.0-beta.2", + "inquirer": "^6.2.0", + "interpret": "^1.2.0", + "ip": "^1.1.5", + "json5": "^2.1.0", + "lazy-universal-dotenv": "^3.0.1", + "node-fetch": "^2.6.0", + "open": "^6.1.0", + "pnp-webpack-plugin": "1.4.3", + "postcss-flexbugs-fixes": "^4.1.0", + "postcss-loader": "^3.0.0", + "pretty-hrtime": "^1.0.3", + "qs": "^6.6.0", + "raw-loader": "^2.0.0", + "react-dev-utils": "^9.0.0", + "regenerator-runtime": "^0.12.1", + "resolve": "^1.11.0", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", + "serve-favicon": "^2.5.0", + "shelljs": "^0.8.3", + "style-loader": "^0.23.1", + "terser-webpack-plugin": "^1.2.4", + "unfetch": "^4.1.0", + "url-loader": "^2.0.1", + "util-deprecate": "^1.0.2", + "webpack": "^4.33.0", + "webpack-dev-middleware": "^3.7.0", + "webpack-hot-middleware": "^2.25.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@storybook/core-events": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.2.8.tgz", + "integrity": "sha512-NkQKC5doO/YL9gsO61bqaxgveKktkiJWZ3XyyhL1ZebgnO9wTlrU+i9b5aX73Myk1oxbicQw9KcwDGYk0qFuNQ==", + "dev": true, + "requires": { + "core-js": "^3.0.1" + } + }, + "@storybook/html": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/html/-/html-5.2.8.tgz", + "integrity": "sha512-8ZuRjDx6IWyHLjeqkdW+jRLz8tZdKNtWslWVTdCmQfIop2Dkpr8/KWSvRYtkzrrn6f9pEFa1b9ux7zWDDmsnvw==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.8", + "@storybook/core": "5.2.8", + "@types/webpack-env": "^1.13.9", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "global": "^4.3.2", + "html-loader": "^0.5.5", + "regenerator-runtime": "^0.12.1" + } + }, + "@storybook/node-logger": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.2.8.tgz", + "integrity": "sha512-3TK5mx6VWbfJO+WUrqwPhTbTQ4qESTnwJY/02xPzOhvuC6tIG1QOxzi+Rq6rFlwxTpUuWh6iyDYnGIqFFQywkA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "core-js": "^3.0.1", + "npmlog": "^4.1.2", + "pretty-hrtime": "^1.0.3", + "regenerator-runtime": "^0.12.1" + } + }, + "@storybook/router": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.2.8.tgz", + "integrity": "sha512-wnbyKESUMyv9fwo9W+n4Fev/jXylB8whpjtHrOttjguUOYX1zGSHdwNI66voPetbtVLxUeHyJteJwdyRDSirJg==", + "dev": true, + "requires": { + "@reach/router": "^1.2.1", + "@types/reach__router": "^1.2.3", + "core-js": "^3.0.1", + "global": "^4.3.2", + "lodash": "^4.17.15", + "memoizerific": "^1.11.3", + "qs": "^6.6.0" + } + }, + "@storybook/theming": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.2.8.tgz", + "integrity": "sha512-rGb66GkXb0jNJMH8UQ3Ru4FL+m1x0+UdxM8a8HSE/qb1GMv2qOwjVETfAL6nVL9u6ZmrtbhHoero4f6xDwZdRg==", + "dev": true, + "requires": { + "@emotion/core": "^10.0.14", + "@emotion/styled": "^10.0.14", + "@storybook/client-logger": "5.2.8", + "common-tags": "^1.8.0", + "core-js": "^3.0.1", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.14", + "global": "^4.3.2", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "prop-types": "^15.7.2", + "resolve-from": "^5.0.0" + } + }, + "@storybook/ui": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.2.8.tgz", + "integrity": "sha512-7t1ARBfylhEsLmGsZBUCj1Wf1oAgCDDrf7fi+Fhdg5Rr16CMoBbe24Gv/mPYv01/pUDhGodxzltKGX5x0Hto2w==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.8", + "@storybook/api": "5.2.8", + "@storybook/channels": "5.2.8", + "@storybook/client-logger": "5.2.8", + "@storybook/components": "5.2.8", + "@storybook/core-events": "5.2.8", + "@storybook/router": "5.2.8", + "@storybook/theming": "5.2.8", + "copy-to-clipboard": "^3.0.8", + "core-js": "^3.0.1", + "core-js-pure": "^3.0.1", + "emotion-theming": "^10.0.14", + "fast-deep-equal": "^2.0.1", + "fuse.js": "^3.4.4", + "global": "^4.3.2", + "lodash": "^4.17.15", + "markdown-to-jsx": "^6.9.3", + "memoizerific": "^1.11.3", + "polished": "^3.3.1", + "prop-types": "^15.7.2", + "qs": "^6.6.0", + "react": "^16.8.3", + "react-dom": "^16.8.3", + "react-draggable": "^4.0.3", + "react-helmet-async": "^1.0.2", + "react-hotkeys": "2.0.0-pre4", + "react-sizeme": "^2.6.7", + "regenerator-runtime": "^0.13.2", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", + "store2": "^2.7.1", + "telejson": "^3.0.2", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "dev": true + }, + "@babel/core": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.2.tgz", + "integrity": "sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.2", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.2.tgz", + "integrity": "sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.2", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-function-name": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", + "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", + "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helpers": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz", + "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", + "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.2", + "@babel/types": "^7.14.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", + "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "caniuse-lite": { + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.728", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.728.tgz", + "integrity": "sha512-SHv4ziXruBpb1Nz4aTuqEHBYi/9GNCJMYIJgDEXrp/2V01nFXMNFUTli5Z85f5ivSkioLilQatqBYFB44wNJrA==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "dev": true, + "requires": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + } + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", + "dev": true + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/history": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.5.tgz", + "integrity": "sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw==", + "dev": true + }, + "@types/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==", + "dev": true + }, + "@types/is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.0.tgz", + "integrity": "sha512-iTs9HReBu7evG77Q4EC8hZnqRt57irBDkK9nvmHroiOIVwYMQc4IvYvdRgwKfYepunIY7Oh/dBuuld+Gj9uo6w==", + "dev": true + }, + "@types/jquery": { + "version": "3.3.33", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.33.tgz", + "integrity": "sha512-U6IdXYGkfUI42SR79vB2Spj+h1Ly3J3UZjpd8mi943lh126TK7CB+HZOxGh2nM3IySor7wqVQdemD/xtydsBKA==", + "dev": true, + "requires": { + "@types/sizzle": "*" + } + }, + "@types/mdast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", + "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "dev": true, + "requires": { + "@types/unist": "*" } }, "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "@types/mustache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.0.1.tgz", + "integrity": "sha512-wH6Tu9mbiOt0n5EvdoWy0VGQaJMHfLIxY/6wS0xLC7CV1taM6gESEzcYy0ZlWvxxiiljYvfDIvz4hHbUUDRlhw==", "dev": true }, "@types/node": { - "version": "12.0.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.7.tgz", - "integrity": "sha512-1YKeT4JitGgE4SOzyB9eMwO0nGVNkNEsm9qlIt1Lqm/tG2QEiSMTD4kS3aO6L+w5SClLVxALmIBESK6Mk5wX0A==", + "version": "13.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", + "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==", "dev": true }, + "@types/node-fetch": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", + "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "dev": true + }, + "@types/reach__router": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.0.tgz", + "integrity": "sha512-0aL79bFPJzJOJOOMZm2301ErQVaveBdpW88uuavXymUlcYIAOCmI1ujJ2XLH6Mzn76O94eQCHIl1FDzNNKJCYA==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react": { + "version": "16.9.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.23.tgz", + "integrity": "sha512-SsGVT4E7L2wLN3tPYLiF20hmZTPGuzaayVunfgXzUn1x4uHVsKH6QDJQ/TdpHqwsTLd4CwrmQ2vOgxN7gE24gw==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-syntax-highlighter": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-10.1.0.tgz", + "integrity": "sha512-dF49hC4FZp1dIKyzacOrHvqMUe8U2IXyQCQXOcT1e6n64gLBp+xM6qGtPsThIT9XjiIHSg2W5Jc2V5IqekBfnA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-textarea-autosize": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/react-textarea-autosize/-/react-textarea-autosize-4.3.5.tgz", + "integrity": "sha512-PiDL83kPMTolyZAWW3lyzO6ktooTb9tFTntVy7CA83/qFLWKLJ5bLeRboy6J6j3b1e8h2Eec6gBTEOOJRjV14A==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/tapable": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz", + "integrity": "sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.0.tgz", + "integrity": "sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", "dev": true }, - "@types/vfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", - "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", + "@types/webpack": { + "version": "4.41.28", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.28.tgz", + "integrity": "sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ==", "dev": true, "requires": { + "@types/anymatch": "*", "@types/node": "*", - "@types/unist": "*", - "@types/vfile-message": "*" + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "@types/vfile-message": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-1.0.1.tgz", - "integrity": "sha512-mlGER3Aqmq7bqR1tTTIVHq8KSAFFRyGbrxuM8C/H82g6k7r2fS+IMEkIu3D7JHzG10NvPdR8DNx0jr0pwpp4dA==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/unist": "*" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "@types/webpack-env": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.1.tgz", + "integrity": "sha512-eWN5ElDTeBc5lRDh95SqA8x18D0ll2pWudU3uWiyfsRmIZcmUXpEsxPU+7+BsdCrO2vfLRC629u/MmjbmF+2tA==", "dev": true }, + "@types/webpack-sources": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", + "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@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": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "airbnb-js-shims": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz", + "integrity": "sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "array.prototype.flatmap": "^1.2.1", + "es5-shim": "^4.5.13", + "es6-shim": "^0.35.5", + "function.prototype.name": "^1.1.0", + "globalthis": "^1.0.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0 || ^1.0.0", + "object.getownpropertydescriptors": "^2.0.3", + "object.values": "^1.1.0", + "promise.allsettled": "^1.0.0", + "promise.prototype.finally": "^3.1.0", + "string.prototype.matchall": "^4.0.0 || ^3.0.1", + "string.prototype.padend": "^3.0.0", + "string.prototype.padstart": "^3.0.0", + "symbol.prototype.description": "^1.0.0" + } + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "dependencies": { + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + } } }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { @@ -281,6 +2328,58 @@ "color-convert": "^1.9.0" } }, + "ansi-to-html": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", + "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", + "dev": true, + "requires": { + "entities": "^1.1.2" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "app-root-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg=", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -308,12 +2407,29 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -335,28 +2451,143 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "array.prototype.flatmap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", + "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + } + }, + "array.prototype.map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", + "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.4" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, "atob": { @@ -366,24 +2597,429 @@ "dev": true }, "autoprefixer": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.0.tgz", - "integrity": "sha512-kuip9YilBqhirhHEGHaBTZKXL//xxGnzvsD0FtBQa6z+A69qZD6s/BAX9VzDF1i9VKDquTJDQaPLSEhOnL6FvQ==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", + "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "requires": { - "browserslist": "^4.6.1", - "caniuse-lite": "^1.0.30000971", + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.16", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true, + "optional": true + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "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" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-helper-evaluate-path": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", + "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", + "dev": true + }, + "babel-helper-flip-expressions": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", + "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", + "dev": true + }, + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true + }, + "babel-helper-is-void-0": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", + "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", + "dev": true + }, + "babel-helper-mark-eval-scopes": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", + "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", + "dev": true + }, + "babel-helper-remove-or-void": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", + "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", + "dev": true + }, + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", + "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", + "dev": true + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + } + } + }, + "babel-plugin-add-react-displayname": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz", + "integrity": "sha1-M51M3be2X9YtHfnbn+BN4TQSK9U=", + "dev": true + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-emotion": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.29.tgz", + "integrity": "sha512-7Jpi1OCxjyz0k163lKtqP+LHMg5z3S6A7vMBfHnF06l2unmtsOmFDzZBpGf0CWo1G4m8UACfVcDJiSiRuu/cSw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-minify-builtins": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", + "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", + "dev": true + }, + "babel-plugin-minify-constant-folding": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", + "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-minify-dead-code-elimination": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", + "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-mark-eval-scopes": "^0.4.3", + "babel-helper-remove-or-void": "^0.4.3", + "lodash": "^4.17.11" + } + }, + "babel-plugin-minify-flip-comparisons": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", + "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, + "babel-plugin-minify-guarded-expressions": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", + "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-flip-expressions": "^0.4.3" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", + "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", + "dev": true + }, + "babel-plugin-minify-mangle-names": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", + "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", + "dev": true, + "requires": { + "babel-helper-mark-eval-scopes": "^0.4.3" + } + }, + "babel-plugin-minify-numeric-literals": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", + "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", + "dev": true + }, + "babel-plugin-minify-replace": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", + "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", + "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0", + "babel-helper-flip-expressions": "^0.4.3", + "babel-helper-is-nodes-equiv": "^0.0.1", + "babel-helper-to-multiple-sequence-expressions": "^0.5.0" + } + }, + "babel-plugin-minify-type-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", + "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.3" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", + "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", + "dev": true + }, + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", + "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", + "dev": true + }, + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", + "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", + "dev": true + }, + "babel-plugin-transform-minify-booleans": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", + "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", + "dev": true + }, + "babel-plugin-transform-property-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", + "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "babel-plugin-transform-regexp-constructors": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", + "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", + "dev": true + }, + "babel-plugin-transform-remove-console": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", + "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", + "dev": true + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", + "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", + "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.5.0" + } + }, + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", + "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", + "dev": true + }, + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", + "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", + "dev": true + }, + "babel-preset-minify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", + "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "^0.5.0", + "babel-plugin-minify-constant-folding": "^0.5.0", + "babel-plugin-minify-dead-code-elimination": "^0.5.1", + "babel-plugin-minify-flip-comparisons": "^0.4.3", + "babel-plugin-minify-guarded-expressions": "^0.4.4", + "babel-plugin-minify-infinity": "^0.4.3", + "babel-plugin-minify-mangle-names": "^0.5.0", + "babel-plugin-minify-numeric-literals": "^0.4.3", + "babel-plugin-minify-replace": "^0.5.0", + "babel-plugin-minify-simplify": "^0.5.1", + "babel-plugin-minify-type-constructors": "^0.4.3", + "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", + "babel-plugin-transform-member-expression-literals": "^6.9.4", + "babel-plugin-transform-merge-sibling-variables": "^6.9.4", + "babel-plugin-transform-minify-booleans": "^6.9.4", + "babel-plugin-transform-property-literals": "^6.9.4", + "babel-plugin-transform-regexp-constructors": "^0.4.3", + "babel-plugin-transform-remove-console": "^6.9.4", + "babel-plugin-transform-remove-debugger": "^6.9.4", + "babel-plugin-transform-remove-undefined": "^0.5.0", + "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", + "babel-plugin-transform-undefined-to-void": "^6.9.4", + "lodash": "^4.17.11" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } } }, "bail": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz", - "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "dev": true }, "balanced-match": { @@ -444,6 +3080,199 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", + "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boxen": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", + "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } } } }, @@ -483,18 +3312,311 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, - "browserslist": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.2.tgz", - "integrity": "sha512-2neU/V0giQy9h3XMPwLhEY3+Ao0uHSwHvU8Q1Ea6AgLVL1sXbX3dzPrJ8NWe5Hi4PoTkCYXOtVR9rfRLI0J/8Q==", + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "brotli-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-0.1.0.tgz", + "integrity": "sha512-5ny7BNvpe2TSmdafF1T9dnFYp3AIrJ8qJt29K0DQJzORlK38LBim/CmlY26JtreV6SWmXza7Oa+9m61SzvxR0Q==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000974", - "electron-to-chromium": "^1.3.150", - "node-releases": "^1.1.23" + "duplexer": "^0.1.1", + "iltorb": "^2.4.3" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30001230", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz", + "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.740", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.740.tgz", + "integrity": "sha512-Mi2m55JrX2BFbNZGKYR+2ItcGnR4O5HhrvgoRRyZQlaMGQULqDhoGkLWHzJoshSzi7k1PUofxcDbNhlFrDZNhg==", + "dev": true + }, + "node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "dev": true + } + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bundlesize": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-0.18.1.tgz", + "integrity": "sha512-NAsKBH6BeVmDopoa4tod0m5/koM7iLY3saKyGn7wyAravBYmKNUpDJba4zyVhwRm5Dw9WXv8FIO0N//tCkx68Q==", + "dev": true, + "requires": { + "axios": "^0.21.1", + "brotli-size": "0.1.0", + "bytes": "^3.1.0", + "ci-env": "^1.4.0", + "commander": "^2.20.0", + "cosmiconfig": "^5.2.1", + "github-build": "^1.2.2", + "glob": "^7.1.4", + "gzip-size": "^4.0.0", + "prettycli": "^1.4.3" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, "cache-base": { @@ -512,6 +3634,14 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "call-me-maybe": { @@ -552,34 +3682,67 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "dev": true, + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" } }, - "caniuse-lite": { - "version": "1.0.30000974", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz", - "integrity": "sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==", + "can-use-dom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", + "integrity": "sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=", "dev": true }, - "ccount": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz", - "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==", + "caniuse-lite": { + "version": "1.0.30001035", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz", + "integrity": "sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==", "dev": true }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -592,27 +3755,21 @@ } }, "character-entities": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz", - "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==", - "dev": true - }, - "character-entities-html4": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.3.tgz", - "integrity": "sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true }, "character-entities-legacy": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz", - "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", "dev": true }, "character-reference-invalid": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz", - "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true }, "chardet": { @@ -621,6 +3778,57 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "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" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-env": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.16.0.tgz", + "integrity": "sha512-ucF9caQEX5wQlY449KZBIJPx91+kRg9tJ3tWSc4+KzrvC5KNiPm/3g1noP8VhdI3046+Vw3jLmKAD0fjCRJTmw==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -641,9 +3849,44 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==", + "dev": true + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -653,32 +3896,149 @@ "restore-cursor": "^2.0.0" } }, + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "clone-regexp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", - "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", + "clipboard": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "dev": true, + "optional": true, "requires": { - "is-regexp": "^1.0.0", - "is-supported-regexp-flag": "^1.0.0" + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" } }, - "coffeescript": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", - "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, - "collapse-white-space": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz", - "integrity": "sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==", + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { @@ -706,10 +4066,56 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "comment-parser": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.5.tgz", + "integrity": "sha512-iH9YA35ccw94nx5244GVkpyC9eVTsL71jZz6iz5w6RIf79JLF2AsXHXq9p6Oaohyl3sx5qSMnGsWUDFIAfWL4w==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "component-emitter": { @@ -724,91 +4130,438 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "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": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", "dev": true, "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" }, "dependencies": { - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "dev": true } } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "core-js-pure": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz", + "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "corejs-upgrade-webpack-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-J0QMp9GNoiw91Kj/dkIQFZeiCXgXoja/Wlht1SPybxerBWh4NCmb0pOgCv61lrlQZETwvVVfAFAA3IqoEO9aqQ==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", + "resolve-from": "^5.0.0", + "webpack": "^4.38.0" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@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": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "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": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "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" + } + }, + "create-react-context": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", + "dev": true, + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "array-find-index": "^1.0.1" + "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" } }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "css-loader": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", + "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" + "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.23", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.1", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "css-rule-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz", + "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=", + "dev": true, + "requires": { + "css-tokenize": "^1.0.1", + "duplexer2": "0.0.2", + "ldjson-stream": "^1.2.1", + "through2": "^0.6.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tokenize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", + "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^1.0.33" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csso": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.37" + } + }, + "csstype": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz", + "integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" } }, "debug": { @@ -834,6 +4587,14 @@ "requires": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } } }, "decode-uri-component": { @@ -842,12 +4603,56 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "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": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deep-object-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.0.tgz", + "integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -886,15 +4691,115 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, + "detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true } } }, "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", "dev": true, "requires": { + "arrify": "^1.0.1", "path-type": "^3.0.0" }, "dependencies": { @@ -924,16 +4829,147 @@ "esutils": "^2.0.2" } }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "doiuse": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-4.4.1.tgz", + "integrity": "sha512-TUpr1/YNg20IB09tZmwGCTsTQoxj8jUld/hUZprZMj8vj0VpAJySXEWCr8WMvqvgzk0/kG/FxeSMGKode4UjPg==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "browserslist": "^4.16.1", + "caniuse-lite": "^1.0.30001179", + "css-rule-stream": "^1.1.0", + "duplexer2": "0.0.2", + "ldjson-stream": "^1.2.1", + "multimatch": "^5.0.0", + "postcss": "^8.2.4", + "source-map": "^0.7.3", + "through2": "^4.0.2", + "yargs": "^16.2.0" + }, + "dependencies": { + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "caniuse-lite": { + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.728", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.728.tgz", + "integrity": "sha512-SHv4ziXruBpb1Nz4aTuqEHBYi/9GNCJMYIJgDEXrp/2V01nFXMNFUTli5Z85f5ivSkioLilQatqBYFB44wNJrA==", + "dev": true + }, + "node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "dev": true + }, + "postcss": { + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + } } }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + } + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, "domelementtype": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", @@ -949,43 +4985,238 @@ "domelementtype": "1" } }, + "domino": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.4.tgz", + "integrity": "sha512-l70mlQ7IjPKC8kT7GljQXJZmt5OqFL+RE91ik5y5WWQtsd9wP8R7gpFnNu96fK5MqAAZRXfLLsnzKtkty5fWGQ==", + "dev": true + }, "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { "dom-serializer": "0", "domelementtype": "1" } }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "no-case": "^3.0.3", + "tslib": "^1.10.0" } }, - "electron-to-chromium": { - "version": "1.3.154", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.154.tgz", - "integrity": "sha512-r3jVJRWvQIKDdjAbtmvJ7NihBFNUpU4VJKsslAzruv9dnYde3v8U2T7J62Vap3c6l6Ku4J56kxlciIO/E93cQg==", + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", "dev": true }, + "dotenv-defaults": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz", + "integrity": "sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q==", + "dev": true, + "requires": { + "dotenv": "^6.2.0" + } + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "dotenv-webpack": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz", + "integrity": "sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw==", + "dev": true, + "requires": { + "dotenv-defaults": "^1.0.2" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.376", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz", + "integrity": "sha512-cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw==", + "dev": true + }, + "element-resize-detector": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.1.tgz", + "integrity": "sha512-BdFsPepnQr9fznNPF9nF4vQ457U/ZJXQDSNF1zBe7yaga8v9AdZf3/NElYxFdUh7SitSGt040QygiTo6dtatIw==", + "dev": true, + "requires": { + "batch-processor": "1.0.0" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "emotion-theming": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.0.27.tgz", + "integrity": "sha512-MlF1yu/gYh8u+sLUqA0YuA9JX0P4Hb69WlKc/9OLo+WCXuX6sy/KoIa+qJimgmr2dWqnypYKYPX37esjDBbhdw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/weak-memoize": "0.2.5", + "hoist-non-react-statics": "^3.3.0" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz", + "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==", + "dev": true, + "requires": { + "ansi-colors": "^3.2.1" + } + }, "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -995,6 +5226,99 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "dev": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-shim": { + "version": "4.5.13", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.13.tgz", + "integrity": "sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw==", + "dev": true + }, + "es6-shim": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.5.tgz", + "integrity": "sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg==", + "dev": true + }, + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "dev": true, + "requires": { + "recast": "~0.11.12", + "through": "~2.3.6" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1002,80 +5326,354 @@ "dev": true }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.3.1.tgz", + "integrity": "sha512-cQC/xj9bhWUcyi/RuMbRtC3I0eW8MH0jhRELSvpKYkWep3C6YZ2OkvcvJVUeO6gcunABmzptbXBuDoXsjHmfTA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", + "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": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.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.11", + "levn": "^0.4.1", + "lodash": "^4.17.14", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", + "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" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "eslint-config-wikimedia": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.12.0.tgz", - "integrity": "sha512-ZkmGLvwmoEacj55t8Z6VH6wUu4/XTlgkSCerHkj+VU4tmyCD4mlzvTeSaPzOEDmZTVWUoiKnB6mvUx06l7uIbw==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.16.2.tgz", + "integrity": "sha512-tQikCZT2k3z9UzvRDFAUOpVSwE/MEmKIUQQraFh9tgyPOmRY6fVkMONcFqdEuz8eyg2syW9MNvT2d1SGSMLfBg==", "dev": true, "requires": { - "eslint": "^5.16.0", - "eslint-plugin-json": "^1.4.0", - "eslint-plugin-no-jquery": "^2.0.0", - "eslint-plugin-qunit": "^4.0.0" + "eslint": "^7.2.0", + "eslint-plugin-es": "^3.0.1", + "eslint-plugin-jsdoc": "^27.1.2", + "eslint-plugin-json": "^2.1.1", + "eslint-plugin-mediawiki": "^0.2.5", + "eslint-plugin-mocha": "^7.0.1", + "eslint-plugin-no-jquery": "^2.4.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-qunit": "^4.2.0", + "eslint-plugin-vue": "^6.2.2", + "eslint-plugin-wdio": "^6.0.12" + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, + "eslint-plugin-jsdoc": { + "version": "27.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-27.1.2.tgz", + "integrity": "sha512-iWrG2ZK4xrxamoMkoyzgkukdmfqWc5Ncd6K+CnwRgxrbwjQQpzmt5Kl8GB0l12R0oUK2AF+9tGFJKNGzuyz79Q==", + "dev": true, + "requires": { + "comment-parser": "^0.7.5", + "debug": "^4.1.1", + "jsdoctypeparser": "^6.1.0", + "lodash": "^4.17.15", + "regextras": "^0.7.1", + "semver": "^6.3.0", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "eslint-plugin-json": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-1.4.0.tgz", - "integrity": "sha512-CECvgRAWtUzuepdlPWd+VA7fhyF9HT183pZnl8wQw5x699Mk/MbME/q8xtULBfooi3LUbj6fToieNmsvUcDxWA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.1.tgz", + "integrity": "sha512-Ktsab8ij33V2KFLhh4alC1FYztdmbV32DeMZYYUCZm4kKLW1s4DrleKKgtbAHSJsmshCK5QGOZtfyc2r3jCRsg==", "dev": true, "requires": { - "vscode-json-languageservice": "^3.2.1" + "lodash": "^4.17.15", + "vscode-json-languageservice": "^3.5.1" + } + }, + "eslint-plugin-mediawiki": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.5.tgz", + "integrity": "sha512-Xs5G4f1EnS6+9gFWkk28nWA9xcOEPx7YZEGsMYGLelZRAF+2DmV/PigF5N5VqoOkNBpwcbXqLD8wLfkg29aF8w==", + "dev": true, + "requires": { + "eslint-plugin-vue": "^6.2.2", + "upath": "^1.2.0" + } + }, + "eslint-plugin-mocha": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-7.0.1.tgz", + "integrity": "sha512-zkQRW9UigRaayGm/pK9TD5RjccKXSgQksNtpsXbG9b6L5I+jNx7m98VUbZ4w1H1ArlNA+K7IOH+z8TscN6sOYg==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "ramda": "^0.27.0" + }, + "dependencies": { + "ramda": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.0.tgz", + "integrity": "sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA==", + "dev": true + } } }, "eslint-plugin-no-jquery": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.0.0.tgz", - "integrity": "sha512-aFy3fMBlc630/qeasjocb9uIqmwoyOmmTQiBaDs70Aryqi9uPH0EZLPtIOshDMcGeAkyyAkcc+WuIw6bRsoLuw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.5.0.tgz", + "integrity": "sha512-RrQ380mUJJKdjgpQ/tZAJ3B3W1n3LbVmULooS2Pv5pUDcc5uVHVSJMTdUlsbvQyfo6hWP2LJ4FbOoDzENWcF7A==", "dev": true }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "eslint-plugin-qunit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-4.0.0.tgz", - "integrity": "sha512-+0i2xcYryUoLawi47Lp0iJKzkP931G5GXwIOq1KBKQc2pknV1VPjfE6b4mI2mR2RnL7WRoS30YjwC9SjQgJDXQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-4.2.0.tgz", + "integrity": "sha512-UibPK0fSshPTJauyitsHjACixpf+I5BEKqXi6WJ/WGhW31WwP7flSdBW8+Y9B46v05KYH6MJg/uZVIaiaHO5Cg==", + "dev": true + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz", + "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==", + "dev": true, + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + } + }, + "eslint-plugin-wdio": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-6.0.12.tgz", + "integrity": "sha512-qZqcU1Z0bqrqhYM1MbwIvKQxcQEGIOEclOjcveavvLZAN4ezpXb1Ogw3xu+UK13iArregJOMI6uUt+JkFmER1A==", "dev": true }, "eslint-scope": { @@ -1089,29 +5687,37 @@ } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz", + "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.2.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.2.0" + }, + "dependencies": { + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "dev": true + } } }, "esprima": { @@ -1121,12 +5727,20 @@ "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } } }, "esrecurse": { @@ -1139,37 +5753,77 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, - "execall": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", - "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", "dev": true, "requires": { - "clone-regexp": "^1.0.0" + "original": "^1.0.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "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" + } + }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } }, "expand-brackets": { "version": "2.1.4", @@ -1221,6 +5875,73 @@ } } }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1245,13 +5966,28 @@ "requires": { "is-plain-object": "^2.0.4" } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -1324,6 +6060,13 @@ } } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "optional": true + }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -1342,35 +6085,12 @@ "is-glob": "^4.0.0", "merge2": "^1.2.3", "micromatch": "^3.1.10" - }, - "dependencies": { - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "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" - } - } } }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -1379,6 +6099,51 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "dev": true, + "requires": { + "format": "^0.2.0" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -1397,6 +6162,55 @@ "flat-cache": "^2.0.1" } }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "file-system-cache": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.0.5.tgz", + "integrity": "sha1-hCWbNqK7uNPW6xAh0xMv/mTP/08=", + "dev": true, + "requires": { + "bluebird": "^3.3.5", + "fs-extra": "^0.30.0", + "ramda": "^0.21.0" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -1420,40 +6234,124 @@ } } }, - "find-up": { + "finalhandler": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "dev": true, - "requires": { - "glob": "~5.0.0" + "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" }, "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -1463,12 +6361,45 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "focus-lock": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.6.6.tgz", + "integrity": "sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw==", + "dev": true + }, + "follow-redirects": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", "dev": true }, "for-in": { @@ -1477,6 +6408,53 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz", + "integrity": "sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^2.0.4", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -1486,22 +6464,699 @@ "map-cache": "^0.2.2" } }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "dependencies": { + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + } + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.2.tgz", + "integrity": "sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "functions-have-names": "^1.2.0" + } + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "functions-have-names": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.1.tgz", + "integrity": "sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA==", + "dev": true + }, + "fuse.js": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.6.1.tgz", + "integrity": "sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "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" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "get-value": { @@ -1510,16 +7165,35 @@ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "getobject": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-build": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/github-build/-/github-build-1.2.2.tgz", + "integrity": "sha512-xHVy8w+J09eD+uBqJ4CcRPr5HTa1BYaF6vPJ67yJekCWurPzimB/ExH1SGzW5iAFC2Uvw9TD1FpSIjh56hcB9Q==", + "dev": true, + "requires": { + "axios": "0.21.1" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", "dev": true }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1557,6 +7231,16 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "dev": true }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -1583,26 +7267,34 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "globalthis": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", + "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", "dev": true, "requires": { - "@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" + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "dev": true, + "requires": { + "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" }, "dependencies": { "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } } @@ -1614,195 +7306,83 @@ "dev": true }, "gonzales-pe": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", - "integrity": "sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", "dev": true, "requires": { - "minimist": "1.1.x" - }, - "dependencies": { - "minimist": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", - "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", - "dev": true - } + "minimist": "^1.2.5" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "dev": true, + "optional": true, + "requires": { + "delegate": "^3.1.2" } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, - "grunt": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz", - "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==", - "dev": true, - "requires": { - "coffeescript": "~1.10.0", - "dateformat": "~1.0.12", - "eventemitter2": "~0.4.13", - "exit": "~0.1.1", - "findup-sync": "~0.3.0", - "glob": "~7.0.0", - "grunt-cli": "~1.2.0", - "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~2.0.0", - "grunt-legacy-util": "~1.1.1", - "iconv-lite": "~0.4.13", - "js-yaml": "~3.13.0", - "minimatch": "~3.0.2", - "mkdirp": "~0.5.1", - "nopt": "~3.0.6", - "path-is-absolute": "~1.0.0", - "rimraf": "~2.6.2" - }, - "dependencies": { - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "requires": { - "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" - } - }, - "grunt-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", - "dev": true, - "requires": { - "findup-sync": "~0.3.0", - "grunt-known-options": "~1.1.0", - "nopt": "~3.0.6", - "resolve": "~1.1.0" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "grunt-banana-checker": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/grunt-banana-checker/-/grunt-banana-checker-0.7.0.tgz", - "integrity": "sha512-HmHSK7IFIo5ygDjhjtdrpNATg3Pjb6OJLibJadWhFHDtXLcaEpkNU2tExmS6tgSaBdiprhXEd231w4dSsfHFAQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/grunt-banana-checker/-/grunt-banana-checker-0.9.0.tgz", + "integrity": "sha512-SqPiB6OazWqR8USL0NymtuT5Br3mD9WBBsM1rHC/3wIi2SrZNM6/+j9CIeuEM5oCn+AtO2Y0+rzzFyOdC9afAg==", "dev": true }, - "grunt-eslint": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-21.0.0.tgz", - "integrity": "sha512-HJocD9P35lpCvy6pPPCTgzBavzckrT1nt7lpqV55Vy8E6LQJv4RortXoH1jJTYhO5DYY7RPATv7Uc4383PUYqQ==", + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", "dev": true, "requires": { - "chalk": "^2.1.0", - "eslint": "^5.0.0" + "duplexer": "^0.1.1", + "pify": "^4.0.1" } }, - "grunt-known-options": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", - "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", - "dev": true - }, - "grunt-legacy-log": { + "har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", - "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true, + "optional": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "optional": true, "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.5" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, - "grunt-legacy-log-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", - "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", - "dev": true, - "requires": { - "chalk": "~2.4.1", - "lodash": "~4.17.10" - } + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true }, - "grunt-legacy-util": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", - "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "async": "~1.5.2", - "exit": "~0.1.1", - "getobject": "~0.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.10", - "underscore.string": "~3.3.4", - "which": "~1.3.0" - } - }, - "grunt-stylelint": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/grunt-stylelint/-/grunt-stylelint-0.10.1.tgz", - "integrity": "sha512-7MAHUqySn2x0yCS4SEkrv5pVoTrP44j8IZGEF6UTQD9Nm7K96cGEhB6FFMWk+uXbRHiiU+c4s3B0h4rpT8nOyQ==", - "dev": true, - "requires": { - "chalk": "1.1.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "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" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "function-bind": "^1.1.1" } }, "has-ansi": { @@ -1812,14 +7392,6 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } } }, "has-flag": { @@ -1828,6 +7400,18 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -1837,6 +7421,14 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "has-values": { @@ -1860,24 +7452,244 @@ } } }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hast-util-parse-selector": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz", + "integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA==", "dev": true }, + "hastscript": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", + "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", + "dev": true, + "requires": { + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "requires": { + "react-is": "^16.7.0" + } + }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", "dev": true }, + "html-loader": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz", + "integrity": "sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==", + "dev": true, + "requires": { + "es6-templates": "^0.2.3", + "fastparse": "^1.1.1", + "html-minifier": "^3.5.8", + "loader-utils": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + } + } + }, + "html-minifier-terser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.0.4.tgz", + "integrity": "sha512-fHwmKQ+GzhlqdxEtwrqLT7MSuheiA+rif5/dZgbz3GjoMXJzcRzy1L9NXoiiyxrnap+q5guSiv8Tz5lrh9g42g==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + } + } + }, "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, + "html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", + "dev": true, + "requires": { + "@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.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + } + }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", @@ -1890,8 +7702,66 @@ "entities": "^1.1.1", "inherits": "^2.0.1", "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1901,26 +7771,107 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "iltorb": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-2.4.5.tgz", + "integrity": "sha512-EMCMl3LnnNSZJS5QrxyZmMTaAC4+TJkM5woD+xbpm9RB+mFYCr7C05GFE3TEGCsVQSVHmjX+3sf5AiwsylNInQ==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "nan": "^2.14.0", + "npmlog": "^4.1.2", + "prebuild-install": "^5.3.3", + "which-pm-runs": "^1.0.0" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true }, "imurmurhash": { @@ -1930,13 +7881,10 @@ "dev": true }, "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true }, "indexes-of": { "version": "1.0.1", @@ -1944,6 +7892,12 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1955,21 +7909,21 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -1978,7 +7932,7 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", @@ -1988,11 +7942,38 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -2000,10 +7981,56 @@ "dev": true, "requires": { "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } } } } }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -2025,39 +8052,63 @@ } }, "is-alphabetical": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", - "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", - "dev": true - }, - "is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true }, "is-alphanumerical": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", - "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, "requires": { "is-alphabetical": "^1.0.0", "is-decimal": "^1.0.0" } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -2078,10 +8129,16 @@ } } }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, "is-decimal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", - "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true }, "is-descriptor": { @@ -2121,19 +8178,19 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", "dev": true }, "is-glob": { @@ -2146,9 +8203,15 @@ } }, "is-hexadecimal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", - "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, "is-number": { @@ -2171,25 +8234,19 @@ } } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", "dev": true, "requires": { - "isobject": "^3.0.1" + "isobject": "^4.0.0" } }, "is-promise": { @@ -2198,28 +8255,64 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, - "is-supported-regexp-flag": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", - "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", "dev": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", "dev": true }, - "is-whitespace-character": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", - "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, "is-windows": { @@ -2228,10 +8321,10 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, - "is-word-character": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz", - "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, "isarray": { @@ -2247,11 +8340,34 @@ "dev": true }, "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", "dev": true }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "iterate-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "dev": true + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "dev": true, + "requires": { + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2268,6 +8384,90 @@ "esprima": "^4.0.0" } }, + "js2xmlparser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", + "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", + "dev": true, + "requires": { + "xmlcreate": "^2.0.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdoc": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz", + "integrity": "sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw==", + "dev": true, + "requires": { + "@babel/parser": "^7.9.4", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.1", + "klaw": "^3.0.0", + "markdown-it": "^10.0.0", + "markdown-it-anchor": "^5.2.7", + "marked": "^2.0.3", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.13.1" + }, + "dependencies": { + "@babel/parser": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz", + "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==", + "dev": true + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "jsdoc-wmf-theme": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/jsdoc-wmf-theme/-/jsdoc-wmf-theme-0.0.3.tgz", + "integrity": "sha512-jpszk0hcjY7bD1sCd8JrBdtcoudG0h9FbJTjdq8WOSEtUBNWgtIc7s1ccDoYnK/bp4OEuA7xH0xtpqe0SVutsw==", + "dev": true, + "requires": { + "domino": "^2.0.1", + "lunr": "2.3.0", + "taffydb": "^2.6.2" + } + }, + "jsdoctypeparser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz", + "integrity": "sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA==", + "dev": true + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -2280,6 +8480,13 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2292,40 +8499,188 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { "minimist": "^1.2.0" + } + }, + "jsonc-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", + "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "known-css-properties": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.20.0.tgz", + "integrity": "sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw==", + "dev": true + }, + "lazy-universal-dotenv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz", + "integrity": "sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.0", + "app-root-dir": "^1.0.2", + "core-js": "^3.0.4", + "dotenv": "^8.0.0", + "dotenv-expand": "^5.1.0" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", "dev": true } } }, - "jsonc-parser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.1.0.tgz", - "integrity": "sha512-n9GrT8rrr2fhvBbANa1g+xFmgGK5X91KFeDwlKQ3+SJfmH5+tKv/M/kahx/TXOMflfWHKGKqKyfHQaLKTNzJ6w==", - "dev": true + "ldjson-stream": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", + "integrity": "sha1-kb7O2lrE7SsX5kn7d356v6AYnCs=", + "dev": true, + "requires": { + "split2": "^0.2.1", + "through2": "^0.6.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "less": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.8.1.tgz", + "integrity": "sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } }, - "known-css-properties": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.13.0.tgz", - "integrity": "sha512-6VWDxNr7cQXPDtMdCWLZMK3E8hdLrpyPPRdx6RbyvqklqgM6/XNFsVopv8QOZ+hRB6iHG/urEDwzlWbmMCv/kw==", - "dev": true + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } }, "leven": { "version": "3.1.0", @@ -2333,76 +8688,233 @@ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "uc.micro": "^1.0.1" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } } } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^2.0.1" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "longest-streak": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", - "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "dev": true }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } + }, + "lowlight": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.2.tgz", + "integrity": "sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q==", + "dev": true, + "requires": { + "fault": "^1.0.2", + "highlight.js": "~9.12.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "lunr": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.0.tgz", + "integrity": "sha1-TXwMoSvdHgRHsMExuRQgkpdAyI8=", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" } }, "map-cache": { @@ -2412,9 +8924,15 @@ "dev": true }, "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", + "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", + "dev": true + }, + "map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", "dev": true }, "map-visit": { @@ -2426,116 +8944,344 @@ "object-visit": "^1.0.0" } }, - "markdown-escapes": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz", - "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==", + "markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + } + } + }, + "markdown-it-anchor": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", "dev": true }, - "markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "markdown-to-jsx": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", + "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", + "dev": true, + "requires": { + "prop-types": "^15.6.2", + "unquote": "^1.1.0" + } + }, + "marked": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz", + "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==", "dev": true }, "mathml-tag-names": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", - "integrity": "sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true }, - "mdast-util-compact": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz", - "integrity": "sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==", + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "requires": { - "unist-util-visit": "^1.1.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "dependencies": { + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "dependencies": { + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "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" + } + } + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", + "dev": true, + "requires": { + "map-or-similar": "^1.5.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "requires": { - "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" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true } } }, - "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "debug": "^4.0.0", + "parse-entities": "^2.0.0" }, "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" + "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" } } } }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "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" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2546,19 +9292,46 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, "requires": { "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + } + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" } }, "mixin-deep": { @@ -2579,16 +9352,51 @@ "requires": { "is-plain-object": "^2.0.4" } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "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": { @@ -2597,12 +9405,57 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + } + } + }, + "mustache": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-3.0.1.tgz", + "integrity": "sha512-jFI/4UVRsRYdUbuDTKT7KzfOp7FiD5WzYmmwNwXyUVypC0xjoTL78Fqc0jHUPIvvGD+6DQSPHIt1NE7D1ArsqA==", + "dev": true + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -2622,48 +9475,177 @@ "to-regex": "^3.0.1" } }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-releases": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz", - "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==", + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", "dev": true, "requires": { - "semver": "^5.3.0" + "lower-case": "^2.0.1", + "tslib": "^1.10.0" } }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "node-abi": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz", + "integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==", "dev": true, "requires": { - "abbrev": "1" + "semver": "^5.4.1" } }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.52", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", + "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true + }, "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", @@ -2676,6 +9658,36 @@ "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", "dev": true }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -2688,6 +9700,13 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "optional": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2725,6 +9744,24 @@ } } }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -2732,6 +9769,60 @@ "dev": true, "requires": { "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.pick": { @@ -2741,6 +9832,35 @@ "dev": true, "requires": { "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" } }, "once": { @@ -2761,50 +9881,113 @@ "mimic-fn": "^1.0.0" } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", "dev": true, "requires": { - "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" + "is-wsl": "^1.1.0" } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "dev": true, + "requires": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2814,6 +9997,20 @@ "callsites": "^3.0.0" } }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "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": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", @@ -2829,12 +10026,31 @@ } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "dev": true, "requires": { - "error-ex": "^1.2.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "dev": true, + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" } }, "pascalcase": { @@ -2843,6 +10059,12 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -2850,13 +10072,10 @@ "dev": true }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -2864,12 +10083,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -2882,44 +10095,137 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true + }, "picomatch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", - "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "pinkie": "^2.0.0" + "find-up": "^3.0.0" } }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "pnp-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-ExrNwuFH3DudHwWY2uRMqyiCOBEDdhQYHIAsqW/CM6hIZlSgXC/ma/p08FoNOUhVyh9hl1NGnMpR94T5i3SHaQ==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.2" + } + }, + "polished": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.4.tgz", + "integrity": "sha512-x9PKeExyI9AhWrJP3Q57I1k7GInujjiVBJMPFmycj9hX1yCOo/X9eu9eZwxgOziiXge3WbFQ5XOmkzunOntBSA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.6.3" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -2927,9 +10233,9 @@ "dev": true }, "postcss": { - "version": "7.0.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", - "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -2937,6 +10243,12 @@ "supports-color": "^6.1.0" }, "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -2948,6 +10260,15 @@ } } }, + "postcss-flexbugs-fixes": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz", + "integrity": "sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, "postcss-html": { "version": "0.36.0", "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", @@ -2957,15 +10278,6 @@ "htmlparser2": "^3.10.0" } }, - "postcss-jsx": { - "version": "0.36.1", - "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.1.tgz", - "integrity": "sha512-xaZpy01YR7ijsFUtu5rViYCFHurFIPHir+faiOQp8g/NfTfWqZCKDhKrydQZ4d8WlSAmVdXGwLjpFbsNUI26Sw==", - "dev": true, - "requires": { - "@babel/core": ">=7.2.2" - } - }, "postcss-less": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", @@ -2975,14 +10287,66 @@ "postcss": "^7.0.14" } }, - "postcss-markdown": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-markdown/-/postcss-markdown-0.36.0.tgz", - "integrity": "sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==", + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", "dev": true, "requires": { - "remark": "^10.0.1", - "unist-util-find-all-after": "^1.0.2" + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" } }, "postcss-media-query-parser": { @@ -2991,16 +10355,45 @@ "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", "dev": true }, - "postcss-reporter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", - "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", "dev": true, "requires": { - "chalk": "^2.4.1", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "postcss": "^7.0.7" + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", + "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" } }, "postcss-resolve-nested-selector": { @@ -3010,40 +10403,40 @@ "dev": true }, "postcss-safe-parser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", - "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", "dev": true, "requires": { - "postcss": "^7.0.0" + "postcss": "^7.0.26" } }, "postcss-sass": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.3.5.tgz", - "integrity": "sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", "dev": true, "requires": { - "gonzales-pe": "^4.2.3", - "postcss": "^7.0.1" + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" } }, "postcss-scss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.0.0.tgz", - "integrity": "sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", "dev": true, "requires": { - "postcss": "^7.0.0" + "postcss": "^7.0.6" } }, "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -3055,15 +10448,140 @@ "dev": true }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, + "pre-commit": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", + "integrity": "sha1-287g7p3nI15X95xW186UZBpp7sY=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "spawn-sync": "^1.0.15", + "which": "1.2.x" + }, + "dependencies": { + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "prebuild-install": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + } + }, "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "prettycli": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prettycli/-/prettycli-1.4.3.tgz", + "integrity": "sha512-KLiwAXXfSWXZqGmZlnKPuGMTFp+0QbcySplL1ft9gfteT/BNsG64Xo8u2Qr9r+qnsIZWBQ66Zs8tg+8s2fmzvw==", + "dev": true, + "requires": { + "chalk": "2.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "^2.0.0" + } + } + } + }, + "prismjs": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.23.0.tgz", + "integrity": "sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA==", + "dev": true, + "requires": { + "clipboard": "^2.0.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { @@ -3072,58 +10590,837 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise.allsettled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", + "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "dev": true, + "requires": { + "array.prototype.map": "^1.0.1", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "iterate-value": "^1.0.0" + } + }, + "promise.prototype.finally": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz", + "integrity": "sha512-A2HuJWl2opDH0EafgdjwEw7HysI8ff/n4lW4QEVBCUXFk9QeGecBWv0Deph0UmLe3tTNYegz8MOjsVuE6SMoJA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.0", + "function-bind": "^1.1.1" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "property-information": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.4.0.tgz", + "integrity": "sha512-nmMWAm/3vKFGmmOWOcdLjgq/Hlxa+hsuR/px1Lp/UGEyc5A22A6l78Shc2C0E71sPmAqglni+HrS7L7VJ7AUCA==", + "dev": true, + "requires": { + "xtend": "^4.0.0" + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "dev": true, + "optional": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "ramda": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz", + "integrity": "sha1-oAGr7bP/YQd9T/HVd9RN536NCjU=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-2.0.0.tgz", + "integrity": "sha512-kZnO5MoIyrojfrPWqrhFNLZemIAX8edMOCp++yC5RKxzFB3m92DqKNhKlU6+FvpOhWtvyh3jOaD7J6/9tpdIKg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, + "react": { + "version": "16.13.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.0.tgz", + "integrity": "sha512-TSavZz2iSLkq5/oiE7gnFzmURKZMltmi193rm5HEoUDAXpzT9Kzw6oNZnGoai/4+fUnm7FqS5dwgUL34TujcWQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-clientside-effect": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz", + "integrity": "sha512-nRmoyxeok5PBO6ytPvSjKp9xwXg9xagoTK1mMjwnQxqM9Hd7MNPl+LS1bOSOe+CV2+4fnEquc7H/S8QD3q697A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "react-dev-utils": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.1.0.tgz", + "integrity": "sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.5.5", + "address": "1.1.2", + "browserslist": "4.7.0", + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "1.0.5", + "filesize": "3.6.1", + "find-up": "3.0.0", + "fork-ts-checker-webpack-plugin": "1.5.0", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "6.5.0", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^6.3.0", + "pkg-up": "2.0.0", + "react-error-overlay": "^6.0.3", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "sockjs-client": "1.4.0", + "strip-ansi": "5.2.0", + "text-table": "0.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "browserslist": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "inquirer": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "dev": true, + "requires": { + "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" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + } + } + }, + "react-dom": { + "version": "16.13.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.0.tgz", + "integrity": "sha512-y09d2c4cG220DzdlFkPTnVvGTszVvNpC73v+AaLGLHbkpy3SSgvYq8x0rNwPJ/Rk/CicTNgk0hbHNw1gMEZAXg==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.0" + } + }, + "react-draggable": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.2.0.tgz", + "integrity": "sha512-5wFq//gEoeTYprnd4ze8GrFc+Rbnx+9RkOMR3vk4EbWxj02U6L6T3yrlKeiw4X5CtjD2ma2+b3WujghcXNRzkw==", + "dev": true, + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + }, + "react-error-overlay": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.6.tgz", + "integrity": "sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw==", + "dev": true + }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "dev": true + }, + "react-focus-lock": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-1.19.1.tgz", + "integrity": "sha512-TPpfiack1/nF4uttySfpxPk4rGZTLXlaZl7ncZg/ELAk24Iq2B1UUaUioID8H8dneUXqznT83JTNDHDj+kwryw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.6.3", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.0" + } + }, + "react-helmet-async": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.0.4.tgz", + "integrity": "sha512-KTGHE9sz8N7+fCkZ2a3vzXH9eIkiTNhL2NhKR7XzzQl3WsGlCHh76arauJUIiGdfhjeMp7DY7PkASAmYFXeJYg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.4", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^2.0.4", + "shallowequal": "^1.1.0" + } + }, + "react-hotkeys": { + "version": "2.0.0-pre4", + "resolved": "https://registry.npmjs.org/react-hotkeys/-/react-hotkeys-2.0.0-pre4.tgz", + "integrity": "sha512-oa+UncSWyOwMK3GExt+oELXaR7T3ItgcMolsupQFdKvwkEhVAluJd5rYczsRSQpQlVkdNoHG46De2NUeuS+88Q==", + "dev": true, + "requires": { + "prop-types": "^15.6.1" + } + }, + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", + "integrity": "sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==", + "dev": true + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true + }, + "react-popper": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.7.tgz", + "integrity": "sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "create-react-context": "^0.3.0", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + }, + "react-popper-tooltip": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-2.10.1.tgz", + "integrity": "sha512-cib8bKiyYcrIlHo9zXx81G0XvARfL8Jt+xum709MFCgQa3HTqTi4au3iJ9tm7vi7WU7ngnqbpWkMinBOtwo+IQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.4", + "react-popper": "^1.3.6" + } + }, + "react-sizeme": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-2.6.12.tgz", + "integrity": "sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw==", + "dev": true, + "requires": { + "element-resize-detector": "^1.2.1", + "invariant": "^2.2.4", + "shallowequal": "^1.1.0", + "throttle-debounce": "^2.1.0" + } + }, + "react-syntax-highlighter": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-8.1.0.tgz", + "integrity": "sha512-G2bkZxmF3VOa4atEdXIDSfwwCqjw6ZQX5znfTaHcErA1WqHIS0o6DaSCDKFPVaOMXQEB9Hf1UySYQvuJmV8CXg==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "highlight.js": "~9.12.0", + "lowlight": "~1.9.1", + "prismjs": "^1.8.4", + "refractor": "^2.4.1" + } + }, + "react-textarea-autosize": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-7.1.2.tgz", + "integrity": "sha512-uH3ORCsCa3C6LHxExExhF4jHoXYCQwE5oECmrRsunlspaDAbS4mGKNlWZqjLfInWtFQcf0o1n1jC/NGXFdUBCg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.6.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } } }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "~3.1.0", + "private": "~0.1.5", + "source-map": "~0.5.0" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "requires": { + "minimatch": "3.0.4" } }, "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "refractor": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-2.10.1.tgz", + "integrity": "sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw==", + "dev": true, + "requires": { + "hastscript": "^5.0.0", + "parse-entities": "^1.1.2", + "prismjs": "~1.17.0" + }, + "dependencies": { + "prismjs": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz", + "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==", + "dev": true, + "requires": { + "clipboard": "^2.0.0" + } + } + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.3.tgz", + "integrity": "sha512-zXHNKJspmONxBViAb3ZUmFoFPnTBs3zFhCEZJiwp/gkNzxVbTqNJVjYKx6Qk1tQ1P4XLf4TbH9+KBB7wGoAaUw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" } }, "regex-not": { @@ -3136,66 +11433,117 @@ "safe-regex": "^1.1.0" } }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "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" + } + }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "dev": true }, "remark": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", - "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", "dev": true, "requires": { - "remark-parse": "^6.0.0", - "remark-stringify": "^6.0.0", - "unified": "^7.0.0" + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" } }, "remark-parse": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", - "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", "dev": true, "requires": { - "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": "^1.1.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": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" + "mdast-util-from-markdown": "^0.8.0" } }, "remark-stringify": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", - "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "dev": true, "requires": { - "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": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4", - "xtend": "^4.0.1" + "mdast-util-to-markdown": "^0.6.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" } }, "repeat-element": { @@ -3210,34 +11558,90 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, + "optional": true, "requires": { - "is-finite": "^1.0.0" + "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" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "optional": true + } } }, - "replace-ext": { + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", "dev": true }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", "dev": true, "requires": { "path-parse": "^1.0.6" } }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "resolve-url": { @@ -3262,28 +11666,62 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", "dev": true, "requires": { "is-promise": "^2.1.0" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -3310,10 +11748,135 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "scheduler": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.0.tgz", + "integrity": "sha512-xowbVaTPe9r7y7RUejcK73/j8tt2jfiyTednOvHbA8JoClvMYCp+r8QegLwK/n8zWQAtZb1fFnER4XLBZXrCxA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "dev": true, + "optional": true + }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "dev": true, + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { @@ -3336,9 +11899,58 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==", + "dev": true + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -3354,16 +11966,84 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "dev": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "simplebar": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-4.2.3.tgz", + "integrity": "sha512-9no0pK7/1y+8/oTF3sy/+kx0PjQ3uk4cYwld5F1CJGk2gx+prRyUq8GRfvcVLq5niYWSozZdX73a2wIr1o9l/g==", + "dev": true, + "requires": { + "can-use-dom": "^0.1.0", + "core-js": "^3.0.1", + "lodash.debounce": "^4.0.8", + "lodash.memoize": "^4.1.2", + "lodash.throttle": "^4.1.1", + "resize-observer-polyfill": "^1.5.1" + } + }, + "simplebar-react": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simplebar-react/-/simplebar-react-1.2.3.tgz", + "integrity": "sha512-1EOWJzFC7eqHUp1igD1/tb8GBv5aPQA5ZMvpeDnVkpNJ3jAuvmrL2kir3HuijlxhG7njvw9ssxjjBa89E5DrJg==", + "dev": true, + "requires": { + "prop-types": "^15.6.1", + "simplebar": "^4.2.3" + } + }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, "slice-ansi": { @@ -3375,6 +12055,14 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } } }, "snapdragon": { @@ -3425,12 +12113,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -3482,6 +12164,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -3505,35 +12193,100 @@ } } }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true + }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "dev": true, + "requires": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -3541,15 +12294,15 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -3557,9 +12310,9 @@ } }, "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "specificity": { @@ -3577,16 +12330,88 @@ "extend-shallow": "^3.0.0" } }, + "split2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", + "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=", + "dev": true, + "requires": { + "through2": "~0.6.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "state-toggle": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz", - "integrity": "sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==", + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "optional": true, + "requires": { + "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": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", "dev": true }, "static-extend": { @@ -3610,70 +12435,171 @@ } } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "store2": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.10.0.tgz", + "integrity": "sha512-tWEpK0snS2RPUq1i3R6OahfJNjWCQYNxq0+by1amCSuw0mXtymJpzmZIeYpA1UAa+7B0grCpNYIbDcd7AgTbFg==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "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" + } + }, + "string.prototype.padend": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.padstart": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz", + "integrity": "sha512-envqZvUp2JItI+OeQ5UAh1ihbAV5G/2bixTojvlIa090GGqF+NQRxbWb2nv9fTGrZABv6+pE6jXoAZhhS2k4Hw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } }, "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, - "stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", - "dev": true, - "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "requires": { - "get-stdin": "^4.0.1" + "min-indent": "^1.0.0" } }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -3681,114 +12607,315 @@ "dev": true }, "stylelint": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-10.0.1.tgz", - "integrity": "sha512-NbpD9BvQRmPe7QfaLB2OqhhDr5g6SAn43AAH2XLyqtQ9ZcioQECgadkIbormfhzxLhccAQWBZbVNiZz1oqEf8g==", + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.8.0.tgz", + "integrity": "sha512-iHH3dv3UI23SLDrH4zMQDjLT9/dDIz/IpoFeuNxZmEx86KtfpjDOscxLTFioQyv+2vQjPlRZnK0UoJtfxLICXQ==", "dev": true, "requires": { - "autoprefixer": "^9.5.1", + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", "balanced-match": "^1.0.0", - "chalk": "^2.4.2", - "cosmiconfig": "^5.2.0", - "debug": "^4.1.1", - "execall": "^1.0.0", - "file-entry-cache": "^5.0.1", - "get-stdin": "^7.0.0", + "chalk": "^4.1.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.2.0", + "execall": "^2.0.0", + "fast-glob": "^3.2.4", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.0", + "get-stdin": "^8.0.0", "global-modules": "^2.0.0", - "globby": "^9.2.0", + "globby": "^11.0.1", "globjoin": "^0.1.4", - "html-tags": "^2.0.0", - "ignore": "^5.0.6", - "import-lazy": "^3.1.0", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.13.0", - "leven": "^3.1.0", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "mathml-tag-names": "^2.1.0", - "meow": "^5.0.0", - "micromatch": "^4.0.0", + "known-css-properties": "^0.20.0", + "lodash": "^4.17.20", + "log-symbols": "^4.0.0", + "mathml-tag-names": "^2.1.3", + "meow": "^8.0.0", + "micromatch": "^4.0.2", "normalize-selector": "^0.2.0", - "pify": "^4.0.1", - "postcss": "^7.0.14", + "postcss": "^7.0.35", "postcss-html": "^0.36.0", - "postcss-jsx": "^0.36.0", "postcss-less": "^3.1.4", - "postcss-markdown": "^0.36.0", "postcss-media-query-parser": "^0.2.3", - "postcss-reporter": "^6.0.1", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.1", - "postcss-sass": "^0.3.5", - "postcss-scss": "^2.0.0", - "postcss-selector-parser": "^3.1.0", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.4", "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^3.3.1", + "postcss-value-parser": "^4.1.0", "resolve-from": "^5.0.0", - "signal-exit": "^3.0.2", - "slash": "^2.0.0", + "slash": "^3.0.0", "specificity": "^0.4.1", - "string-width": "^4.1.0", + "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.2.3" + "table": "^6.0.3", + "v8-compile-cache": "^2.2.0", + "write-file-atomic": "^3.0.3" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", "dev": true }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "ajv": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz", + "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==", "dev": true, "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "caniuse-lite": { + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.728", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.728.tgz", + "integrity": "sha512-SHv4ziXruBpb1Nz4aTuqEHBYi/9GNCJMYIJgDEXrp/2V01nFXMNFUTli5Z85f5ivSkioLilQatqBYFB44wNJrA==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "@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" } }, - "get-stdin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", - "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, "ignore": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz", - "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, "is-fullwidth-code-point": { @@ -3797,166 +12924,240 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" }, "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", "dev": true } } }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", "dev": true }, - "meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "dev": true, "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "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", - "yargs-parser": "^10.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" }, "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } } } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "read-pkg": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + } } }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "dev": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true } } }, "stylelint-config-wikimedia": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.6.0.tgz", - "integrity": "sha512-7KqgpWCjKc2zT0JBI+BmSn/lzwHga056dZw6H//2qEbs1XRmR25gTGPsiMYOm3jVUlE0OSbuaOdyuE1KOlz/5w==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.10.3.tgz", + "integrity": "sha512-+n082jsEfX4v+ra5F6RfsEnjG6VymnHc613yJeyQAJtigL/+B5XDduVmtXk5vPZ01s0eXTOzVuK0aJ98ofmkoA==", "dev": true, "requires": { - "stylelint": "10.0.1" + "stylelint": "13.8.0", + "stylelint-no-unsupported-browser-features": "4.1.4" + } + }, + "stylelint-no-unsupported-browser-features": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/stylelint-no-unsupported-browser-features/-/stylelint-no-unsupported-browser-features-4.1.4.tgz", + "integrity": "sha512-GORR+/z4KkWP9SWO4fLmC5WAIjDClShSfwCYTuAB9cT8GE+rtOXeAqw5RyXuN9BLIBAPjeO2W7LFIrWUH8x7FA==", + "dev": true, + "requires": { + "doiuse": "^4.3.1", + "lodash": "^4.17.15", + "postcss": "^8.1.4" + }, + "dependencies": { + "postcss": { + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "sugarss": { @@ -3983,14 +13184,75 @@ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", "dev": true }, - "table": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.0.tgz", - "integrity": "sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==", + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", + "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" + }, + "dependencies": { + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, + "symbol.prototype.description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.2.tgz", + "integrity": "sha512-2CW5SU4/Ki1cYOOHcL2cXK4rxSg5hCU1TwZ7X4euKhV9VnfqKslh7T6/UyKkubA8cq2tOmsOv7m3ZUmQslBRuw==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has-symbols": "^1.0.1" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, @@ -4001,6 +13263,12 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -4023,18 +13291,189 @@ } } }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "telejson": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-3.3.0.tgz", + "integrity": "sha512-er08AylQ+LEbDLp1GRezORZu5wKOHaBczF6oYJtgC3Idv10qZ8A3p6ffT+J5BzDKkV9MqBvu8HAKiIIOp6KJ2w==", + "dev": true, + "requires": { + "@types/is-function": "^1.0.0", + "global": "^4.4.0", + "is-function": "^1.0.1", + "is-regex": "^1.0.4", + "is-symbol": "^1.0.3", + "isobject": "^4.0.0", + "lodash": "^4.17.15", + "memoizerific": "^1.11.3" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, + "terser": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz", + "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "throttle-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.1.0.tgz", + "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "dev": true, + "optional": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -4044,6 +13483,12 @@ "os-tmpdir": "~1.0.2" } }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -4092,85 +13537,217 @@ "repeat-string": "^1.6.1" } }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=", "dev": true }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "optional": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "trim-trailing-lines": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz", - "integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", "dev": true }, "trough": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", - "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, + "ts-pnp": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", + "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==", "dev": true }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" } }, - "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "requires": { - "sprintf-js": "^1.0.3", - "util-deprecate": "^1.0.2" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" } }, - "unherit": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", - "integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==", + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { - "inherits": "^2.0.1", - "xtend": "^4.0.1" + "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", + "dev": true + }, + "unfetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", + "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, "unified": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", - "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz", + "integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "@types/vfile": "^3.0.0", "bail": "^1.0.0", "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", "trough": "^1.0.0", - "vfile": "^3.0.0", - "x-is-string": "^0.1.0" + "vfile": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + } } }, "union-value": { @@ -4191,53 +13768,65 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, - "unist-util-find-all-after": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.4.tgz", - "integrity": "sha512-CaxvMjTd+yF93BKLJvZnEfqdM7fgEACsIpQqz8vIj9CJnUb9VpyymFS3tg6TCtgrF7vfCJBF5jbT2Ox9CBRYRQ==", + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "requires": { - "unist-util-is": "^3.0.0" + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unist-util-find-all-after": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" } }, "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true }, - "unist-util-remove-position": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz", - "integrity": "sha512-CtszTlOjP2sBGYc2zcKA/CvNdTdEs3ozbiJ63IPBxh8iZg42SCCb8m04f8z2+V1aSk5a7BxbZKEdoDjadmBkWA==", - "dev": true, - "requires": { - "unist-util-visit": "^1.1.0" - } - }, "unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "requires": { - "unist-util-visit-parents": "^2.0.0" - } + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "requires": { - "unist-util-is": "^3.0.0" - } + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true }, "unset-value": { "version": "1.0.0", @@ -4276,9 +13865,27 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -4294,18 +13901,126 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "url-parse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -4316,69 +14031,601 @@ "spdx-expression-parse": "^3.0.0" } }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", - "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dev": true, "requires": { + "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" }, "dependencies": { "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true } } }, - "vfile-location": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.5.tgz", - "integrity": "sha512-Pa1ey0OzYBkLPxPZI3d9E+S4BmvfVwNAAXrrqGbwTVXWaX2p9kM1zZ+n35UtVM06shmWKH4RPRN8KI80qE3wNQ==", + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, - "vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "vscode-json-languageservice": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.7.0.tgz", + "integrity": "sha512-nGLqcBhTjdfkl8Dz9sYGK/ZCTjscYFoIjYw+qqkWB+vyNfM0k/AyIoT73DQvB/PArteCKjEVfQUF72GRZEDSbQ==", "dev": true, "requires": { - "unist-util-stringify-position": "^1.1.1" + "jsonc-parser": "^2.2.1", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-nls": "^4.1.2", + "vscode-uri": "^2.1.2" } }, - "vscode-json-languageservice": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.2.1.tgz", - "integrity": "sha512-ee9MJ70/xR55ywvm0bZsDLhA800HCRE27AYgMNTU14RSg20Y+ngHdQnUt6OmiTXrQDI/7sne6QUOtHIN0hPQYA==", - "dev": true, - "requires": { - "jsonc-parser": "^2.0.2", - "vscode-languageserver-types": "^3.13.0", - "vscode-nls": "^4.0.0", - "vscode-uri": "^1.0.6" - } + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==", + "dev": true }, "vscode-languageserver-types": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", - "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", "dev": true }, "vscode-nls": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz", - "integrity": "sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz", + "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", "dev": true }, "vscode-uri": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.8.tgz", - "integrity": "sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "dev": true + }, + "vue-eslint-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz", + "integrity": "sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "optional": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "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" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "webpack-hot-middleware": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz", + "integrity": "sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "html-entities": "^1.2.0", + "querystring": "^0.2.0", + "strip-ansi": "^3.0.0" + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, "which": { @@ -4390,12 +14637,162 @@ "isexe": "^2.0.0" } }, - "wordwrap": { + "which-pm-runs": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4411,34 +14808,123 @@ "mkdirp": "^0.5.1" } }, - "x-is-string": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", - "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xmlcreate": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", + "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yaml": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.2.tgz", + "integrity": "sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "@babel/runtime": "^7.8.7" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true } } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true } } } diff --git a/package.json b/package.json index dd3744e..900bb64 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,40 @@ { "private": true, "scripts": { - "test": "grunt test", - "doc": "jsduck" + "start": "dev-scripts/setup-storybook.sh && start-storybook --quiet -p 6006 -s docs/ui", + "build": "npm -s test && npm -s run doc", + "test": "npm -s run lint && tsc", + "test:size": "node ./tests/resource-loader-bundlesize.js", + "lint": "npm -s run lint:js && npm -s run lint:styles && npm -s run lint:i18n", + "lint:fix:js": "npm -s run lint:js -- --fix", + "lint:fix:styles": "npm -s run lint:styles -- --fix", + "lint:js": "eslint --cache --max-warnings 0 .", + "lint:styles": "stylelint \"**/*.{less,css}\"", + "lint:i18n": "banana-checker --requireLowerCase=0 i18n/", + "selenium-test": "npm -s run test:size", + "doc": "jsdoc -c jsdoc.json && npm run build-storybook", + "build-storybook": "dev-scripts/setup-storybook.sh && build-storybook --quiet --loglevel warn -o docs/ui", + "svgmin": "svgo --config=.svgo.yml -q -r -f resources/" }, "devDependencies": { - "eslint-config-wikimedia": "0.12.0", - "grunt": "1.0.4", - "grunt-banana-checker": "0.7.0", - "grunt-eslint": "21.0.0", - "grunt-stylelint": "0.10.1", - "stylelint-config-wikimedia": "0.6.0" + "@babel/core": "7.7.7", + "@storybook/html": "5.2.8", + "@types/jquery": "3.3.33", + "@types/mustache": "4.0.1", + "@types/node-fetch": "2.5.7", + "babel-loader": "8.0.6", + "bundlesize": "0.18.1", + "eslint-config-wikimedia": "0.16.2", + "grunt-banana-checker": "0.9.0", + "jsdoc": "3.6.7", + "jsdoc-wmf-theme": "0.0.3", + "less": "3.8.1", + "less-loader": "4.1.0", + "mustache": "3.0.1", + "node-fetch": "2.6.1", + "pre-commit": "1.2.2", + "stylelint-config-wikimedia": "0.10.3", + "svgo": "1.3.2", + "typescript": "3.8.3" } } diff --git a/resources/CheckboxHack.d.ts b/resources/CheckboxHack.d.ts new file mode 100644 index 0000000..13c17bf --- /dev/null +++ b/resources/CheckboxHack.d.ts @@ -0,0 +1,17 @@ +interface CheckboxHack { + updateAriaExpanded(checkbox: HTMLInputElement, button: HTMLElement): void; + bindUpdateAriaExpandedOnInput(checkbox: HTMLInputElement, button: HTMLElement): CheckboxHackListeners; + bindToggleOnClick(checkbox: HTMLInputElement, button: HTMLElement): CheckboxHackListeners; + bindToggleOnSpaceEnter(checkbox:HTMLInputElement, button:HTMLElement): CheckboxHackListeners; + bindDismissOnClickOutside(window: Window, checkbox: HTMLInputElement, button: HTMLElement, target: Node): CheckboxHackListeners; + bindDismissOnFocusLoss(window: Window, checkbox: HTMLInputElement, button: HTMLElement, target: Node): CheckboxHackListeners; + bind(window: Window, checkbox: HTMLInputElement, button: HTMLElement, target: Node): CheckboxHackListeners; + unbind(window: Window, checkbox: HTMLInputElement, button: HTMLElement, listeners: CheckboxHackListeners): void; +} + +interface CheckboxHackListeners { + onUpdateAriaExpandedOnInput?: EventListenerOrEventListenerObject; + onToggleOnClick?: EventListenerOrEventListenerObject; + onDismissOnClickOutside?: EventListenerOrEventListenerObject; + onDismissOnFocusLoss?: EventListenerOrEventListenerObject; +} diff --git a/resources/CollapsibleTabsPlugin.d.ts b/resources/CollapsibleTabsPlugin.d.ts new file mode 100644 index 0000000..dd9b196 --- /dev/null +++ b/resources/CollapsibleTabsPlugin.d.ts @@ -0,0 +1,34 @@ +interface JQueryStatic { + collapsibleTabs: CollapsibleTabsStatic; +} + +interface JQuery { + collapsibleTabs(options: Partial): void; +} + +/** A jQuery plugin that makes collapsible tabs for the Vector skin. */ +interface CollapsibleTabsOptions { + /** Optional tab selector. Defaults to `#p-views ul`. */ + expandedContainer: string; + /** Optional menu item selector. Defaults to `#p-cactions ul`. */ + collapsedContainer: string; + /** Optional selector for tabs that are collapsible. Defaults to `li.collapsible`. */ + collapsible: string; + shifting: boolean; + expandedWidth: number; + expandCondition(eleWidth: number): boolean; + collapseCondition(): boolean; +} + +interface CollapsibleTabsStatic { + defaults: CollapsibleTabsOptions; + instances: JQuery[]; + addData($collapsible: JQuery): void; + getSettings($collapsible: JQuery): CollapsibleTabsOptions; + handleResize(): void; + moveToCollapsed($moving: JQuery): void; + moveToExpanded($moving: JQuery): void; + calculateTabDistance(): number; +} + +interface CollapsibleTabs extends CollapsibleTabsStatic, CollapsibleTabsOptions {} diff --git a/resources/mediawiki.d.ts b/resources/mediawiki.d.ts new file mode 100644 index 0000000..e21a55a --- /dev/null +++ b/resources/mediawiki.d.ts @@ -0,0 +1,30 @@ +interface MwApi { + saveOption( name: string, value: unknown ): JQuery.Promise; +} + +type MwApiConstructor = new( options?: Object ) => MwApi; + +interface MediaWiki { + util: { + /** + * Return a wrapper function that is debounced for the given duration. + * + * When it is first called, a timeout is scheduled. If before the timer + * is reached the wrapper is called again, it gets rescheduled for the + * same duration from now until it stops being called. The original function + * is called from the "tail" of such chain, with the last set of arguments. + * + * @since 1.34 + * @param {number} delay Time in milliseconds + * @param {Function} callback + * @return {Function} + */ + debounce(delay: number, callback: Function): () => void; + }; + Api: MwApiConstructor; + config: { + get( configKey: string|null ): string; + } +} + +declare const mw: MediaWiki; diff --git a/resources/skins.vector.icons/chevronHorizontal-ltr.svg b/resources/skins.vector.icons/chevronHorizontal-ltr.svg new file mode 100644 index 0000000..87703a2 --- /dev/null +++ b/resources/skins.vector.icons/chevronHorizontal-ltr.svg @@ -0,0 +1,7 @@ + + + + chevron + + + \ No newline at end of file diff --git a/resources/skins.vector.icons/chevronHorizontal-rtl.svg b/resources/skins.vector.icons/chevronHorizontal-rtl.svg new file mode 100644 index 0000000..377728a --- /dev/null +++ b/resources/skins.vector.icons/chevronHorizontal-rtl.svg @@ -0,0 +1,7 @@ + + + + chevron + + + \ No newline at end of file diff --git a/resources/skins.vector.icons/menu.svg b/resources/skins.vector.icons/menu.svg new file mode 100644 index 0000000..f1c381c --- /dev/null +++ b/resources/skins.vector.icons/menu.svg @@ -0,0 +1 @@ +menu \ No newline at end of file diff --git a/resources/skins.vector.js/sidebar.js b/resources/skins.vector.js/sidebar.js new file mode 100644 index 0000000..dda1f1f --- /dev/null +++ b/resources/skins.vector.js/sidebar.js @@ -0,0 +1,90 @@ +/** + * JavaScript enhancement to the collapsible sidebar. + * + * The sidebar provides basic show/hide functionality with CSS + * but JavaScript is used for progressive enhancements. + * + * Enhancements include: + * - Update `aria-role`s based on expanded/collapsed state. + * - Update button icon based on expanded/collapsed state. + * - Persist the sidebar state for logged-in users. + * + */ + +/** @interface MwApiConstructor */ +/** @interface CheckboxHack */ +/** @interface MwApi */ + +/** @type {CheckboxHack} */ var checkboxHack = +require( /** @type {string} */( 'mediawiki.page.ready' ) ).checkboxHack; +var SIDEBAR_BUTTON_ID = 'mw-sidebar-button', + SIDEBAR_CHECKBOX_ID = 'mw-sidebar-checkbox', + SIDEBAR_PREFERENCE_NAME = 'VectorSidebarVisible'; + +var debounce = require( /** @type {string} */ ( 'mediawiki.util' ) ).debounce; +/** @type {MwApi} */ var api; + +/** + * Improve the interactivity of the sidebar panel by binding optional checkbox hack enhancements + * for focus and `aria-expanded`. Also, flip the icon image on click. + * + * @param {HTMLElement|null} checkbox + * @param {HTMLElement|null} button + * @return {void} + */ +function initCheckboxHack( checkbox, button ) { + if ( checkbox instanceof HTMLInputElement && button ) { + checkboxHack.bindToggleOnClick( checkbox, button ); + checkboxHack.bindUpdateAriaExpandedOnInput( checkbox, button ); + checkboxHack.updateAriaExpanded( checkbox, button ); + checkboxHack.bindToggleOnSpaceEnter( checkbox, button ); + } +} + +/** + * Execute a debounced API request to save the sidebar user preference. + * The request is meant to fire 1000 milliseconds after the last click on + * the sidebar button. + * + * @param {HTMLInputElement} checkbox + * @return {any} + */ +function saveSidebarState( checkbox ) { + return debounce( 1000, function () { + api = api || new mw.Api(); + api.saveOption( SIDEBAR_PREFERENCE_NAME, checkbox.checked ? 1 : 0 ); + } ); +} + +/** + * Bind the event handler that saves the sidebar state to the click event + * on the sidebar button. + * + * @param {HTMLElement|null} checkbox + * @param {HTMLElement|null} button + */ +function bindSidebarClickEvent( checkbox, button ) { + if ( checkbox instanceof HTMLInputElement && button ) { + checkbox.addEventListener( 'input', saveSidebarState( checkbox ) ); + } +} + +/** + * Initialize all JavaScript sidebar enhancements. + * + * @param {Window} window + */ +function init( window ) { + var checkbox = window.document.getElementById( SIDEBAR_CHECKBOX_ID ), + button = window.document.getElementById( SIDEBAR_BUTTON_ID ); + + initCheckboxHack( checkbox, button ); + + if ( mw.config.get( 'wgUserName' ) ) { + bindSidebarClickEvent( checkbox, button ); + } +} + +module.exports = { + init: init +}; diff --git a/resources/skins.vector.js/skin.js b/resources/skins.vector.js/skin.js new file mode 100644 index 0000000..f478385 --- /dev/null +++ b/resources/skins.vector.js/skin.js @@ -0,0 +1,48 @@ +var collapsibleTabs = require( '../skins.vector.legacy.js/collapsibleTabs.js' ), + vector = require( '../skins.vector.legacy.js/vector.js' ), + sidebar = require( './sidebar.js' ); + +/** + * Wait for first paint before calling this function. That's its whole purpose. + * + * Some CSS animations and transitions are "disabled" by default as a workaround to this old Chrome + * bug, https://bugs.chromium.org/p/chromium/issues/detail?id=332189, which otherwise causes them to + * render in their terminal state on page load. By adding the `vector-animations-ready` class to the + * `html` root element **after** first paint, the animation selectors suddenly match causing the + * animations to become "enabled" when they will work properly. A similar pattern is used in Minerva + * (see T234570#5779890, T246419). + * + * Example usage in Less: + * + * ```less + * .foo { + * color: #f00; + * .transform( translateX( -100% ) ); + * } + * + * // This transition will be disabled initially for JavaScript users. It will never be enabled for + * // no-JS users. + * .vector-animations-ready .foo { + * .transition( transform 100ms ease-out; ); + * } + * ``` + * + * @param {Document} document + * @return {void} + */ +function enableCssAnimations( document ) { + document.documentElement.classList.add( 'vector-animations-ready' ); +} + +/** + * @param {Window} window + * @return {void} + */ +function main( window ) { + enableCssAnimations( window.document ); + collapsibleTabs.init(); + sidebar.init( window ); + $( vector.init ); +} + +main( window ); diff --git a/collapsibleTabs.js b/resources/skins.vector.legacy.js/collapsibleTabs.js similarity index 78% rename from collapsibleTabs.js rename to resources/skins.vector.legacy.js/collapsibleTabs.js index 9800856..765270e 100644 --- a/collapsibleTabs.js +++ b/resources/skins.vector.legacy.js/collapsibleTabs.js @@ -1,31 +1,9 @@ -/** - * Collapsible Tabs for the Vector skin. - * - * @class jQuery.plugin.collapsibleTabs - */ -( function () { - var boundEvent, - isRTL = document.documentElement.dir === 'rtl', - rAF = window.requestAnimationFrame || setTimeout; +/** @interface CollapsibleTabsOptions */ +function init() { + /** @type {boolean|undefined} */ var boundEvent; + var isRTL = document.documentElement.dir === 'rtl'; + var rAF = window.requestAnimationFrame || setTimeout; - /** - * @event beforeTabCollapse - */ - - /** - * @event afterTabCollapse - */ - - /** - * @param {Object} [options] - * @param {string} [options.expandedContainer="#p-views ul"] List of tabs - * @param {string} [options.collapsedContainer="#p-cactions ul"] List of menu items - * @param {string} [options.collapsible="li.collapsible"] Match tabs that are collapsible - * @param {Function} [options.expandCondition] - * @param {Function} [options.collapseCondition] - * @return {jQuery} - * @chainable - */ $.fn.collapsibleTabs = function ( options ) { // Merge options into the defaults var settings = $.extend( {}, $.collapsibleTabs.defaults, options ); @@ -66,6 +44,7 @@ collapsedContainer: '#p-cactions ul', collapsible: 'li.collapsible', shifting: false, + expandedWidth: 0, expandCondition: function ( eleWidth ) { // If there are at least eleWidth + 1 pixels of free space, expand. // We add 1 because .width() will truncate fractional values but .offset() will not. @@ -105,8 +84,14 @@ // if the two navigations are colliding if ( $el.children( data.collapsible ).length && data.collapseCondition() ) { + /** + * Fired before tabs are moved to "collapsedContainer". + * + * @event beforeTabCollapse + * @memberof jQuery.plugin.collapsibleTabs + */ $el.trigger( 'beforeTabCollapse' ); - // move the element to the dropdown menu + // Move the element to the dropdown menu. $.collapsibleTabs.moveToCollapsed( $el.children( data.collapsible ).last() ); } @@ -119,26 +104,33 @@ $.collapsibleTabs.getSettings( $tab ).expandedWidth ) ) { - // move the element from the dropdown to the tab + /** + * Fired before tabs are moved to "expandedContainer". + * + * @event beforeTabExpand + * @memberof jQuery.plugin.collapsibleTabs + */ $el.trigger( 'beforeTabExpand' ); $.collapsibleTabs.moveToExpanded( $tab ); } } ); }, moveToCollapsed: function ( $moving ) { - var outerData, expContainerSettings, target; + /** @type {CollapsibleTabsOptions} */ var outerData; + /** @type {CollapsibleTabsOptions} */ var collapsedContainerSettings; + /** @type {string} */ var target; outerData = $.collapsibleTabs.getSettings( $moving ); if ( !outerData ) { return; } - expContainerSettings = $.collapsibleTabs.getSettings( + collapsedContainerSettings = $.collapsibleTabs.getSettings( $( outerData.expandedContainer ) ); - if ( !expContainerSettings ) { + if ( !collapsedContainerSettings ) { return; } - expContainerSettings.shifting = true; + collapsedContainerSettings.shifting = true; // Remove the element from where it's at and put it in the dropdown menu target = outerData.collapsedContainer; @@ -151,22 +143,26 @@ $( '' ).addClass( 'placeholder' ).css( 'display', 'none' ).insertAfter( this ); $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', outerData ); $( this ).attr( 'style', 'display: list-item;' ); - expContainerSettings.shifting = false; + collapsedContainerSettings.shifting = false; rAF( $.collapsibleTabs.handleResize ); } ); }, moveToExpanded: function ( $moving ) { - var data, expContainerSettings, $target, expandedWidth; + /** @type {CollapsibleTabsOptions} */ var data; + /** @type {CollapsibleTabsOptions} */ var expandedContainerSettings; + var $target; + var expandedWidth; data = $.collapsibleTabs.getSettings( $moving ); if ( !data ) { return; } - expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) ); - if ( !expContainerSettings ) { + expandedContainerSettings = + $.collapsibleTabs.getSettings( $( data.expandedContainer ) ); + if ( !expandedContainerSettings ) { return; } - expContainerSettings.shifting = true; + expandedContainerSettings.shifting = true; // grab the next appearing placeholder so we can use it for replacing $target = $( data.expandedContainer ).find( 'span.placeholder' ).first(); @@ -185,9 +181,9 @@ // change the tab's contents after the page load *gasp* (T71729). This // doesn't prevent a tab from collapsing back and forth once, but at // least it won't continue to do that forever. - data.expandedWidth = $moving.width(); + data.expandedWidth = $moving.width() || 0; $moving.data( 'collapsibleTabsSettings', data ); - expContainerSettings.shifting = false; + expandedContainerSettings.shifting = false; $.collapsibleTabs.handleResize(); } ); } ) @@ -216,16 +212,14 @@ leftTab = document.getElementById( 'right-navigation' ); rightTab = document.getElementById( 'left-navigation' ); } - - leftEnd = leftTab.getBoundingClientRect().right; - rightStart = rightTab.getBoundingClientRect().left; - return rightStart - leftEnd; + if ( leftTab && rightTab ) { + leftEnd = leftTab.getBoundingClientRect().right; + rightStart = rightTab.getBoundingClientRect().left; + return rightStart - leftEnd; + } + return 0; } }; +} - /** - * @class jQuery - * @mixins jQuery.plugin.collapsibleTabs - */ - -}() ); +module.exports = Object.freeze( { init: init } ); diff --git a/resources/skins.vector.legacy.js/skin-legacy.js b/resources/skins.vector.legacy.js/skin-legacy.js new file mode 100644 index 0000000..40eff8a --- /dev/null +++ b/resources/skins.vector.legacy.js/skin-legacy.js @@ -0,0 +1,10 @@ +var + collapsibleTabs = require( './collapsibleTabs.js' ), + vector = require( './vector.js' ); + +function main() { + collapsibleTabs.init(); + $( vector.init ); +} + +main(); diff --git a/resources/skins.vector.legacy.js/vector.js b/resources/skins.vector.legacy.js/vector.js new file mode 100644 index 0000000..6d0404d --- /dev/null +++ b/resources/skins.vector.legacy.js/vector.js @@ -0,0 +1,118 @@ +/** + * Collapsible tabs for Vector + */ +function init() { + // eslint-disable-next-line no-jquery/no-global-selector + var $cactions = $( '#p-cactions' ), + // eslint-disable-next-line no-jquery/no-global-selector + $tabContainer = $( '#p-views ul' ), + initialCactionsWidth = function () { + // HACK: This depends on a discouraged feature of jQuery width(). + // The #p-cactions element is generally hidden by default, but + // the consumers of this function need to know the width that the + // "More" menu would consume if it were visible. This means it + // must not return 0 if hidden, but rather virtually render it + // and compute its width, then hide it again. jQuery width() does + // all that for us. + var width = $cactions.width() || 0; + initialCactionsWidth = function () { + return width; + }; + return width; + }; + + // Bind callback functions to animate our drop down menu in and out + // and then call the collapsibleTabs function on the menu + $tabContainer + .on( 'beforeTabCollapse', function () { + var expandedWidth; + // If the dropdown was hidden, show it + // eslint-disable-next-line no-jquery/no-class-state + if ( $cactions.hasClass( 'emptyPortlet' ) ) { + $cactions.removeClass( 'emptyPortlet vector-menu-empty' ); + // Now that it is visible, force-render it virtually + // to get its expanded width, then shrink it 1px before we + // yield from JS (which means the expansion won't be visible). + // Then animate from the 1px to the expanded width. + expandedWidth = $cactions.width(); + // eslint-disable-next-line no-jquery/no-animate + $cactions.find( 'h3' ) + .css( 'width', '1px' ) + .animate( { width: expandedWidth }, 'normal' ); + } + } ) + .on( 'beforeTabExpand', function () { + // If we're removing the last child node right now, hide the dropdown + if ( $cactions.find( 'li' ).length === 1 ) { + // eslint-disable-next-line no-jquery/no-animate + $cactions.find( 'h3' ).animate( { width: '1px' }, 'normal', function () { + $( this ).attr( 'style', '' ) + .parent().addClass( 'emptyPortlet vector-menu-empty' ); + } ); + } + } ) + .collapsibleTabs( { + expandCondition: function ( eleWidth ) { + // This looks a bit awkward because we're doing expensive queries as late + // as possible. + var distance = $.collapsibleTabs.calculateTabDistance(); + // If there are at least eleWidth + 1 pixels of free space, expand. + // We add 1 because .width() will truncate fractional values but .offset() will not. + if ( distance >= eleWidth + 1 ) { + return true; + } else { + // Maybe we can still expand? Account for the width of the "Actions" dropdown + // if the expansion would hide it. + if ( $cactions.find( 'li' ).length === 1 ) { + return distance >= eleWidth + 1 - initialCactionsWidth(); + } else { + return false; + } + } + }, + collapseCondition: function () { + var collapsibleWidth = 0, + doCollapse = false; + + // This looks a bit awkward because we're doing expensive queries as late + // as possible. + // TODO: The dropdown itself should probably "fold" to just the down-arrow + // (hiding the text) if it can't fit on the line? + + // Never collapse if there is no overlap. + if ( $.collapsibleTabs.calculateTabDistance() >= 0 ) { + return false; + } + + // Always collapse if the "More" button is already shown. + // eslint-disable-next-line no-jquery/no-class-state + if ( !$cactions.hasClass( 'emptyPortlet' ) ) { + return true; + } + + // If we reach here, this means: + // 1. #p-cactions is currently empty and invisible (e.g. when logged out), + // 2. and, there is at least one li.collapsible link in #p-views, as asserted + // by handleResize() before calling here. Such link exists e.g. as + // "View history" on articles, but generally not on special pages. + // 3. and, the left-navigation and right-navigation are overlapping + // each other, e.g. when making the window very narrow, or if a gadget + // added a lot of tabs. + $tabContainer.children( 'li.collapsible' ).each( function ( _index, element ) { + collapsibleWidth += $( element ).width() || 0; + if ( collapsibleWidth > initialCactionsWidth() ) { + // We've found one or more collapsible links that are wider + // than the "More" menu would be if it were made visible, + // which means it is worth doing a collapsing. + doCollapse = true; + // Stop this possibly expensive loop the moment the condition is met once. + return false; + } + return; + } ); + return doCollapse; + } + } ); +} + +module.exports = Object.freeze( { init: init } ); diff --git a/responsive.less b/resources/skins.vector.styles.responsive.less similarity index 84% rename from responsive.less rename to resources/skins.vector.styles.responsive.less index 2f47c0c..4301a30 100644 --- a/responsive.less +++ b/resources/skins.vector.styles.responsive.less @@ -3,7 +3,7 @@ instead of to the side of it. They also hide the logo, as there's no space left for it. */ -@import 'mediawiki.ui/variables'; +@import 'mediawiki.ui/variables.less'; @media screen and ( max-width: @width-breakpoint-tablet ) { #mw-head { @@ -37,7 +37,7 @@ } /* Rearrange various page elements to fill the now-available space */ - body #footer { + body .mw-footer { margin-left: 0; padding-top: 0; @@ -62,19 +62,19 @@ } #right-navigation { + // float: none; Override not needed with `position: absolute` above. position: absolute; top: inherit; right: 0; margin-top: 0; - float: none; } #left-navigation { + // float: none; Override not needed with `position: absolute` above. position: absolute; top: inherit; margin: 0; display: block; - float: none; } #p-namespaces, @@ -94,7 +94,7 @@ } #p-search { - float: none; + // float: none; Override not needed with `position: absolute` above. position: absolute; right: 0; width: 100vw; @@ -107,7 +107,7 @@ padding: 0; } - .vectorMenu .menu { + .vector-menu-dropdown .vector-menu-content-list { left: inherit; right: -1px; } diff --git a/components/footer.less b/resources/skins.vector.styles/Footer.less similarity index 92% rename from components/footer.less rename to resources/skins.vector.styles/Footer.less index d6e1e72..dd4794e 100644 --- a/components/footer.less +++ b/resources/skins.vector.styles/Footer.less @@ -1,7 +1,7 @@ +@import '../../variables.less'; + /* Footer */ -#footer { - margin-left: 10em; - margin-top: 0; +.mw-footer { padding: 0.75em; direction: ltr; diff --git a/resources/skins.vector.styles/Indicators.less b/resources/skins.vector.styles/Indicators.less new file mode 100644 index 0000000..50a1c6d --- /dev/null +++ b/resources/skins.vector.styles/Indicators.less @@ -0,0 +1,14 @@ +@import '../../variables.less'; + +// FIXME: Is specific `.mw-body` even needed? Does `.mw-indicators` exist outside? +.mw-body { + .mw-indicators { + font-size: @font-size-base; + line-height: @line-height-base; + position: relative; + } + + .mw-indicator { + display: inline-block; + } +} diff --git a/resources/skins.vector.styles/Logo.less b/resources/skins.vector.styles/Logo.less new file mode 100644 index 0000000..297efaa --- /dev/null +++ b/resources/skins.vector.styles/Logo.less @@ -0,0 +1,41 @@ +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +.mw-logo { + .flex-display(); + // If icon is not configured, ensure that the logo still takes up available + // space allocated by layout. + height: 100%; + // Center vertically. + align-items: center; +} + +.mw-logo-icon { + // For browsers which do not support flexbox we float left. + // This will be ignored in flexbox browsers. + float: left; + margin-right: 10px; +} + +.mw-logo-container { + // For browsers which do not support flexbox we float left. + // This will be ignored in flexbox browsers. + // The two children `div`s will lay out in a row. + float: left; +} + +// Note for 3rd parties where no wgLogos['wordmark'] is defined +// the site title is not clipped. We may need to revisit this later +// for projects with long site titles. +.mw-logo-wordmark { + display: block; + margin: 0 auto; + font-size: 1.4em; +} + +.mw-logo-tagline { + // For browsers which do not support flexbox. + display: block; + margin: 5px auto 0; + font-size: 0.7em; +} diff --git a/components/personalNavigation.less b/resources/skins.vector.styles/Menu.less similarity index 65% rename from components/personalNavigation.less rename to resources/skins.vector.styles/Menu.less index 03c506b..f18e237 100644 --- a/components/personalNavigation.less +++ b/resources/skins.vector.styles/Menu.less @@ -1,5 +1,28 @@ +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +/* Hide empty portlets */ +// This class has special magical powers. It can be removed by +// mw.util.addPortletLink +// in core:resources/src/mediawiki.util/util.js +// When I93fb6c96df9f238d1c0281cb66512b135ca2afc2 has been merged +// and is deployed this line of CSS should be removed or replaced +// with the class ".vector-menu-empty" +// See T253912. +.emptyPortlet { + display: none; +} + /* Personal */ +.vector-menu, +/* FIXME: Remove p-personal selector when cache has cleared. */ #p-personal { + // Hidden by default, but displayed by certain menus + // e.g. MenuPortal + h3 { + display: none; + } + ul { list-style: none none; margin: 0; @@ -10,9 +33,7 @@ // `padding-top` instead of `margin-top` necessary for // anonymous user icon position below padding-top: 0.5em; - font-size: @font-size-nav-personal; line-height: @line-height-nav-personal; - white-space: nowrap; } } diff --git a/resources/skins.vector.styles/MenuDropdown.less b/resources/skins.vector.styles/MenuDropdown.less new file mode 100644 index 0000000..2ae43bd --- /dev/null +++ b/resources/skins.vector.styles/MenuDropdown.less @@ -0,0 +1,160 @@ +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +/* Variants and Actions */ +.vector-menu-dropdown { + direction: ltr; + float: left; + cursor: pointer; + position: relative; + line-height: 1.125em; + + h3 { + color: @color-base--subtle; + position: relative; + display: block; + .box-sizing( border-box ); + // `padding-top` needs to scale with font-size. + padding-top: 1.25em; + padding-left: 8px; + padding-right: unit( 24 / @font-size-tabs / @font-size-browser, em ); + font-size: @font-size-tabs; + font-weight: normal; + + &:after { + content: ''; + .background-image-svg( 'images/arrow-down.svg', 'images/arrow-down.png' ); + background-position: 100% 50%; + background-repeat: no-repeat; + position: absolute; + top: unit( 10 / @font-size-tabs / @font-size-browser, em ); + right: 8px; + bottom: 0; + width: unit( 16 / @font-size-tabs / @font-size-browser, em ); + // Modify the color of the image from the default #202122 to approx. #404244 to match the text. + opacity: 0.84; + } + + &:hover, + &:focus { + color: @color-base; + + &:after { + opacity: 1; + } + } + } + + // The menu itself. + .vector-menu-content-list { + background-color: @background-color-base; + list-style: none none; + // Match the width of the dropdown "heading" (the tab) + min-width: 100%; + position: absolute; + top: 2.5em; + left: -@border-width-base; + margin: 0; + border: @border-width-base @border-style-base @border-color-base; + border-top-width: 0; + padding: 0; + box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); + text-align: left; + opacity: 0; + visibility: hidden; + .transition( opacity 100ms ); + z-index: @z-index-menu; + } + + &:hover .vector-menu-content-list { + opacity: 1; + visibility: visible; + } + + // This is in a separate block, so that browsers supporting :hover but not :checked still apply the rule above + // Support: IE8 + .vector-menu-checkbox:checked ~ .vector-menu-content .vector-menu-content-list { + opacity: 1; + visibility: visible; + } + + li { + padding: 0; + margin: 0; + text-align: left; + line-height: 1em; + + a { + color: @color-link; + display: block; + padding: 0.625em; + white-space: nowrap; + cursor: pointer; + font-size: @font-size-tabs; + } + } + + .selected a, + .selected a:visited { + color: @color-link-selected; + text-decoration: none; + } +} + +#mw-head .vector-menu-dropdown h3 { + // Tab separator: Outer end (right in LTR) border of "Actions" menu. + background-position: right bottom; + float: left; + height: unit( 40 / @font-size-tabs / @font-size-browser, em ); + margin: 0 -@border-width-base 0 0; + // `padding-right` >= `1px` effectively moves the "background border" outside of the element to + // act like a real border. It is necessary for `.vector-menu-dropdown .vector-menu-content-list` dropdown to align well. + // 0.5em equals `8px` at computed `font-size` of `14px` as visually harmonically with + // `padding-left` in `.vector-menu-dropdown h3 a` + padding-right: unit( 24 / @font-size-tabs / @font-size-browser, em ); +} + +// Tab Separators +// `.vectorTabs`: Outer start border (left in LTR) of tab row. +// `.vectorTabs a`: Border between tabs and outer end (right in LTR) border. +// `#mw-head .vector-menu-dropdown h3`: // Outer end (right in LTR) border of "Actions" menu. +.vector-menu-tabs, +.vector-menu-tabs a, +#mw-head .vector-menu-dropdown h3 { + background-image: url( images/tab-separator.png ); + background-image: linear-gradient( to bottom, rgba( 167, 215, 249, 0 ) 0, @border-color-content 100% ); + background-repeat: no-repeat; + // Contain gradient to 1px × 100% size and draw from top to bottom-left or -right corner. + background-size: @border-width-base 100%; +} + +// Invisible checkbox covering the dropdown menu handle +.vector-menu-checkbox { + cursor: pointer; + position: absolute; + top: 0; + left: 0; + z-index: @z-index-menu-checkbox; + opacity: 0; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + // Hide the checkbox completely in browsers that don't support :checked + display: none; + + :not( :checked ) > & { + // When the browser supports :checked, display it + display: block; + } + + &:checked + h3:after { + transform: scaleY( -1 ); + } + + &:focus + h3 { + // Simulate browser focus ring + outline: dotted 1px; // Firefox style + outline: auto -webkit-focus-ring-color; // Webkit style + } +} diff --git a/resources/skins.vector.styles/MenuPortal.less b/resources/skins.vector.styles/MenuPortal.less new file mode 100644 index 0000000..57e53a9 --- /dev/null +++ b/resources/skins.vector.styles/MenuPortal.less @@ -0,0 +1,53 @@ +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +// FIXME: For cached HTML +.portal, +.vector-menu-portal { + margin: 0 @margin-end-portal 0 @margin-start-portal; + padding: 0.25em 0; + direction: ltr; + + h3 { + display: block; + background-image: url( images/portal-separator.png ); // Support: IE 8 & 9, Fx 3.6-15, Safari 5.1-6, Chrome 10-25 + background-image: linear-gradient( to right, @border-color-portal-heading-transparent 0, @border-color-portal-heading 33%, @border-color-portal-heading 66%, @border-color-portal-heading-transparent 100% ); // Standard (Firefox 16+, IE 10+, Safari 6.1+, Chrome 26+) + background-position: center bottom; + background-repeat: no-repeat; + background-size: 100% @border-width-base; + color: @color-base--subtle; + margin: 0.5em 0 0 ( @margin-start-nav-main-body / @font-size-nav-main-heading ); + border: 0; + padding: 0.25em 0; + font-size: @font-size-nav-main-heading; + font-weight: normal; + cursor: default; + } + + .body { + margin-left: @margin-start-portal-body; + padding-top: 0; + + ul { + list-style: none none; + margin: 0; + padding-top: 0.3em; + } + + li { + margin: 0; + padding: 0.25em 0; + font-size: @font-size-portal-list-item; + line-height: @line-height-nav; + word-wrap: break-word; + + a { + color: @color-link; + + &:visited { + color: @color-link--visited; + } + } + } + } +} diff --git a/resources/skins.vector.styles/MenuTabs.less b/resources/skins.vector.styles/MenuTabs.less new file mode 100644 index 0000000..5ee80ee --- /dev/null +++ b/resources/skins.vector.styles/MenuTabs.less @@ -0,0 +1,86 @@ +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +/** + * Styling for namespace tabs (page, discussion) and views (read, edit, view history, watch and other actions) + */ + +/* Namespaces and Views */ +.vector-menu-tabs { + // Tab separator: Outer start border (left in LTR) of tab row. + background-position: left bottom; + float: left; + height: 2.5em; + padding-left: @border-width-base; + + /* Navigation Labels */ + h3 { + display: none; + } + + ul { + float: left; + height: 100%; + list-style: none none; + margin: 0; + padding: 0; + } + + li { + // Tab fade background: Fade inside from light grey to white. + background-image: url( images/tab-normal-fade.png ); // Support: IE 8 & 9, Fx 3.6-15, Safari 5.1-6, Chrome 10-25 + background-image: linear-gradient( to top, @border-color-content--tabs-inactive 0, #e8f2f8 1px, #fff 100% ); // Support: Standard (Firefox 16+, IE 10+, Safari 6.1+, Chrome 26+) + background-position: left bottom; + background-repeat: repeat-x; + float: left; + display: block; + height: 100%; + margin: 0; + padding: 0; + line-height: @line-height-nav; + white-space: nowrap; + + a { + // Tab separator: Border between tabs and outer right border. + background-position: right bottom; + color: @color-link; + .box-sizing( border-box ); + display: block; + float: left; + height: unit( 40 / @font-size-tabs / @font-size-browser, em ); + position: relative; + padding-top: 1.25em; + padding-left: 8px; + padding-right: 8px; + font-size: @font-size-tabs; + cursor: pointer; + } + } + + .new { + a, + a:visited { + color: @color-link-new; + } + } + + .selected { + // Replace tab fade with flat color (matching top of would-be fade). + background-image: url( images/tab-current-fade.png ); + // Overwrite above in browsers that support `rgba()`. + background: rgba( 255, 255, 255, 1 ); // stylelint-disable-line declaration-block-no-shorthand-property-overrides + + a, + a:visited { + color: @color-link-selected; + text-decoration: none; + } + } + + .icon { + a { + background-position: right bottom; + background-repeat: no-repeat; + } + } +} diff --git a/components/search.less b/resources/skins.vector.styles/SearchBox.less similarity index 68% rename from components/search.less rename to resources/skins.vector.styles/SearchBox.less index f310d79..515cfa0 100644 --- a/components/search.less +++ b/resources/skins.vector.styles/SearchBox.less @@ -1,5 +1,6 @@ -@import 'mediawiki.mixins'; -@import 'mediawiki.ui/variables'; +@import 'mediawiki.mixins.less'; +@import 'mediawiki.ui/variables.less'; +@import '../../variables.less'; /* Search */ #p-search { @@ -14,43 +15,46 @@ } } +// Defined as `div`. +// Provide extra element for gadgets due to `form` already carrying an `id`. #simpleSearch { - display: block; - width: 13.2em; - width: 20vw; /* responsive width */ + position: relative; min-width: 5em; + // Support: IE 8, Firefox 18-, Chrome 19-, Safari 5.1-, Opera 19-, Android 4.4.4-. + width: 13.2em; + // Support: Modern browsers, responsive width. + width: 20vw; max-width: 20em; height: 100%; - margin-top: 0; - position: relative; - min-height: 1px; /* Gotta trigger hasLayout for IE7 */ // Styles for both the search input and the button. input { - // Support IE6-8: Fallback for browsers, which don't support `rgba()`. - background-color: @background-color-base; - background-color: rgba( 0, 0, 0, 0 ); - color: @color-base--emphasized; margin: 0; } } // The search input. - #searchInput { + // Support IE6-8: Fallback for browsers, which don't support `rgba()`. + background-color: @background-color-base; + background-color: rgba( 255, 255, 255, 0.5 ); + color: @color-base--emphasized; width: 100%; .box-sizing( border-box ); - border: @border-width-base @border-style-base @colorGray10; - border-radius: @borderRadius; + border: @border-base; + border-radius: @border-radius-base; // `padding-right` equals to `#searchbutton` width below. padding: 0.4em @width-search-button 0.4em 0.4em; .box-shadow( @boxShadowWidget ); font-size: @font-size-search-input; direction: ltr; .transition( ~'border-color 250ms, box-shadow 250ms' ); - // Support: Webkit browsers. Undo the proprietary styles applied to `type=search` fields, - // we provide our own. - -webkit-appearance: textfield; + + // Undo the proprietary styles, we provide our own. + // Support: Safari/iOS `none` needed, Chrome would accept `textfield` as well. See T247299. + -webkit-appearance: none; + // Support: Firefox. + -moz-appearance: textfield; #simpleSearch:hover & { border-color: @colorGray7; @@ -72,7 +76,7 @@ &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration { - -webkit-appearance: textfield; + display: none; } } @@ -80,6 +84,7 @@ // present the fulltext search one obscures the 'Go' one. #searchButton, #mw-searchButton { + background-color: transparent; position: absolute; top: @border-width-base; bottom: @border-width-base; @@ -99,7 +104,7 @@ text-indent: -99999px; white-space: nowrap; overflow: hidden; - z-index: 1; + z-index: @z-index-search-button; } #searchButton { @@ -107,7 +112,3 @@ background-position: center center; background-repeat: no-repeat; } - -#mw-searchButton { - z-index: 1; -} diff --git a/resources/skins.vector.styles/Sidebar.less b/resources/skins.vector.styles/Sidebar.less new file mode 100644 index 0000000..14ae714 --- /dev/null +++ b/resources/skins.vector.styles/Sidebar.less @@ -0,0 +1,88 @@ +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; +@import './layout.less'; +@import 'legacy/Sidebar.less'; +@import 'checkboxHack.less'; + +@margin-horizontal-sidebar-button-icon: 12px; + +.mw-sidebar-action { + // Align with the portal heading/links + // `.portal` + `.portal .body` + margin: 8px @margin-end-portal 8px @margin-start-portal + @margin-start-portal-body; +} + +.mw-sidebar-action-link { + font-size: @font-size-portal-list-item; + font-weight: bold; +} + +#mw-sidebar-button { + // Override minimum dimensions set by mw-ui-icon.mw-ui-icon-element. + min-width: @size-sidebar-button; + min-height: @size-sidebar-button; + width: @size-sidebar-button; + height: @size-sidebar-button; + border: 1px solid transparent; + border-radius: @border-radius-base; + margin-left: -@margin-horizontal-sidebar-button-icon; + margin-right: @margin-horizontal-sidebar-button-icon; // Accidentally the same. + + &:before { + // FIXME: the icon itself is supposed to be 20px. mediawiki.ui uses 24px. + // As soon as mediawiki.ui is standardized, remove this override. See T191021. + min-width: 20px; + min-height: 20px; + height: 100%; + // Center it horizontally. + margin: 0 @margin-horizontal-sidebar-button-icon; + // Equals `#555`, closest to `#54595d` on background-color `#fff`. + opacity: 0.67; + } + + &:hover { + background-color: @background-color-frameless--hover; + + &:before { + opacity: 1; + } + } + + &:focus { + // Next three rules from OOUI, frameless, icon-only button widget. + outline: 0; + border-color: @color-primary; + .box-shadow( inset 0 0 0 1px @color-primary ); + } +} + +// Use the MediaWiki checkbox hack class from checkboxHack.less. This class exists on the +// checkbox input for the menu panel. +#mw-sidebar-checkbox:not( :checked ) ~ .mw-header .mw-sidebar { + // Turn off presentation so that screen readers get the same effect as visually hiding. + // Visibility and opacity can be animated. If animation is unnecessary, use `display: none` + // instead to avoid hidden rendering. + visibility: hidden; + opacity: 0; + .transform( translateX( -100% ) ); +} + +// Disable transitions on page load. No-JS users will unfortunately miss out. A similar pattern is +// used in Minerva's DropDownList. See enableCssAnimations() in skin.vector.js/index.js for context +// and additional details on how this class is added. +.vector-animations-ready { + // Enable transition on all widths by default. + .mw-sidebar { + @timing: @transition-duration-base ease-out; + .transition( transform @timing, opacity @timing, visibility @timing; ); + } + + // Enable sidebar button transitions. + #mw-sidebar-button { + .transition( + background-color @transition-duration-base, + border-color @transition-duration-base, + box-shadow @transition-duration-base; + ); + } +} diff --git a/resources/skins.vector.styles/SidebarLogo.less b/resources/skins.vector.styles/SidebarLogo.less new file mode 100644 index 0000000..d4b4924 --- /dev/null +++ b/resources/skins.vector.styles/SidebarLogo.less @@ -0,0 +1,17 @@ +@import '../../variables.less'; + +/* Logo */ +#p-logo { + width: 10em; + height: 160px; + margin-bottom: 1em; + + a { + background-position: center center; + background-repeat: no-repeat; + display: block; + width: 10em; + height: 160px; + text-decoration: none; + } +} diff --git a/resources/skins.vector.styles/SiteNotice.less b/resources/skins.vector.styles/SiteNotice.less new file mode 100644 index 0000000..fbac2e1 --- /dev/null +++ b/resources/skins.vector.styles/SiteNotice.less @@ -0,0 +1,6 @@ +@import '../../variables.less'; + +/* Site Notice (includes notices from CentralNotice extension) */ +#siteNotice { + font-size: @font-size-site-notice; +} diff --git a/resources/skins.vector.styles/TabWatchstarLink-ie8.less b/resources/skins.vector.styles/TabWatchstarLink-ie8.less new file mode 100644 index 0000000..a2ea271 --- /dev/null +++ b/resources/skins.vector.styles/TabWatchstarLink-ie8.less @@ -0,0 +1,32 @@ +/*! + * Convert watchstar to text label in IE 8. + * + * Hide the SVG icon and show the text label instead. + * This is in a separate file because it uses a + * @media query, which can't be nested, so we need to include + * this outside the overall '@media screen'. + */ + +// stylelint-disable no-duplicate-selectors + +// Support IE 8: Show label instead (Grade C). +// See https://stackoverflow.com/a/17699986/1696030 +// https://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/media-tests/ +@ie8-media-start: ~'@media \0screen {'; +@ie8-media-end: ~'} after'; +@{ie8-media-start} +.vector-menu-tabs .mw-watchlink.icon a { + width: auto; + height: auto; + // Copied from 'MenuTabs.less'. + padding: 1.25em 8px 0 8px; +} + +// LESS nesting doesn't work in this hack. +.vector-menu-tabs .mw-watchlink.icon a:before { + display: none; +} +// Bogus extra rule for LESS compiler to render `@media` ending bracket. +@{ie8-media-end} { + /* This comment makes the block non-empty. */ +} diff --git a/resources/skins.vector.styles/TabWatchstarLink.less b/resources/skins.vector.styles/TabWatchstarLink.less new file mode 100644 index 0000000..45e632f --- /dev/null +++ b/resources/skins.vector.styles/TabWatchstarLink.less @@ -0,0 +1,72 @@ +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; +@import 'mediawiki.mixins.rotation.less'; + +/* Watch/Unwatch Icon Styling */ +/* Only use icon if the menu item is not collapsed into the "More" dropdown + * (in which case it is inside `.vector-menu-dropdown` instead of `.vector-menu-tabs`). */ +.vector-menu-tabs { + // `#ca-unwatch` & `#ca-watch` both carry `.mw-watchlink` as well. + @width-watchlink: unit( 28 / @font-size-tabs / @font-size-browser, em ); + @height-watchlink: unit( 40 / @font-size-tabs / @font-size-browser, em ); + @size-watchlink-icon: unit( 16 / @font-size-tabs / @font-size-browser, em ); + + .mw-watchlink.icon a { + width: @width-watchlink; + /* This hides the text but shows the background image */ + /* Must not exceed parent's height, otherwise the background disappears on Chrome (T196610) */ + height: 0; + padding: @height-watchlink 0 0 0; + overflow: hidden; + + &:before { + background-repeat: no-repeat; + background-position: 50% 50%; + content: ''; + display: block; + position: absolute; + top: unit( 14 / @font-size-tabs / @font-size-browser, em ); + left: unit( 5 / @font-size-tabs / @font-size-browser, em ); + width: @size-watchlink-icon; + height: @size-watchlink-icon; + } + } + + #ca-unwatch.icon a:before { + background-image: linear-gradient( transparent, transparent ), url( images/unwatch-icon.svg ); + } + + #ca-unwatch.mw-watchlink-temp.icon a:before { + background-image: linear-gradient( transparent, transparent ), url( images/unwatch-temp-icon.svg ); + } + + #ca-watch.icon a:before { + background-image: linear-gradient( transparent, transparent ), url( images/watch-icon.svg ); + } + + #ca-unwatch.icon a:hover:before, + #ca-unwatch.icon a:focus:before { + background-image: linear-gradient( transparent, transparent ), url( images/unwatch-icon-hl.svg ); + } + + #ca-unwatch.mw-watchlink-temp.icon a:hover:before, + #ca-unwatch.mw-watchlink-temp.icon a:focus:before { + background-image: linear-gradient( transparent, transparent ), url( images/unwatch-temp-icon-hl.svg ); + } + + #ca-watch.icon a:hover:before, + #ca-watch.icon a:focus:before { + background-image: linear-gradient( transparent, transparent ), url( images/watch-icon-hl.svg ); + } + + // Loading watchstar link class. + #ca-unwatch.icon .loading:before, + #ca-watch.icon .loading:before { + .rotation( 700ms ); + /* Suppress the hilarious rotating focus outline on Firefox */ + outline: 0; + cursor: default; + pointer-events: none; + .transform-origin( 50% 50% ); + } +} diff --git a/resources/skins.vector.styles/checkboxHack.less b/resources/skins.vector.styles/checkboxHack.less new file mode 100644 index 0000000..335285b --- /dev/null +++ b/resources/skins.vector.styles/checkboxHack.less @@ -0,0 +1,47 @@ +// This file is being considered for Core as part of T252774. + +// Notes: +// +// - Usage requires three elements: a hidden checkbox input, a button, and a show / hide target. +// - By convention, the checked state is considered expanded or visible. Unchecked is considered +// hidden. +// - Please see additional documentation in checkboxHack.js for example HTML and JavaScript +// integration. +// +// Example supplemental styles (to be added on a per use case basis): +// +// - Animate target in and out from start (left in LTR) to end (right in LTR): +// +// .mw-checkbox-hack-checkbox:not( :checked ) ~ .mw-checkbox-hack-target { +// // Turn off presentation so that screen readers get the same effect as visually +// // hiding. Visibility and opacity can be animated. If animation is unnecessary, all +// // of this can be replaced with `display: none` instead to avoid hidden rendering. +// visibility: hidden; +// opacity: 0; +// @timing: @transition-duration-base ease-in-out; +// .transition( transform @timing, opacity @timing, visibility @timing; ); +// .transform( translateX( -100% ) ); +// } +// +// - Show / hide the target instantly without animation: +// +// .mw-checkbox-hack-checkbox:not( :checked ) ~ .mw-checkbox-hack-target { +// display: none; +// } + +@import 'mediawiki.ui/variables.less'; +@import 'mediawiki.mixins.less'; + +.mw-checkbox-hack-checkbox { + // We don't want the browser to focus on the checkbox so we remove it from the + // accessibility tree. Instead, we want the label button to receive focus + // which has a tabindex of '0'. + display: none; +} + +.mw-checkbox-hack-button { + // Labels are inlined by default but are also an icon having width and height specified. + display: inline-block; + // Use the hand icon for the toggle button which is actually a checkbox label. + cursor: pointer; +} diff --git a/resources/skins.vector.styles/common/normalize.less b/resources/skins.vector.styles/common/normalize.less new file mode 100644 index 0000000..94718fc --- /dev/null +++ b/resources/skins.vector.styles/common/normalize.less @@ -0,0 +1,23 @@ +/* + * Normalize styles across rendering engines. + * Ideally, these rules should live in core and be shared across skins. + * + */ + +@import '../../../variables.less'; + +html, +body { + height: 100%; +} + +body { + margin: 0; + padding: 0; +} + +// Support Blink based browsers. +// They use `outline` for focus styles, we're only amending the color here, see T245887. +:focus { + outline-color: @outline-color-base--focus; +} diff --git a/print.less b/resources/skins.vector.styles/common/print.less similarity index 70% rename from print.less rename to resources/skins.vector.styles/common/print.less index e362177..d0dce65 100644 --- a/print.less +++ b/resources/skins.vector.styles/common/print.less @@ -1,37 +1,12 @@ -@import 'variables.less'; -@wmui-color-base0: #000; - -@color-base: @wmui-color-base0; - -@border-color-base: @wmui-color-base0; -@border-color-footer: #eee; - -// We have to render the wordmark image before the print dialog is invoked, otherwise the image -// won't render in the printed file. Use a little hack to render the image outside the viewport -// and bring it in the viewport in print view. -.firstHeading { - // We could also use a CSS background to display the logo. - // The problem is that the logo won't be printed unless the user prints the background too. - // Note. This specification does not fully define the interaction of :before and :after with - // replaced elements (such as IMG in HTML). This will be defined in more detail in a future - // specification. See https://www.w3.org/TR/CSS2/generate.html#before-after-content - & when( @printLogo = 1 ) { - &:before { - content: @printLogoUrl; - display: block; - height: ~'@{printLogoHeight}px'; - left: -9999px; - line-height: 0; // line-height is needed for correctly displaying the size of the content box. - margin-bottom: 20px; - position: absolute; - width: ~'@{printLogoWidth}px'; - } - } -} - @media print { + @wmui-color-base0: #000; - /* These styles retain the existing typography in screen.less + @color-base: @wmui-color-base0; + + @border-color-base: @wmui-color-base0; + @border-color-footer: #eee; + + /* These styles retain the existing typography in skin.less In future (when deploying these styles) we may want to refactor skins.vector.styles to apply certain styles in print as well as screen mode. */ .toc, @@ -43,7 +18,7 @@ // Tables, thumbs and lists are sans-serif in print mode (unlike screen mode) because these will render // more legibly on print media in a smaller font sizes .printfooter, - #footer, + .mw-footer, .thumb, table, ol, @@ -70,7 +45,7 @@ } // Normalize Blue links in the article - a { + a:not( .image ) { border-bottom: 1px solid #aaa; } @@ -79,14 +54,6 @@ line-height: 28pt; margin-bottom: 20px; padding-bottom: 5px; - - // Bring back the wordmark to the viewport (see above how it's rendered outside the viewport). - & when( @printLogo = 1 ) { - &:before { - left: auto; - position: relative; - } - } } // Headings @@ -120,19 +87,19 @@ } h3 { - font-size: 13pt; + font-size: 14pt; line-height: 20pt; } h4, h5, h6 { - font-size: 10pt; - line-height: 15pt; + font-size: 12pt; + line-height: 16pt; } p { - font-size: 10pt; + font-size: 12pt; line-height: 16pt; margin-top: 5px; text-align: justify; @@ -164,7 +131,7 @@ li { padding: 2px 0; - font-size: 10pt; + font-size: 12pt; // T178667: Inline lists in new print styles should not // have a smaller font size than surrounding content @@ -204,8 +171,8 @@ li.toclevel-1 { > a { + font-size: 12pt; font-weight: bold; - font-size: 10pt; } } } @@ -223,7 +190,7 @@ clear: both; } - #footer { + .mw-footer { margin-top: 12px; border-top: 1px solid @border-color-footer; padding-top: 5px; diff --git a/components/common.less b/resources/skins.vector.styles/common/typography.less similarity index 51% rename from components/common.less rename to resources/skins.vector.styles/common/typography.less index 46c6895..9a80b11 100644 --- a/components/common.less +++ b/resources/skins.vector.styles/common/typography.less @@ -1,50 +1,51 @@ /* - * Any rules which should not be flipped automatically in right-to-left situations should be - * prepended with @noflip in a comment block. + * Vector's common typography rules, + * including whitespace with `margin` & `padding` and list bullets + * as part of typographic styles. Iconography wouldn't belong here. * */ -@import 'mediawiki.mixins'; -/* Framework */ +@import '../../../variables.less'; + html { font-size: @font-size-root; } html, body { - height: 100%; - margin: 0; - padding: 0; font-family: @font-family-sans; } -body { - background-color: @background-color-secondary; +ul { + // `list-style-image` sits on `ul` as it inherits and we don't need to worry about `ol`. + // No need for PNG fallback. Fallback is browser default (a smaller, also black, circle). + .list-style-image( 'images/bullet-icon.svg' ); } -/* Content */ -.mw-body, -.parsoid-body { - background-color: @background-color-base; - color: @color-base; - padding: @padding-content; - direction: ltr; +pre, +.mw-code { + line-height: @line-height-code; } -.mw-body, -#mw-data-after-content { - margin-left: 10em; +.mw-jump-link:not( :focus ) { + .mixin-screen-reader-text; } +/* Personal Menu */ +#p-personal li { + font-size: @font-size-nav-personal; +} + +/* Allow edit sections outside of mw-body-content (T160269) */ +.mw-editsection, +.mw-editsection-like { + font-family: @font-family-sans; +} + +/* Main content area, including siteNotice, indicators, firstHeading and `.mw-body-content`. */ .mw-body { - /* Border on top, left, and bottom side */ - border: @border-width-base @border-style-base @border-color-content; - border-right-width: 0; - /* Merge the border with tabs' one (in their background image) */ - margin-top: -@border-width-base; - - // h1's can exist outside of mw-body-content so some heading styles - // need to be defined in mw-body as well + // h1's can exist outside of `.mw-body-content` so some heading styles + // therefore need to be defined in `.mw-body` as well. & h1, &-content h1, &-content h2 { @@ -72,38 +73,14 @@ body { &-content h1 { font-size: @font-size-heading-1; } - - .firstHeading { - /* Change the default from mediawiki.skinning CSS to let indicators float into heading area */ - overflow: visible; - } - - .mw-indicators { - float: right; - font-size: @font-size-base; - line-height: @line-height-base; - /* Ensure that this is displayed on top of .mw-body-content and clickable */ - position: relative; - z-index: 1; - } - - .mw-indicator { - display: inline-block; - zoom: 1; - // Support: IE7 - *display: inline; // stylelint-disable declaration-block-no-duplicate-properties - } } .mw-body-content { - position: relative; font-size: @font-size-base; + // Support IE 9-11, Trident cuts values 2 digits after decimal point. + // `calc` enables to set correct calculation in place again. See T102364. + font-size: calc( 1em ~'*' unit( @font-size-base ) ); line-height: @line-height-base; - z-index: 0; - - p { - margin: 0.5em 0; - } h1 { margin-top: 1em; @@ -143,30 +120,18 @@ body { font-family: @font-family-sans; font-size: @font-size-reset; // Reset. } + + p { + margin: 0.5em 0; + } } -/* Allow edit sections outside of mw-body-content (T160269) */ -.mw-editsection, -.mw-editsection-like { - font-family: @font-family-sans; -} - -/* Hide empty portlets */ -div.emptyPortlet { - display: none; -} - -ul { - // No need for PNG fallback. Fallback is browser default (a smaller, also black, circle). - .list-style-image( 'images/bullet-icon.svg' ); -} - -pre, -.mw-code { - line-height: @line-height-code; -} - -/* Site Notice (includes notices from CentralNotice extension) */ -#siteNotice { - font-size: @font-size-site-notice; +// External links +.mw-parser-output { + .external { + background-position: center right; + background-repeat: no-repeat; + .background-image-svg( 'images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png' ); + padding-right: 13px; + } } diff --git a/images/arrow-collapsed-ltr.png b/resources/skins.vector.styles/images/arrow-collapsed-ltr.png similarity index 100% rename from images/arrow-collapsed-ltr.png rename to resources/skins.vector.styles/images/arrow-collapsed-ltr.png diff --git a/images/arrow-collapsed-rtl.png b/resources/skins.vector.styles/images/arrow-collapsed-rtl.png similarity index 100% rename from images/arrow-collapsed-rtl.png rename to resources/skins.vector.styles/images/arrow-collapsed-rtl.png diff --git a/images/arrow-down.png b/resources/skins.vector.styles/images/arrow-down.png similarity index 100% rename from images/arrow-down.png rename to resources/skins.vector.styles/images/arrow-down.png diff --git a/images/arrow-down.svg b/resources/skins.vector.styles/images/arrow-down.svg similarity index 58% rename from images/arrow-down.svg rename to resources/skins.vector.styles/images/arrow-down.svg index 21f6111..2b2aa4d 100644 --- a/images/arrow-down.svg +++ b/resources/skins.vector.styles/images/arrow-down.svg @@ -1,4 +1,4 @@ - + diff --git a/images/arrow-expanded.png b/resources/skins.vector.styles/images/arrow-expanded.png similarity index 100% rename from images/arrow-expanded.png rename to resources/skins.vector.styles/images/arrow-expanded.png diff --git a/images/bullet-icon.svg b/resources/skins.vector.styles/images/bullet-icon.svg similarity index 68% rename from images/bullet-icon.svg rename to resources/skins.vector.styles/images/bullet-icon.svg index 5009e1d..d047217 100644 --- a/images/bullet-icon.svg +++ b/resources/skins.vector.styles/images/bullet-icon.svg @@ -1,4 +1,4 @@ - + diff --git a/images/external-link-ltr-icon.png b/resources/skins.vector.styles/images/external-link-ltr-icon.png similarity index 100% rename from images/external-link-ltr-icon.png rename to resources/skins.vector.styles/images/external-link-ltr-icon.png diff --git a/images/external-link-ltr-icon.svg b/resources/skins.vector.styles/images/external-link-ltr-icon.svg similarity index 100% rename from images/external-link-ltr-icon.svg rename to resources/skins.vector.styles/images/external-link-ltr-icon.svg diff --git a/images/external-link-rtl-icon.png b/resources/skins.vector.styles/images/external-link-rtl-icon.png similarity index 100% rename from images/external-link-rtl-icon.png rename to resources/skins.vector.styles/images/external-link-rtl-icon.png diff --git a/images/external-link-rtl-icon.svg b/resources/skins.vector.styles/images/external-link-rtl-icon.svg similarity index 100% rename from images/external-link-rtl-icon.svg rename to resources/skins.vector.styles/images/external-link-rtl-icon.svg diff --git a/images/link-icon.png b/resources/skins.vector.styles/images/link-icon.png similarity index 100% rename from images/link-icon.png rename to resources/skins.vector.styles/images/link-icon.png diff --git a/images/magnify-clip.png b/resources/skins.vector.styles/images/magnify-clip.png similarity index 100% rename from images/magnify-clip.png rename to resources/skins.vector.styles/images/magnify-clip.png diff --git a/images/portal-separator.png b/resources/skins.vector.styles/images/portal-separator.png similarity index 100% rename from images/portal-separator.png rename to resources/skins.vector.styles/images/portal-separator.png diff --git a/images/search-fade.png b/resources/skins.vector.styles/images/search-fade.png similarity index 100% rename from images/search-fade.png rename to resources/skins.vector.styles/images/search-fade.png diff --git a/images/search.png b/resources/skins.vector.styles/images/search.png similarity index 100% rename from images/search.png rename to resources/skins.vector.styles/images/search.png diff --git a/images/search.svg b/resources/skins.vector.styles/images/search.svg similarity index 100% rename from images/search.svg rename to resources/skins.vector.styles/images/search.svg diff --git a/images/tab-current-fade.png b/resources/skins.vector.styles/images/tab-current-fade.png similarity index 100% rename from images/tab-current-fade.png rename to resources/skins.vector.styles/images/tab-current-fade.png diff --git a/images/tab-normal-fade.png b/resources/skins.vector.styles/images/tab-normal-fade.png similarity index 100% rename from images/tab-normal-fade.png rename to resources/skins.vector.styles/images/tab-normal-fade.png diff --git a/images/tab-separator.png b/resources/skins.vector.styles/images/tab-separator.png similarity index 100% rename from images/tab-separator.png rename to resources/skins.vector.styles/images/tab-separator.png diff --git a/resources/skins.vector.styles/images/unwatch-icon-hl.svg b/resources/skins.vector.styles/images/unwatch-icon-hl.svg new file mode 100644 index 0000000..ad70d53 --- /dev/null +++ b/resources/skins.vector.styles/images/unwatch-icon-hl.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/skins.vector.styles/images/unwatch-icon.svg b/resources/skins.vector.styles/images/unwatch-icon.svg new file mode 100644 index 0000000..6c876dd --- /dev/null +++ b/resources/skins.vector.styles/images/unwatch-icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/skins.vector.styles/images/unwatch-temp-icon-hl.svg b/resources/skins.vector.styles/images/unwatch-temp-icon-hl.svg new file mode 100644 index 0000000..2bed764 --- /dev/null +++ b/resources/skins.vector.styles/images/unwatch-temp-icon-hl.svg @@ -0,0 +1,18 @@ + + + tempwatch-icon-hl + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/skins.vector.styles/images/unwatch-temp-icon.svg b/resources/skins.vector.styles/images/unwatch-temp-icon.svg new file mode 100644 index 0000000..d50c1ed --- /dev/null +++ b/resources/skins.vector.styles/images/unwatch-temp-icon.svg @@ -0,0 +1,18 @@ + + + tempwatch-icon + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/user-avatar.png b/resources/skins.vector.styles/images/user-avatar.png similarity index 100% rename from images/user-avatar.png rename to resources/skins.vector.styles/images/user-avatar.png diff --git a/images/user-avatar.svg b/resources/skins.vector.styles/images/user-avatar.svg similarity index 100% rename from images/user-avatar.svg rename to resources/skins.vector.styles/images/user-avatar.svg diff --git a/resources/skins.vector.styles/images/watch-icon-hl.svg b/resources/skins.vector.styles/images/watch-icon-hl.svg new file mode 100644 index 0000000..f1e7c1d --- /dev/null +++ b/resources/skins.vector.styles/images/watch-icon-hl.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/skins.vector.styles/images/watch-icon-loading.svg b/resources/skins.vector.styles/images/watch-icon-loading.svg new file mode 100644 index 0000000..81f614b --- /dev/null +++ b/resources/skins.vector.styles/images/watch-icon-loading.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/skins.vector.styles/images/watch-icon.svg b/resources/skins.vector.styles/images/watch-icon.svg new file mode 100644 index 0000000..f00430f --- /dev/null +++ b/resources/skins.vector.styles/images/watch-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/skins.vector.styles/layout-max-width.less b/resources/skins.vector.styles/layout-max-width.less new file mode 100644 index 0000000..d9fc895 --- /dev/null +++ b/resources/skins.vector.styles/layout-max-width.less @@ -0,0 +1,212 @@ +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +// Putting a `skin-vector-max-width` class on the body and wrapping the rules +// herein enables the ability to feature flag the max-width design. This is +// listed in the acceptance criteria of T246420. In other words, if this class +// is present, the max-width design will appear. Without this class, max-width +// design will not appear. In either case, the appearance should not be broken. +.skin-vector-max-width { + @background-color-secondary--modern: #f8f9fa; + @min-width-page-container: 600px; + @max-width-page-container: 1650px; + @padding-horizontal-page-container: 30px; + @min-width-page-container--padded: @max-width-page-container + ( 2 * @padding-horizontal-page-container ); + @background-color-page-container: @background-color-base; + @max-width-workspace-container: 1440px; + @max-width-content-container: 960px; + // TODO: Remove @padding-content in variables.less when the max-width layout + // becomes the default layout since the value is different between legacy and + // latest. + @padding-content: 1.25em 0.5em 1.5em 0.5em; + // We want ~60px of space between the end of the sidebar and the start of the + // content container for aesthetic reasons. The sidebar is already displaced + // -30px so we simply add 30px of space to the width of the sidebar. + @margin-start-content: @width-grid-column-one + unit( 30px / @font-size-browser, em ); + // Page container's total horizontal padding in em units. + @padding-horizontal-page-container-total: 2 * unit( @padding-horizontal-page-container / @font-size-browser, em ); + // Equivalent to 1432px. This determines the maximum width breakpoint at which + // the content will have a fixed start margin applied to it when the sidebar + // is open. The content can shift its position when the sidebar is open/closed + // at or below this breakpoint and will maintain its position above this + // breakpoint. + @max-width-margin-start-content: ( 2 * @margin-start-content ) + @padding-horizontal-page-container-total + ( unit( @max-width-content-container / @font-size-browser, em ) ); + @border-color-sidebar: @background-color-secondary--modern; + + // Style overrides for existing elements. Mostly overrides layout.less rules. + background-color: @background-color-secondary--modern; + + .mw-body { + border-left: 0; + border-bottom: 0; + padding: @padding-content; + } + + .parsoid-body { + padding: @padding-content; + } + + .mw-header { + padding-left: 0; + padding-right: 0; + } + + .mw-body, + #mw-data-after-content, + #left-navigation, + .mw-footer { + margin-left: 0; + } + + #mw-head { + width: auto; + left: 0; + right: 0; + } + + #left-navigation { + margin-top: 0; + margin-bottom: 0; + } + + #right-navigation { + margin-top: 0; + } + + #p-personal { + right: 0; + } + + #p-search { + margin-right: 0; + } + + #p-namespaces { + background-image: none; + padding-left: 0; + } + + #mw-panel { + background-image: linear-gradient( to bottom, @background-color-base 0%, @background-color-secondary--modern 10%, @background-color-secondary--modern 90%, @background-color-base 100% ); + // Sidebar is displaced from the workspace container so that the + // sidebar is flush with the edge of the screen at small widths. + left: -@padding-horizontal-page-container; + margin-top: 0; + // To avoid the white part of the gradient colliding with the sidebar links + // we apply top and bottom padding. + padding-top: 8px; + padding-bottom: 40px; + } + + .mw-footer { + border-top: @border-base; + padding: 32px 0 0 0; + } + + // Container logic. + .mw-page-container { + min-width: @min-width-page-container; + max-width: @max-width-page-container; + margin-left: auto; + margin-right: auto; + padding: 0 @padding-horizontal-page-container; + background-color: @background-color-page-container; + } + + // Used as a container for absolutely positioned elements. + .mw-page-container-inner { + position: relative; + } + + .mw-workspace-container { + max-width: @max-width-workspace-container; + margin-left: auto; + margin-right: auto; + } + + .mw-content-container { + max-width: @max-width-content-container; + margin-left: auto; + margin-right: auto; + } + + .mw-article-toolbar-container { + margin-top: @height-header; + // Clear the floats on #left-navigation and #right-navigation. + .mixin-clearfix(); + } + + .mw-sidebar-container { + position: absolute; + top: 0; + left: 0; + right: 0; + } + + .mw-footer-container { + padding-top: 50px; + padding-bottom: 82px; + } + + // For container logic specific to special pages and history pages. + &.action-history, + &.ns-special { + // Allow the max-width of content on history/special pages to be wider than + // the max-width of content on article pages. + .mw-content-container { + max-width: none; + } + + // We want to keep the max-width of the article-toolbar-container the + // same max-width as the article page's content container in order to + // prevent it from moving when going from an article page to a + // history/special page. + .mw-article-toolbar-container { + max-width: @max-width-content-container; + } + + // Adjusts the content when sidebar is open regardless of the viewport width. + .mw-checkbox-hack-checkbox:checked ~ .mw-workspace-container .mw-content-container { + margin-left: @margin-start-content; + } + } + + // We want it to appear like the sidebar is going into/coming out of + // `.mw-page-container`, but we can't use `overflow: hidden` on + // `.mw-page-container` because that will cut off the sidebar. Therefore, we + // calculate the maximum distance from the start of `mw-page-container` to the + // start of the sidebar. + #mw-sidebar-checkbox:not( :checked ) ~ .mw-header .mw-sidebar { + .transform( translateX( -( @max-width-page-container - @max-width-workspace-container ) / 2 ) ); + } + + // Responsive overrides. + @media ( min-width: @min-width-page-container--padded ) { + @border-color: @border-color-sidebar; + + .mw-page-container { + border-left: 1px solid @border-color; + border-right: 1px solid @border-color; + } + } + + @media ( max-width: @max-width-margin-start-content ) { + // Adjusts the content and mw-article-toolbar-container. + .mw-checkbox-hack-checkbox:checked ~ .mw-workspace-container .mw-content-container, + .mw-checkbox-hack-checkbox:checked ~ #mw-navigation .mw-content-container { + margin-left: @margin-start-content; + } + + .mw-sidebar { + // Remove sidebar transition at smaller widths. + .transition( none ); + } + } + + @media ( min-width: ( @max-width-workspace-container + ( 2 * @padding-horizontal-page-container ) ) ) { + #mw-panel { + background: @background-color-page-container; + border-right: 1px solid @border-color-sidebar; + } + } +} diff --git a/resources/skins.vector.styles/layout.less b/resources/skins.vector.styles/layout.less new file mode 100644 index 0000000..706e08d --- /dev/null +++ b/resources/skins.vector.styles/layout.less @@ -0,0 +1,161 @@ +// Layout rules divide the page into sections and how VectorComponents should be arranged in the skin. +// The rules here should only define the layout, not color or typography. + +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +// Modern layout variables +@height-tabs: 2.5em; // Keep in sync with .vector-menu-tabs height. +@margin-top-sidebar: 0.5em; + +// Header sizes defined in the description of T246170 and comment T246170#5957100 +@padding-left-sidebar: 0.5em; +@padding-horizontal-header: @margin-end-portal + + @padding-left-sidebar + + ( @margin-start-nav-main-body / @font-size-nav-main-heading ); +@padding-vertical-header: 0.125em; +@margin-top-header: 0.625em; +@margin-bottom-header: 0.3125em; +@height-logo-icon: 3.125em; // Logo sizes per specification in T245190. +@height-header: @height-logo-icon + + @margin-top-header + @margin-bottom-header + + 2 * @padding-vertical-header; +@width-grid-column-one: 11em; + +body { + // General background/foreground color definition as one exception to the rule. + background-color: @background-color-base; + color: @color-base; + // Vertical scrollbar always visible. + overflow-y: scroll; +} + +.mw-body, +.parsoid-body { + direction: ltr; + padding: @padding-content; +} + +.mw-body { + // Will be removed when we limit content width (T246420). + /* Border on top, left, and bottom side */ + border: @border-width-base @border-style-base @border-color-content; + border-right-width: 0; + /* Merge the border with tabs' one (in their background image) */ + margin-top: -@border-width-base; + + .firstHeading { + /* Change the default from mediawiki.skinning CSS to let indicators float into heading area */ + overflow: visible; + } +} + +/* Space for header above content */ +.mw-header-placeholder { + // Reserve space for the absolute positioned header and tabs. + height: @height-header + @height-tabs; +} + +/* Header layout */ +.mw-header { + position: absolute; + top: 0; + left: 0; + right: 0; + // A height is set to account for projects where no icon is set. + height: @height-logo-icon; + margin: @margin-top-header 0 @margin-bottom-header; + padding: @padding-vertical-header @padding-horizontal-header; + // Vertical centering of header elements (IE>=11), requires flex. + // Non-flex fallback for IE<=9: float rule on the child elements. + .flex-display(); + // https://caniuse.com/#search=align-items + align-items: center; + z-index: @z-index-header; +} + +/* Main column */ +.mw-body, +#mw-data-after-content, +#left-navigation, +.mw-footer { + margin-left: @width-grid-column-one; +} + +/* Content */ +.mw-indicators { + float: right; + z-index: @z-index-indicators; +} + +.mw-body-content { + position: relative; + z-index: @z-index-base; +} + +/* Hide, but keep accessible for screen-readers */ +#mw-navigation h2 { + position: absolute; + top: -9999px; +} + +/* Tabs */ +#mw-head { + position: absolute; + top: 0; + right: 0; + width: 100%; +} + +/* Navigation Containers */ +#left-navigation { + float: left; + margin-top: @height-header; + /* When right nav would overlap left nav, it's placed below it + (normal CSS floats behavior). This rule ensures that no empty space + is shown between them due to right nav's margin-top. Page layout + is still broken, but at least the nav overlaps only the page title + instead of half the content. */ + margin-bottom: -@height-header; +} + +#right-navigation { + float: right; + margin-top: @height-header; +} + +#p-personal { + position: absolute; + top: @top-personal-tools; + right: 0.75em; + z-index: @z-index-personal; + + ul { + // Keep from spilling out into the first column + // For completeness this should also include the width of the logo. + // As a result it is possible for the personal tools to overlap the logo. + padding-left: @width-grid-column-one; + } + + li { + display: inline-block; + } +} + +#mw-panel { + position: absolute; + // The sidebar is absolutely positioned inside the header which applies a top + // margin so we need to subtract this top margin in order to get the correct + // sidebar position. + top: @height-header - @margin-top-header; + left: 0; + width: @width-grid-column-one; + .box-sizing( border-box ); + margin-top: @margin-top-sidebar; + padding-left: @padding-left-sidebar; + z-index: @z-index-sidebar; +} + +.mw-footer { + margin-top: 0; +} diff --git a/resources/skins.vector.styles/legacy/Sidebar.less b/resources/skins.vector.styles/legacy/Sidebar.less new file mode 100644 index 0000000..0da66c4 --- /dev/null +++ b/resources/skins.vector.styles/legacy/Sidebar.less @@ -0,0 +1,18 @@ +@import '../../../variables.less'; + +/* Panel */ +#mw-panel { + font-size: @font-size-nav-main; + + .portal-first { + background-image: none; + + h3 { + display: none; + } + + .body { + margin-left: @margin-start-nav-main-body; + } + } +} diff --git a/resources/skins.vector.styles/legacy/layout.less b/resources/skins.vector.styles/legacy/layout.less new file mode 100644 index 0000000..2169f17 --- /dev/null +++ b/resources/skins.vector.styles/legacy/layout.less @@ -0,0 +1,153 @@ +// Layout rules divide the page into sections and how VectorComponents should be arranged in the skin. +// The rules here should only define the layout, not color or typography. + +@import 'mediawiki.mixins.less'; +@import '../../../variables.less'; + +body { + background-color: @background-color-secondary; + overflow-y: scroll; +} + +.mw-body, +.parsoid-body { + // General background/foreground color definition as one exception to the rule. + background-color: @background-color-base; + color: @color-base; + direction: ltr; + padding: @padding-content; +} + +#p-personal { + position: absolute; + top: @top-personal-tools; + right: 0.75em; + z-index: @z-index-personal; + + ul { + padding-left: 10em; /* Keep from overlapping logo */ + } + + li { + float: left; + } +} + +.mw-body, +#mw-data-after-content { + margin-left: 10em; +} + +.mw-body { + // Merge the border below with tabs' one (in their background image). + margin-top: -@border-width-base; + // Border on top, left, and bottom side. + border: @border-width-base @border-style-base @border-color-content; + border-right-width: 0; + + .firstHeading { + /* Change the default from mediawiki.skinning CSS to let indicators float into heading area */ + overflow: visible; + } +} + +.mw-indicators { + float: right; + z-index: @z-index-indicators; +} + +.mw-body-content { + position: relative; + z-index: @z-index-base; + // Clearfix here for legacy reasons of floated children (gadgets?), + // to be revisited to clarify historic need and possibly remove. + .mixin-clearfix(); +} + +/* Head */ +#mw-page-base { + .vertical-gradient( @background-color-base, @background-color-secondary, 50%, 100% ); + background-position: bottom left; + height: 5em; +} + +#mw-head-base { + margin-top: -5em; + margin-left: 10em; + height: 5em; +} + +/* Hide, but keep accessible for screen-readers */ +#mw-navigation h2 { + position: absolute; + top: -9999px; +} + +#mw-head { + position: absolute; + top: 0; + right: 0; + width: 100%; +} + +/* Navigation Containers */ +#left-navigation { + float: left; + margin-left: 10em; + margin-top: 2.5em; + /* When right nav would overlap left nav, it's placed below it + (normal CSS floats behavior). This rule ensures that no empty space + is shown between them due to right nav's margin-top. Page layout + is still broken, but at least the nav overlaps only the page title + instead of half the content. */ + margin-bottom: -2.5em; +} + +#right-navigation { + float: right; + margin-top: 2.5em; +} + +#mw-panel { + position: absolute; + top: 0; + width: 10em; + left: 0; +} + +.mw-footer { + margin-left: 10em; + margin-top: 0; +} + +/* Vector screen styles for high definition displays. These rules cross the above components and are + grouped together here only for the sake of the media query common to each. */ +@media ( min-width: 982px ) { + .mw-body, + #mw-head-base, + #left-navigation, + #mw-data-after-content, + .mw-footer { + margin-left: 11em; + } + + .mw-body { + padding: 1.25em 1.5em 1.5em 1.5em; + } + + .mw-footer { + padding: 1.25em; + } + + #mw-panel { + padding-left: 0.5em; + } + + #p-search { + margin-right: 1em; + } + + #p-personal { + right: 1em; + } +} diff --git a/resources/skins.vector.styles/skin-legacy.less b/resources/skins.vector.styles/skin-legacy.less new file mode 100644 index 0000000..d5db2fe --- /dev/null +++ b/resources/skins.vector.styles/skin-legacy.less @@ -0,0 +1,30 @@ +// Legacy Vector stylesheets + +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +@media screen { + @import 'common/normalize.less'; + @import 'legacy/layout.less'; + @import 'common/typography.less'; + + // Components + @import 'Indicators.less'; + @import 'SiteNotice.less'; + @import 'Menu.less'; + @import 'SearchBox.less'; + @import 'MenuTabs.less'; + @import 'TabWatchstarLink.less'; + @import 'MenuDropdown.less'; + @import 'MenuPortal.less'; + @import 'legacy/Sidebar.less'; + @import 'SidebarLogo.less'; + @import 'Footer.less'; +} + +// Support: IE8 +// Media query hack required. +@import 'TabWatchstarLink-ie8.less'; + +// Media: Print +@import 'common/print.less'; diff --git a/resources/skins.vector.styles/skin.less b/resources/skins.vector.styles/skin.less new file mode 100644 index 0000000..6a6c7b3 --- /dev/null +++ b/resources/skins.vector.styles/skin.less @@ -0,0 +1,32 @@ +// Modern Vector stylesheets + +@import '../../variables.less'; +@import 'mediawiki.mixins.less'; + +@media screen { + @import 'common/normalize.less'; + @import 'layout.less'; + @import 'layout-max-width.less'; + @import 'common/typography.less'; + + // Components + @import 'Logo.less'; + @import 'Indicators.less'; + @import 'SiteNotice.less'; + @import 'Menu.less'; + @import 'SearchBox.less'; + @import 'MenuTabs.less'; + @import 'TabWatchstarLink.less'; + @import 'MenuDropdown.less'; + @import 'MenuPortal.less'; + @import 'Sidebar.less'; + @import 'SidebarLogo.less'; + @import 'Footer.less'; +} + +// Support: IE8 +// Media query hack required. +@import 'TabWatchstarLink-ie8.less'; + +// Media: Print +@import 'common/print.less'; diff --git a/screen.less b/screen.less deleted file mode 100644 index 4a5e3b8..0000000 --- a/screen.less +++ /dev/null @@ -1,7 +0,0 @@ -/* Vector screen styles */ - -@import 'variables.less'; -@import 'components/common.less'; -@import 'components/navigation.less'; -@import 'components/footer.less'; -@import 'components/externalLinks.less'; diff --git a/skin.json b/skin.json index e162943..b9ae6f7 100644 --- a/skin.json +++ b/skin.json @@ -13,10 +13,7 @@ "license-name": "GPL-2.0-or-later", "type": "skin", "requires": { - "MediaWiki": ">= 1.29.0" - }, - "ConfigRegistry": { - "vector": "GlobalVarConfig::newInstance" + "MediaWiki": ">= 1.35.0" }, "ValidSkinNames": { "vectorgolem": "Vector" @@ -27,48 +24,83 @@ ] }, "AutoloadClasses": { - "Vector\\Hooks": "includes/Hooks.php", "SkinVector": "includes/SkinVector.php", - "VectorTemplate": "includes/VectorTemplate.php", - "Vector\\ResourceLoaderLessModule": "includes/ResourceLoaderLessModule.php" + "VectorTemplate": "includes/VectorTemplate.php" + }, + "AutoloadNamespaces": { + "Vector\\": "includes/" + }, + "ConfigRegistry": { + "vector": "GlobalVarConfig::newInstance" }, "Hooks": { - "BeforePageDisplayMobile": [ - "Vector\\Hooks::onBeforePageDisplayMobile" - ] + "BeforePageDisplay": "Vector\\Hooks::onBeforePageDisplay", + "GetPreferences": "Vector\\Hooks::onGetPreferences", + "PreferencesFormPreSave": "Vector\\Hooks::onPreferencesFormPreSave", + "SkinTemplateNavigation": "Vector\\Hooks::onSkinTemplateNavigation", + "LocalUserCreated": "Vector\\Hooks::onLocalUserCreated", + "OutputPageBodyAttributes": "Vector\\Hooks::onOutputPageBodyAttributes" }, "@note": "When modifying skins.vector.styles definition, make sure the installer still works", "ResourceModules": { + "skins.vector.styles.legacy": { + "class": "ResourceLoaderSkinModule", + "features": [ "normalize", "elements", "content", "interface", "logo", "legacy" ], + "targets": [ + "desktop", + "mobile" + ], + "styles": [ "resources/skins.vector.styles/skin-legacy.less" ] + }, "skins.vector.styles": { - "class": "Vector\\ResourceLoaderLessModule", - "targets": [ "desktop", "mobile" ], - "styles": { - "screen.less": { - "media": "screen" + "class": "ResourceLoaderSkinModule", + "features": [ "normalize", "elements", "content", "interface", "legacy" ], + "targets": [ + "desktop", + "mobile" + ], + "styles": [ "resources/skins.vector.styles/skin.less", "golem.css" ] + }, + "skins.vector.icons": { + "class": "ResourceLoaderImageModule", + "selector": "{name}", + "images": { + "#mw-sidebar-button:before": { + "file": { + "ltr": "resources/skins.vector.icons/chevronHorizontal-ltr.svg", + "rtl": "resources/skins.vector.icons/chevronHorizontal-rtl.svg" + } }, - "golem.css": { - "media": "screen" - }, - "screen-hd.less": { - "media": "screen and ( min-width: 982px )" - }, - "print.less": {} + "#mw-sidebar-checkbox:not( :checked ) ~ .mw-header #mw-sidebar-button:before": "resources/skins.vector.icons/menu.svg" } }, - "skins.vector.styles.responsive": { - "targets": [ "desktop", "mobile" ], - "styles": [ - "responsive.less" - ] + "targets": [ + "desktop", + "mobile" + ], + "styles": [ "resources/skins.vector.styles.responsive.less" ] }, "skins.vector.js": { - "scripts": [ - "vector.js" + "packageFiles": [ + "resources/skins.vector.js/skin.js", + "resources/skins.vector.js/sidebar.js", + "resources/skins.vector.legacy.js/collapsibleTabs.js", + "resources/skins.vector.legacy.js/vector.js" ], "dependencies": [ "mediawiki.util", - "jquery.tabIndex" + "mediawiki.page.ready" + ] + }, + "skins.vector.legacy.js": { + "packageFiles": [ + "resources/skins.vector.legacy.js/skin-legacy.js", + "resources/skins.vector.legacy.js/collapsibleTabs.js", + "resources/skins.vector.legacy.js/vector.js" + ], + "dependencies": [ + "mediawiki.util" ] } }, @@ -79,22 +111,22 @@ "ResourceModuleSkinStyles": { "vector": { "jquery.tipsy": "skinStyles/jquery.tipsy.less", - "jquery.ui.core": [ + "jquery.ui": [ "skinStyles/jquery.ui/jquery.ui.core.css", - "skinStyles/jquery.ui/jquery.ui.theme.css" + "skinStyles/jquery.ui/jquery.ui.theme.css", + "skinStyles/jquery.ui/jquery.ui.accordion.css", + "skinStyles/jquery.ui/jquery.ui.autocomplete.css", + "skinStyles/jquery.ui/jquery.ui.button.css", + "skinStyles/jquery.ui/jquery.ui.datepicker.css", + "skinStyles/jquery.ui/jquery.ui.dialog.css", + "skinStyles/jquery.ui/jquery.ui.menu.css", + "skinStyles/jquery.ui/jquery.ui.progressbar.css", + "skinStyles/jquery.ui/jquery.ui.resizable.css", + "skinStyles/jquery.ui/jquery.ui.selectable.css", + "skinStyles/jquery.ui/jquery.ui.slider.css", + "skinStyles/jquery.ui/jquery.ui.tabs.css", + "skinStyles/jquery.ui/jquery.ui.tooltip.css" ], - "jquery.ui.accordion": "skinStyles/jquery.ui/jquery.ui.accordion.css", - "jquery.ui.autocomplete": "skinStyles/jquery.ui/jquery.ui.autocomplete.css", - "jquery.ui.button": "skinStyles/jquery.ui/jquery.ui.button.css", - "jquery.ui.datepicker": "skinStyles/jquery.ui/jquery.ui.datepicker.css", - "jquery.ui.dialog": "skinStyles/jquery.ui/jquery.ui.dialog.css", - "jquery.ui.menu": "skinStyles/jquery.ui/jquery.ui.menu.css", - "jquery.ui.progressbar": "skinStyles/jquery.ui/jquery.ui.progressbar.css", - "jquery.ui.resizable": "skinStyles/jquery.ui/jquery.ui.resizable.css", - "jquery.ui.selectable": "skinStyles/jquery.ui/jquery.ui.selectable.css", - "jquery.ui.slider": "skinStyles/jquery.ui/jquery.ui.slider.css", - "jquery.ui.tabs": "skinStyles/jquery.ui/jquery.ui.tabs.css", - "jquery.ui.tooltip": "skinStyles/jquery.ui/jquery.ui.tooltip.css", "+mediawiki.action.view.redirectPage": "skinStyles/mediawiki.action.view.redirectPage.less", "+mediawiki.notification": "skinStyles/mediawiki.notification.less", "+oojs-ui-core.styles": "skinStyles/ooui.less", @@ -103,10 +135,41 @@ } }, "config": { - "VectorUseSimpleSearch": true, - "VectorUseIconWatch": true, - "VectorResponsive": false, - "VectorPrintLogo": false + "VectorUseIconWatch": { + "value": true + }, + "VectorResponsive": { + "value": false + }, + "VectorShowSkinPreferences": { + "value": true, + "description": "@var boolean Show skin-specific user preferences on the Special:Preferences appearance tab when true and hide them otherwise." + }, + "VectorDefaultSkinVersion": { + "value": "1", + "description": "@var string:['2'|'1'] The version ('2' for latest, '1' for legacy) of the Vector skin to use for anonymous users and as a fallback. The value is _not_ persisted." + }, + "VectorDefaultSkinVersionForExistingAccounts": { + "value": "1", + "description": "@var string:['2'|'1'] The version ('2' for latest, '1' for legacy) of the Vector skin to use when an existing user has not specified a preference. This configuration is not used for new accounts (see VectorDefaultSkinVersionForNewAccounts) and is impermanent. In the future, this field may contains versions such as \"beta\" which when specified and the BetaFeatures extension is installed, and the user is enrolled, the latest version is used otherwise legacy. The value is _not_ persisted." + }, + "VectorDefaultSkinVersionForNewAccounts": { + "value": "1", + "description": "@var string:['2'|'1'] The version ('2' for latest, '1' for legacy) of the Vector skin to **set** for newly created user accounts. **The value is persisted as a user preference.** This configuration is not used for preexisting accounts (see VectorDefaultSkinVersionForExistingAccounts) and only ever executed once at new account creation time." + }, + "VectorDefaultSidebarVisibleForAuthorisedUser": { + "value": true + }, + "VectorDefaultSidebarVisibleForAnonymousUser": { + "value": false + }, + "VectorLayoutMaxWidth": { + "value": false, + "description": "@var boolean Enables the max-width layout for the latest version of Vector. This is intended to be a very short-lived feature flag whose sole purpose is to derisk the deployment of T246420. It should be removed (and made the default) as quickly as possible." + } }, - "manifest_version": 1 + "ServiceWiringFiles": [ + "includes/ServiceWiring.php" + ], + "manifest_version": 2 } diff --git a/skinStyles/mediawiki.notification.less b/skinStyles/mediawiki.notification.less index 399f61c..d293eae 100644 --- a/skinStyles/mediawiki.notification.less +++ b/skinStyles/mediawiki.notification.less @@ -1,4 +1,4 @@ -@import 'mediawiki.ui/variables'; +@import 'mediawiki.ui/variables.less'; @import '../variables.less'; /* mediawiki.notification */ @@ -12,7 +12,7 @@ } .mw-notification { - border: 1px solid @colorFieldBorder; - border-radius: @borderRadius; + border: @border-base; + border-radius: @border-radius-base; box-shadow: 0 2px 2px 0 rgba( 0, 0, 0, 0.25 ); } diff --git a/skinStyles/ooui.less b/skinStyles/ooui.less index a25e3f9..70543a5 100644 --- a/skinStyles/ooui.less +++ b/skinStyles/ooui.less @@ -3,7 +3,7 @@ .oo-ui-defaultOverlay, .skin-vector .oo-ui-windowManager-modal > .oo-ui-dialog, .skin-vector .ve-ui-overlay-global { - z-index: 101; + z-index: @z-index-overlay; } body > .oo-ui-windowManager, diff --git a/stories/.eslintrc.json b/stories/.eslintrc.json new file mode 100644 index 0000000..0d95fe6 --- /dev/null +++ b/stories/.eslintrc.json @@ -0,0 +1,13 @@ +{ + "root": true, + "extends": [ + "wikimedia", + "wikimedia/language/es6" + ], + "env": { + "browser": true + }, + "parserOptions": { + "sourceType": "module" + } +} diff --git a/stories/Footer.stories.data.js b/stories/Footer.stories.data.js new file mode 100644 index 0000000..2a2a338 --- /dev/null +++ b/stories/Footer.stories.data.js @@ -0,0 +1,80 @@ +/* eslint-disable quotes */ + +import { htmluserlangattributes, placeholder } from './utils'; +import footerTemplate from '!!raw-loader!../includes/templates/Footer.mustache'; + +const FOOTER_ROWS = [ + { + id: 'footer-info', + 'array-items': [ + { + id: 'footer-info-lastmod', + html: 'This page was last modified on 10 January 2020, at 21:24.' + }, + { + id: 'footer-info-copyright', + html: `This text is available under the Creative Commons Attribution-ShareAlike Licence; +additional terms may apply. See Terms of Use for details.` + + } + ] + }, + { + id: 'footer-places', + 'array-items': [ + { + id: 'footer-places-privacy', + html: `Privacy policy` + }, + { + id: 'footer-places-about', + html: `About Wikipedia` + }, + { + id: 'footer-places-disclaimer', + html: `Disclaimers` + }, + { + id: 'footer-places-contact', + html: `Contact Wikipedia` + }, + { + id: 'footer-places-developers', + html: `Developers` + }, + { + id: 'footer-places-statslink', + html: `Statistics` + }, + { + id: 'footer-places-cookiestatement', + html: `Cookie statement` + }, + { + id: 'footer-places-mobileview', + html: `Mobile view` + } + ] + }, + { + id: 'footer-icons', + 'array-items': [ + { + id: 'footer-copyrightico', + html: `Wikimedia Foundation` + }, + { + id: 'footer-poweredbyico', + html: `Powered by MediaWiki` + } + ] + } +]; + +export { footerTemplate }; + +export const FOOTER_TEMPLATE_DATA = { + 'html-userlangattributes': htmluserlangattributes, + 'html-hook-vector-before-footer': placeholder( 'output of VectorBeforeFooter hook (deprecated 1.35)', 20 ), + 'array-footer-rows': FOOTER_ROWS +}; diff --git a/stories/Footer.stories.js b/stories/Footer.stories.js new file mode 100644 index 0000000..0876c38 --- /dev/null +++ b/stories/Footer.stories.js @@ -0,0 +1,10 @@ +import mustache from 'mustache'; +import { FOOTER_TEMPLATE_DATA, footerTemplate } from './Footer.stories.data'; +import '../resources/skins.vector.styles/Footer.less'; +import '../.storybook/common.less'; + +export default { + title: 'Footer' +}; + +export const footer = () => mustache.render( footerTemplate, FOOTER_TEMPLATE_DATA ); diff --git a/stories/Logo.stories.data.js b/stories/Logo.stories.data.js new file mode 100644 index 0000000..670b1c3 --- /dev/null +++ b/stories/Logo.stories.data.js @@ -0,0 +1,83 @@ +/** + * @external LogoOptions + * @external LogoTemplateData + */ + +import logoTemplate from '!!raw-loader!../includes/templates/Logo.mustache'; + +/** + * @type {LogoOptions} + */ +const wordmark = { + src: '/assets/wordmark.svg', + width: 116, + height: 18 +}; + +/** + * @type {LogoOptions} + */ +const tagline = { + src: '/assets/tagline.svg', + width: 117, + height: 13 +}; + +/** + * @type {string} + */ +const icon = '/assets/icon.png'; + +/** + * @type {LogoTemplateData} + */ +const wordmarkTaglineIcon = { + 'data-logos': { + wordmark, tagline, icon + }, + 'msg-sitetitle': 'Wikipedia', + 'msg-sitesubtitle': 'the free encyclopedia' +}; + +/** + * @type {LogoTemplateData} + */ +const wordmarkIcon = { + 'data-logos': { + wordmark, icon + }, + 'msg-sitetitle': 'Wikipedia', + 'msg-sitesubtitle': 'the free encyclopedia' +}; + +/** + * @type {LogoTemplateData} + */ +const wordmarkOnly = { + 'data-logos': { + wordmark + }, + 'msg-sitetitle': 'Wikipedia', + 'msg-sitesubtitle': 'the free encyclopedia' +}; + +/** + * @type {LogoTemplateData} + */ +const noLogo = { + 'data-logos': {}, + 'msg-sitetitle': 'Wikipedia', + 'msg-sitesubtitle': 'the free encyclopedia' +}; + +/** + * @type {Object.} + */ +const LOGO_TEMPLATE_DATA = { + wordmarkTaglineIcon, + wordmarkIcon, + wordmarkOnly, + noLogo +}; + +export { LOGO_TEMPLATE_DATA, logoTemplate }; diff --git a/stories/Logo.stories.js b/stories/Logo.stories.js new file mode 100644 index 0000000..836df0d --- /dev/null +++ b/stories/Logo.stories.js @@ -0,0 +1,27 @@ +import mustache from 'mustache'; +import { logoTemplate, LOGO_TEMPLATE_DATA } from './Logo.stories.data'; +import '../resources/skins.vector.styles/Logo.less'; + +export default { + title: 'Logo' +}; + +export const logo = () => mustache.render( + logoTemplate, + LOGO_TEMPLATE_DATA.wordmarkTaglineIcon +); + +export const logoWordmarkIcon = () => mustache.render( + logoTemplate, + LOGO_TEMPLATE_DATA.wordmarkIcon +); + +export const logoWordmark = () => mustache.render( + logoTemplate, + LOGO_TEMPLATE_DATA.wordmarkOnly +); + +export const noLogo = () => mustache.render( + logoTemplate, + LOGO_TEMPLATE_DATA.noLogo +); diff --git a/stories/Menu.stories.data.js b/stories/Menu.stories.data.js new file mode 100644 index 0000000..fd78025 --- /dev/null +++ b/stories/Menu.stories.data.js @@ -0,0 +1,76 @@ +/** + * @external MenuDefinition + */ + +/* eslint-disable quotes */ + +import menuTemplate from '!!raw-loader!../includes/templates/Menu.mustache'; +import { htmluserlangattributes } from './utils'; + +/** + * @type {MenuDefinition} + */ +const loggedOut = { + id: 'p-personal', + class: 'vector-menu', + 'list-classes': 'vector-menu-content-list', + 'label-id': 'p-personal-label', + label: 'Personal tools', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': `
  • Not logged in
  • Talk
  • Contributions
  • Create account
  • Log in
  • ` +}; + +/** + * @type {MenuDefinition} + */ +const loggedInWithEcho = { + id: 'p-personal', + class: 'vector-menu', + 'list-classes': 'vector-menu-content-list', + 'label-id': 'p-personal-label', + label: 'Personal tools', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': `
  • Jdlrobson
  • Alerts (0)
  • Notices (3)
  • Talk
  • Sandbox
  • Preferences
  • Beta
  • Watchlist
  • Contributions
  • Log out
  • ` +}; + +const ULS_LANGUAGE_SELECTOR = '
  • English
  • '; + +/** + * @type {MenuDefinition} + */ +const defaultMenu = { + id: 'p-generic', + class: 'vector-menu', + 'list-classes': 'vector-menu-content-list', + 'label-id': 'p-generic-label', + label: 'Menu label', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': `
  • Item 1
  • +
  • Item 2
  • +
  • Item 3
  • ` +}; + +/** + * @type {MenuDefinition} + */ +const loggedInWithULS = { + id: 'p-personal', + class: 'vector-menu', + 'list-classes': 'vector-menu-content-list', + 'label-id': 'p-personal-label', + label: 'Personal tools', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': `${ULS_LANGUAGE_SELECTOR}
  • Jdlrobson
  • Alerts (0)
  • Notices (3)
  • Talk
  • Sandbox
  • Preferences
  • Beta
  • Watchlist
  • Contributions
  • Log out
  • ` +}; + +/** + * @type {Object.} + */ +const PERSONAL_MENU_TEMPLATE_DATA = { + loggedOut, + defaultMenu, + loggedInWithEcho, + loggedInWithULS +}; + +export { PERSONAL_MENU_TEMPLATE_DATA, menuTemplate }; diff --git a/stories/Menu.stories.js b/stories/Menu.stories.js new file mode 100644 index 0000000..efac6d4 --- /dev/null +++ b/stories/Menu.stories.js @@ -0,0 +1,22 @@ +import mustache from 'mustache'; +import { menuTemplate, PERSONAL_MENU_TEMPLATE_DATA } from './Menu.stories.data'; +import '../resources/skins.vector.styles/Menu.less'; +import '../.storybook/common.less'; + +export default { + title: 'Menu' +}; + +export const menu = () => mustache.render( + menuTemplate, + PERSONAL_MENU_TEMPLATE_DATA.defaultMenu +); + +export const loggedOut = () => mustache.render( menuTemplate, + PERSONAL_MENU_TEMPLATE_DATA.loggedOut ); + +export const loggedInWithEcho = () => mustache.render( menuTemplate, + PERSONAL_MENU_TEMPLATE_DATA.loggedInWithEcho ); + +export const loggedInWithULS = () => mustache.render( menuTemplate, + PERSONAL_MENU_TEMPLATE_DATA.loggedInWithULS ); diff --git a/stories/MenuDropdown.stories.data.js b/stories/MenuDropdown.stories.data.js new file mode 100644 index 0000000..edddd5f --- /dev/null +++ b/stories/MenuDropdown.stories.data.js @@ -0,0 +1,77 @@ +/** + * @external MenuDefinition + */ + +import vectorMenuTemplate from '!!raw-loader!../includes/templates/Menu.mustache'; +import { htmluserlangattributes } from './utils'; + +export { vectorMenuTemplate }; + +/** + * @type {MenuDefinition} + */ +export const moreData = { + 'is-dropdown': true, + class: 'vector-menu-dropdown', + 'list-classes': 'vector-menu-content-list', + label: 'More', + id: 'p-cactions', + 'label-id': 'p-cactions-label', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': `
  • + Delete +
  • +
  • + Move +
  • +
  • + Protect +
  • ` +}; + +/** + * @type {MenuDefinition} + */ +export const variantsData = { + 'is-dropdown': true, + class: 'vector-menu-dropdown', + 'list-classes': 'vector-menu-content-list', + label: '新加坡简体', + id: 'p-variants', + 'label-id': 'p-variants-label', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': `
  • + 不转换
  • +
  • + 简体 +
  • +
  • + 繁體 +
  • +
  • + 大陆简体 +
  • +
  • + 香港繁體 +
  • +
  • + 澳門繁體 +
  • +
  • + 新加坡简体 +
  • +
  • + 臺灣正體 +
  • ` +}; diff --git a/stories/MenuDropdown.stories.js b/stories/MenuDropdown.stories.js new file mode 100644 index 0000000..cb3d43f --- /dev/null +++ b/stories/MenuDropdown.stories.js @@ -0,0 +1,12 @@ +import mustache from 'mustache'; +import '../resources/skins.vector.styles/MenuDropdown.less'; +import '../.storybook/common.less'; +import { vectorMenuTemplate, moreData, variantsData } from './MenuDropdown.stories.data'; + +export default { + title: 'MenuDropdown' +}; + +export const more = () => mustache.render( vectorMenuTemplate, moreData ); + +export const variants = () => mustache.render( vectorMenuTemplate, variantsData ); diff --git a/stories/MenuPortal.stories.data.js b/stories/MenuPortal.stories.data.js new file mode 100644 index 0000000..eea9dcd --- /dev/null +++ b/stories/MenuPortal.stories.data.js @@ -0,0 +1,111 @@ +/** + * @external MenuDefinition + */ + +/* eslint-disable quotes */ + +import mustache from 'mustache'; +import { vectorMenuTemplate as portalTemplate } from './MenuDropdown.stories.data'; +import '../resources/skins.vector.styles/MenuPortal.less'; +import '../.storybook/common.less'; +import { placeholder, htmluserlangattributes } from './utils'; + +/** + * @param {MenuDefinition} data + * @return {HTMLElement} + */ +export const wrapPortlet = ( data ) => { + const node = document.createElement( 'div' ); + node.setAttribute( 'id', 'mw-panel' ); + node.innerHTML = mustache.render( portalTemplate, data ); + return node; +}; + +/** + * @param {string} html + * @return {string} + */ +const portletAfter = ( html ) => { + return `
    ${html}
    `; +}; + +/** + * @type {Object.} + */ +export const PORTALS = { + example: { + id: 'p-example', + class: 'vector-menu-portal portal', + 'list-classes': 'vector-menu-content-list', + 'html-tooltip': 'Message tooltip-p-example acts as tooltip', + label: 'Portal title', + 'label-id': 'p-example-label', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': ` +
  • A list of links
  • +
  • with ids
  • +
  • on each list item
  • +`, + 'html-after-portal': portletAfter( + placeholder( `

    Beware: The BaseTemplateAfterPortlet hook can be used to inject arbitary HTML here for any portlet.

    `, 60 ) + ) + }, + navigation: { + id: 'p-navigation', + class: 'portal portal-first', + 'list-classes': 'vector-menu-content-list', + 'html-tooltip': 'A message tooltip-p-navigation must exist for this to appear', + label: 'Navigation', + 'label-id': 'p-navigation-label', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': ` +
  • Main page
  • Contents
  • Featured content
  • Current events
  • Random page
  • Donate
  • +`, + 'html-after-portal': portletAfter( placeholder( 'Possible hook output (navigation)', 50 ) ) + }, + toolbox: { + id: 'p-tb', + class: 'vector-menu-portal portal', + 'list-classes': 'vector-menu-content-list', + 'html-tooltip': 'A message tooltip-p-tb must exist for this to appear', + label: 'Tools', + 'label-id': 'p-tb-label', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': ` +
  • What links here
  • Related changes
  • Upload file
  • Special pages
  • Page information
  • Wikidata item
  • Cite this page
  • +`, + 'html-after-portal': portletAfter( placeholder( 'Possible hook output (tb)', 50 ) ) + }, + langlinks: { + id: 'p-lang', + class: 'vector-menu-portal portal', + 'list-classes': 'vector-menu-content-list', + 'html-tooltip': 'A message tooltip-p-lang must exist for this to appear', + label: 'In other languages', + 'label-id': 'p-lang-label', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': ` +
    +${placeholder( `

    Further hook output possible (lang)

    `, 60 )}` + ) + }, + otherProjects: { + id: 'p-wikibase-otherprojects', + class: 'vector-menu-portal portal', + 'list-classes': 'vector-menu-content-list', + 'html-tooltip': 'A message tooltip-p-wikibase-otherprojects must exist for this to appear', + label: 'In other projects', + 'label-id': 'p-wikibase-otherprojects-label', + 'html-userlangattributes': htmluserlangattributes, + + 'html-items': ` + `, + 'html-after-portal': '' + } +}; diff --git a/stories/MenuPortal.stories.js b/stories/MenuPortal.stories.js new file mode 100644 index 0000000..fc774f4 --- /dev/null +++ b/stories/MenuPortal.stories.js @@ -0,0 +1,11 @@ +import { PORTALS, wrapPortlet } from './MenuPortal.stories.data'; + +export default { + title: 'MenuPortal' +}; + +export const portal = () => wrapPortlet( PORTALS.example ); +export const navigationPortal = () => wrapPortlet( PORTALS.navigation ); +export const toolbox = () => wrapPortlet( PORTALS.toolbox ); +export const langlinks = () => wrapPortlet( PORTALS.langlinks ); +export const otherProjects = () => wrapPortlet( PORTALS.otherProjects ); diff --git a/stories/MenuTabs.stories.data.js b/stories/MenuTabs.stories.data.js new file mode 100644 index 0000000..d9061eb --- /dev/null +++ b/stories/MenuTabs.stories.data.js @@ -0,0 +1,42 @@ +/** + * @external MenuDefinition + */ + +import { htmluserlangattributes } from './utils'; + +/** + * @type {MenuDefinition} + */ +export const pageActionsData = { + id: 'p-views', + class: 'vector-menu-tabs vectorTabs', + 'list-classes': 'vector-menu-content-list', + 'label-id': 'p-views-label', + label: 'Views', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': `
  • + Read +
  • +
  • + View source
  • +
  • + View history +
  • + +` +}; + +/** + * @type {MenuDefinition} + */ +export const namespaceTabsData = { + id: 'p-namespaces', + class: 'vector-menu-tabs vectorTabs', + 'list-classes': 'vector-menu-content-list', + 'label-id': 'p-namespaces-label', + label: 'Namespaces', + 'html-userlangattributes': htmluserlangattributes, + 'html-items': `
  • Main page
  • +
  • Talk (3)
  • ` +}; diff --git a/stories/MenuTabs.stories.js b/stories/MenuTabs.stories.js new file mode 100644 index 0000000..e459cde --- /dev/null +++ b/stories/MenuTabs.stories.js @@ -0,0 +1,14 @@ +import mustache from 'mustache'; +import { menuTemplate as vectorTabsTemplate } from './Menu.stories.data'; +import { namespaceTabsData, pageActionsData } from './MenuTabs.stories.data'; +import '../resources/skins.vector.styles/MenuTabs.less'; +import '../resources/skins.vector.styles/TabWatchstarLink.less'; +import '../.storybook/common.less'; + +export default { + title: 'MenuTabs' +}; + +export const pageActionTabs = () => mustache.render( vectorTabsTemplate, pageActionsData ); + +export const namespaceTabs = () => mustache.render( vectorTabsTemplate, namespaceTabsData ); diff --git a/stories/SearchBox.stories.data.js b/stories/SearchBox.stories.data.js new file mode 100644 index 0000000..0790e6d --- /dev/null +++ b/stories/SearchBox.stories.data.js @@ -0,0 +1,21 @@ +/** + * @external SearchData + */ + +import searchBoxTemplate from '!!raw-loader!../includes/templates/SearchBox.mustache'; +import { htmluserlangattributes } from './utils'; + +export { searchBoxTemplate }; + +/** + * @type {SearchData} + */ +export const searchBoxData = { + 'form-action': '/w/index.php', + 'html-userlangattributes': htmluserlangattributes, + 'msg-search': 'Search', + 'html-input': '', + 'page-title': 'Special:Search', + 'html-button-search-fallback': '', + 'html-button-search': '' +}; diff --git a/stories/SearchBox.stories.js b/stories/SearchBox.stories.js new file mode 100644 index 0000000..bfcc6ba --- /dev/null +++ b/stories/SearchBox.stories.js @@ -0,0 +1,10 @@ +import mustache from 'mustache'; +import '../resources/skins.vector.styles/SearchBox.less'; +import '../.storybook/common.less'; +import { searchBoxData, searchBoxTemplate } from './SearchBox.stories.data'; + +export default { + title: 'SearchBox' +}; + +export const simpleSearch = () => mustache.render( searchBoxTemplate, searchBoxData ); diff --git a/stories/Sidebar.stories.data.js b/stories/Sidebar.stories.data.js new file mode 100644 index 0000000..9a543ff --- /dev/null +++ b/stories/Sidebar.stories.data.js @@ -0,0 +1,69 @@ +/* eslint-disable quotes */ + +import sidebarTemplate from '!!raw-loader!../includes/templates/Sidebar.mustache'; +import sidebarLegacyTemplate from '!!raw-loader!../includes/templates/legacy/Sidebar.mustache'; +import { vectorMenuTemplate } from './MenuDropdown.stories.data'; +import { PORTALS } from './MenuPortal.stories.data'; + +const HTML_LOGO_ATTRIBUTES = `class="mw-wiki-logo" href="/wiki/Main_Page" title="Visit the main page"`; +const SIDEBAR_BEFORE_OUTPUT_HOOKINFO = `Beware: Portals can be added, removed or reordered using +SidebarBeforeOutput hook as in this example.`; + +export { sidebarTemplate, sidebarLegacyTemplate }; + +export const SIDEBAR_TEMPLATE_PARTIALS = { + Menu: vectorMenuTemplate +}; + +export const SIDEBAR_DATA = { + withNoPortals: { + 'has-logo': true, + 'array-portals-rest': [], + 'html-logo-attributes': HTML_LOGO_ATTRIBUTES + }, + withPortalsAndOptOut: { + 'has-logo': false, + 'data-portals-first': PORTALS.navigation, + 'data-emphasized-sidebar-action': { + href: '#', + text: 'Switch to old look', + title: 'Change your settings to go back to the old look of the skin (legacy Vector)' + }, + 'array-portals-rest': [ + PORTALS.toolbox, + PORTALS.otherProjects + ], + 'data-portals-languages': PORTALS.langlinks, + 'html-logo-attributes': HTML_LOGO_ATTRIBUTES + }, + withPortals: { + 'has-logo': true, + 'data-portals-first': PORTALS.navigation, + 'array-portals-rest': [ + PORTALS.toolbox, + PORTALS.otherProjects + ], + 'data-portals-languages': PORTALS.langlinks, + 'html-logo-attributes': HTML_LOGO_ATTRIBUTES + }, + withoutLogo: { + 'has-logo': false, + 'data-portals-languages': PORTALS.langlinks, + 'array-portals-first': PORTALS.navigation, + 'array-portals-rest': [ + PORTALS.toolbox, + PORTALS.otherProjects + ] + }, + thirdParty: { + 'has-logo': true, + 'array-portals-rest': [ + PORTALS.toolbox, + PORTALS.navigation, + { + 'html-portal-content': SIDEBAR_BEFORE_OUTPUT_HOOKINFO + } + ], + 'html-logo-attributes': HTML_LOGO_ATTRIBUTES + } +}; diff --git a/stories/Sidebar.stories.js b/stories/Sidebar.stories.js new file mode 100644 index 0000000..a455580 --- /dev/null +++ b/stories/Sidebar.stories.js @@ -0,0 +1,31 @@ +import mustache from 'mustache'; +import '../.storybook/common.less'; +import '../resources/skins.vector.styles/Sidebar.less'; +import '../resources/skins.vector.styles/SidebarLogo.less'; +import '../resources/skins.vector.styles/MenuPortal.less'; +import { sidebarTemplate, + sidebarLegacyTemplate, SIDEBAR_DATA, SIDEBAR_TEMPLATE_PARTIALS } from './Sidebar.stories.data'; + +export default { + title: 'Sidebar' +}; + +export const sidebarLegacyWithNoPortals = () => mustache.render( + sidebarLegacyTemplate, SIDEBAR_DATA.withNoPortals, SIDEBAR_TEMPLATE_PARTIALS +); + +export const sidebarLegacyWithPortals = () => mustache.render( + sidebarLegacyTemplate, SIDEBAR_DATA.withPortals, SIDEBAR_TEMPLATE_PARTIALS +); + +export const sidebarModernWithoutLogo = () => mustache.render( + sidebarTemplate, SIDEBAR_DATA.withoutLogo, SIDEBAR_TEMPLATE_PARTIALS +); + +export const sidebarModernWithPortals = () => mustache.render( + sidebarTemplate, SIDEBAR_DATA.withPortals, SIDEBAR_TEMPLATE_PARTIALS +); + +export const sidebarModernThirdParty = () => mustache.render( + sidebarTemplate, SIDEBAR_DATA.thirdParty, SIDEBAR_TEMPLATE_PARTIALS +); diff --git a/stories/legacy.stories.js b/stories/legacy.stories.js new file mode 100644 index 0000000..bcb81db --- /dev/null +++ b/stories/legacy.stories.js @@ -0,0 +1,32 @@ +import mustache from 'mustache'; +import '../resources/skins.vector.styles/skin-legacy.less'; +import legacySkinTemplate from '!!raw-loader!../includes/templates/skin-legacy.mustache'; +import { + LEGACY_TEMPLATE_DATA, + NAVIGATION_TEMPLATE_DATA, + TEMPLATE_PARTIALS +} from './skin.stories.data'; + +export default { + title: 'Skin (legacy)' +}; + +export const vectorLegacyLoggedOut = () => mustache.render( + legacySkinTemplate, + Object.assign( + {}, + LEGACY_TEMPLATE_DATA, + NAVIGATION_TEMPLATE_DATA.loggedOutWithVariants + ), + TEMPLATE_PARTIALS +); + +export const vectorLegacyLoggedIn = () => mustache.render( + legacySkinTemplate, + Object.assign( + {}, + LEGACY_TEMPLATE_DATA, + NAVIGATION_TEMPLATE_DATA.loggedInWithMoreActions + ), + TEMPLATE_PARTIALS +); diff --git a/stories/rawLoader.d.ts b/stories/rawLoader.d.ts new file mode 100644 index 0000000..00e8039 --- /dev/null +++ b/stories/rawLoader.d.ts @@ -0,0 +1,4 @@ +declare module "!!raw-loader!*" { + const src: string; + export default src; +} diff --git a/stories/skin.stories.data.js b/stories/skin.stories.data.js new file mode 100644 index 0000000..50f3266 --- /dev/null +++ b/stories/skin.stories.data.js @@ -0,0 +1,130 @@ +/* eslint-disable quotes */ + +/** + * @external Indicator + */ + +import { htmluserlangattributes } from './utils'; +import { placeholder } from './utils'; + +import { PERSONAL_MENU_TEMPLATE_DATA, menuTemplate } from './Menu.stories.data'; +import { pageActionsData, namespaceTabsData } from './MenuTabs.stories.data'; +import { vectorMenuTemplate, moreData, variantsData } from './MenuDropdown.stories.data'; +import { searchBoxData, searchBoxTemplate } from './SearchBox.stories.data'; +import { SIDEBAR_DATA, SIDEBAR_TEMPLATE_PARTIALS, + sidebarLegacyTemplate, sidebarTemplate } from './Sidebar.stories.data'; +import { FOOTER_TEMPLATE_DATA, footerTemplate } from './Footer.stories.data'; +import { logoTemplate } from './Logo.stories.data'; + +export const NAVIGATION_TEMPLATE_DATA = { + loggedInWithVariantsAndOptOut: { + 'data-personal-menu': PERSONAL_MENU_TEMPLATE_DATA.loggedInWithEcho, + 'data-namespace-tabs': namespaceTabsData, + 'data-page-actions': pageActionsData, + 'data-variants': variantsData, + 'data-search-box': searchBoxData, + 'data-sidebar': SIDEBAR_DATA.withPortalsAndOptOut, + 'html-navigation-heading': 'Navigation menu', + 'html-logo-attributes': `class="mw-wiki-logo" href="/wiki/Main_Page" title="Visit the main page"` + }, + loggedOutWithVariants: { + 'data-personal-menu': PERSONAL_MENU_TEMPLATE_DATA.loggedOut, + 'data-namespace-tabs': namespaceTabsData, + 'data-page-actions': pageActionsData, + 'data-variants': variantsData, + 'data-search-box': searchBoxData, + 'data-sidebar': SIDEBAR_DATA.withPortals, + 'html-navigation-heading': 'Navigation menu', + 'html-logo-attributes': `class="mw-wiki-logo" href="/wiki/Main_Page" title="Visit the main page"` + }, + loggedInWithMoreActions: { + 'data-personal-menu': PERSONAL_MENU_TEMPLATE_DATA.loggedInWithEcho, + 'data-namespace-tabs': namespaceTabsData, + 'data-page-actions': pageActionsData, + 'data-page-actions-more': moreData, + 'data-search-box': searchBoxData, + 'data-sidebar': SIDEBAR_DATA.withPortals, + 'html-navigation-heading': 'Navigation menu', + 'html-logo-attributes': `class="mw-wiki-logo" href="/wiki/Main_Page" title="Visit the main page"` + } +}; + +export const TEMPLATE_PARTIALS = Object.assign( {}, SIDEBAR_TEMPLATE_PARTIALS, { + Logo: logoTemplate, + SearchBox: searchBoxTemplate, + 'legacy/Sidebar': sidebarLegacyTemplate, + Sidebar: sidebarTemplate, + VectorMenu: vectorMenuTemplate, + Menu: menuTemplate, + Footer: footerTemplate +} ); + +/** + * @type {Indicator[]} + */ +const DATA_INDICATORS = [ { + id: 'mw-indicator-good-star', + class: 'mw-indicator', + html: ` + This is a good article. Follow the link for more information. + ` +}, +{ + id: 'mw-indicator-pp-autoreview', + class: 'mw-indicator', + html: ` + Page protected with pending changes + ` +} ]; + +export const LEGACY_TEMPLATE_DATA = { + 'html-title': 'Vector 2019', + 'page-isarticle': true, + 'msg-tagline': 'From Wikipedia, the free encyclopedia', + 'html-userlangattributes': htmluserlangattributes, + 'msg-vector-jumptonavigation': 'Jump to navigation', + 'msg-vector-jumptosearch': 'Jump to search', + + // site specific + 'data-footer': FOOTER_TEMPLATE_DATA, + 'html-site-notice': placeholder( 'a site notice or central notice banner may go here', 70 ), + + // article dependent + 'html-body-content': `${placeholder( 'Article content goes here' )} + `, + 'html-categories': placeholder( 'Category links component from mediawiki core', 50 ), + + // extension dependent.. + 'html-hook-vector-before-footer': placeholder( 'VectorBeforeFooter hook output', 100 ), + 'html-after-content': placeholder( 'Extensions can add here e.g. Related Articles.', 100 ), + 'array-indicators': DATA_INDICATORS, + 'html-subtitle': placeholder( 'Extensions can configure subtitle', 20 ) +}; + +export const MODERN_TEMPLATE_DATA = { + 'html-title': 'Vector 2020', + 'page-isarticle': true, + 'msg-tagline': 'From Wikipedia, the free encyclopedia', + 'html-userlangattributes': htmluserlangattributes, + 'msg-vector-jumptonavigation': 'Jump to navigation', + 'msg-vector-jumptosearch': 'Jump to search', + + // site specific + 'data-footer': FOOTER_TEMPLATE_DATA, + 'html-site-notice': placeholder( 'a site notice or central notice banner may go here', 70 ), + + // article dependent + 'array-indicators': DATA_INDICATORS, + 'html-body-content': `${placeholder( 'Article content goes here' )} + `, + 'html-categories': placeholder( 'Category links component from mediawiki core', 50 ) +}; diff --git a/stories/types.js b/stories/types.js new file mode 100644 index 0000000..c0223a1 --- /dev/null +++ b/stories/types.js @@ -0,0 +1,65 @@ +/** + * @typedef {Object} Indicator + * @property {string} html of the indicator link. + * @property {string} id of the indicator. + * @property {string} class of the indicator + */ + +/** + * @typedef {Object} LogoOptions + * @property {string} src of logo. Can be relative, absolute or data uri. + * @property {string} [alt] text of logo. + * @property {number} width of asset + * @property {number} height of asset + */ + +/** + * @typedef {Object} ResourceLoaderSkinModuleLogos + * @property {string} [icon] e.g. Wikipedia globe + * @property {LogoOptions} [wordmark] e.g. Legacy Vector logo + * @property {LogoOptions} [tagline] e.g. Legacy Vector logo + */ + +/** + * @typedef {Object} LogoTemplateData + * @property {ResourceLoaderSkinModuleLogos} data-logos as configured, + * the return value of ResourceLoaderSkinModule::getAvailableLogos. + * @property {string} msg-sitetitle alternate text for wordmark + href the url to navigate to on click. + * @property {string} msg-sitesubtitle alternate text for tagline. + */ + +/** + * @typedef {Object} SidebarData + * @property {MenuDefinition} data-portals-languages + * @property {MenuDefinition} data-portals-first + * @property {MenuDefinition[]} array-portals-rest + * @property {boolean} [has-logo] whether to show a logo or not. + */ + +/** + * @typedef {Object} SearchData + * @property {string|null} msg-search + * @property {string} [html-userlangattributes] + * @property {string} form-action URL + * @property {string|null} html-input + * @property {string|null} page-title the title of the search page + * @property {string|null} html-button-search-fallback + * @property {string|null} html-button-search + */ + +/** + * @typedef {Object} MenuDefinition + * @property {string} id + * @property {string} label-id + * @property {string} label + * @property {string} html-items + * @property {string} [html-tooltip] + * @property {string} [class] of menu + * @property {string} list-classes of the unordered list element inside the menu + * @property {string} [html-userlangattributes] + * @property {boolean} [is-dropdown] + * @property {string} [html-hook-vector-after-toolbox] Deprecated and used + * by the toolbox portal menu. + * @property {string} [html-after-portal] Additional HTML specific to portal menus. + */ diff --git a/stories/utils.js b/stories/utils.js new file mode 100644 index 0000000..eb066a2 --- /dev/null +++ b/stories/utils.js @@ -0,0 +1,16 @@ +/* eslint-disable quotes */ + +/** + * @param {string} msg + * @param {number} [height=200] + * @return {string} + */ +const placeholder = ( msg, height ) => { + return `
    ${msg}
    `; +}; + +const htmluserlangattributes = `dir="ltr" lang="en-GB"`; + +export { placeholder, htmluserlangattributes }; diff --git a/tests/.eslintrc.json b/tests/.eslintrc.json new file mode 100644 index 0000000..6a37018 --- /dev/null +++ b/tests/.eslintrc.json @@ -0,0 +1,9 @@ +{ + "parserOptions": { + "ecmaVersion": 2017 + }, + "env": { + "es6": true, + "node": true + } +} diff --git a/tests/phpunit/integration/FeatureManagement/Requirements/LatestSkinVersionRequirementTest.php b/tests/phpunit/integration/FeatureManagement/Requirements/LatestSkinVersionRequirementTest.php new file mode 100644 index 0000000..64f4bdd --- /dev/null +++ b/tests/phpunit/integration/FeatureManagement/Requirements/LatestSkinVersionRequirementTest.php @@ -0,0 +1,56 @@ + '1' ] ); + + $requirement = new LatestSkinVersionRequirement( + new SkinVersionLookup( new WebRequest(), $this->getTestUser()->getUser(), $config ) + ); + + $this->assertFalse( $requirement->isMet(), '"1" isn\'t considered latest.' ); + } + + /** + * @covers ::isMet + */ + public function testMet() { + $config = new HashConfig( [ 'VectorDefaultSkinVersionForExistingAccounts' => '2' ] ); + + $requirement = new LatestSkinVersionRequirement( + new SkinVersionLookup( new WebRequest(), $this->getTestUser()->getUser(), $config ) + ); + + $this->assertTrue( $requirement->isMet(), '"2" is considered latest.' ); + } +} diff --git a/tests/phpunit/integration/SkinVersionLookupTest.php b/tests/phpunit/integration/SkinVersionLookupTest.php new file mode 100644 index 0000000..4ba080a --- /dev/null +++ b/tests/phpunit/integration/SkinVersionLookupTest.php @@ -0,0 +1,184 @@ +getMockBuilder( \WebRequest::class )->getMock(); + $request + ->method( 'getVal' ) + ->with( $this->anything(), $this->equalTo( 'beta' ) ) + ->willReturn( 'alpha' ); + + $user = $this->createMock( \User::class ); + $user + ->method( 'isLoggedIn' ) + ->willReturn( false ); + $user + ->method( 'getOption' ) + ->with( $this->anything(), $this->equalTo( '2' ) ) + ->willReturn( 'beta' ); + + $config = new HashConfig( [ + 'VectorDefaultSkinVersion' => '2', + 'VectorDefaultSkinVersionForExistingAccounts' => '1' + ] ); + + $skinVersionLookup = new SkinVersionLookup( $request, $user, $config ); + + $this->assertSame( + $skinVersionLookup->getVersion(), + 'alpha', + 'Query parameter is the first priority.' + ); + $this->assertSame( + $skinVersionLookup->isLegacy(), + false, + 'Version is non-Legacy.' + ); + } + + /** + * @covers ::getVersion + * @covers ::isLegacy + */ + public function testUserPreference() { + $request = $this->getMockBuilder( \WebRequest::class )->getMock(); + $request + ->method( 'getVal' ) + ->with( $this->anything(), $this->equalTo( 'beta' ) ) + ->willReturn( 'beta' ); + + $user = $this->createMock( \User::class ); + $user + ->method( 'isLoggedIn' ) + ->willReturn( false ); + $user + ->method( 'getOption' ) + ->with( $this->anything(), $this->equalTo( '2' ) ) + ->willReturn( 'beta' ); + + $config = new HashConfig( [ + 'VectorDefaultSkinVersion' => '2', + 'VectorDefaultSkinVersionForExistingAccounts' => '1' + ] ); + + $skinVersionLookup = new SkinVersionLookup( $request, $user, $config ); + + $this->assertSame( + $skinVersionLookup->getVersion(), + 'beta', + 'User preference is the second priority.' + ); + $this->assertSame( + $skinVersionLookup->isLegacy(), + false, + 'Version is non-Legacy.' + ); + } + + /** + * @covers ::getVersion + * @covers ::isLegacy + */ + public function testConfigLoggedIn() { + $request = $this->getMockBuilder( \WebRequest::class )->getMock(); + $request + ->method( 'getVal' ) + ->with( $this->anything(), $this->equalTo( '1' ) ) + ->willReturn( '1' ); + + $user = $this->createMock( \User::class ); + $user + ->method( 'isLoggedIn' ) + ->willReturn( true ); + $user + ->method( 'getOption' ) + ->with( $this->anything(), $this->equalTo( '1' ) ) + ->willReturn( '1' ); + + $config = new HashConfig( [ + 'VectorDefaultSkinVersion' => '2', + 'VectorDefaultSkinVersionForExistingAccounts' => '1' + ] ); + + $skinVersionLookup = new SkinVersionLookup( $request, $user, $config ); + + $this->assertSame( + $skinVersionLookup->getVersion(), + '1', + 'Config is the third priority and distinguishes logged in users from anonymous users.' + ); + $this->assertSame( + $skinVersionLookup->isLegacy(), + true, + 'Version is Legacy.' + ); + } + + /** + * @covers ::getVersion + * @covers ::isLegacy + */ + public function testConfigAnon() { + $request = $this->getMockBuilder( \WebRequest::class )->getMock(); + $request + ->method( 'getVal' ) + ->with( $this->anything(), $this->equalTo( '2' ) ) + ->willReturn( '2' ); + + $user = $this->createMock( \User::class ); + $user + ->method( 'isLoggedIn' ) + ->willReturn( false ); + $user + ->method( 'getOption' ) + ->with( $this->anything(), $this->equalTo( '2' ) ) + ->willReturn( '2' ); + + $config = new HashConfig( [ + 'VectorDefaultSkinVersion' => '2', + 'VectorDefaultSkinVersionForExistingAccounts' => '1' + ] ); + + $skinVersionLookup = new SkinVersionLookup( $request, $user, $config ); + + $this->assertSame( + $skinVersionLookup->getVersion(), + '2', + 'Config is the third priority and distinguishes anonymous users from logged in users.' + ); + $this->assertSame( + $skinVersionLookup->isLegacy(), + false, + 'Version is non-Legacy.' + ); + } +} diff --git a/tests/phpunit/integration/VectorHooksTest.php b/tests/phpunit/integration/VectorHooksTest.php new file mode 100644 index 0000000..ed18ae2 --- /dev/null +++ b/tests/phpunit/integration/VectorHooksTest.php @@ -0,0 +1,326 @@ + false, + ] ); + $this->setService( 'Vector.Config', $config ); + + $prefs = []; + Hooks::onGetPreferences( $this->getTestUser()->getUser(), $prefs ); + $this->assertSame( $prefs, [], 'No preferences are added.' ); + } + + /** + * @covers ::onGetPreferences + */ + public function testOnGetPreferencesShowPreferencesEnabledSkinSectionFoundLegacy() { + $config = new HashConfig( [ + 'VectorShowSkinPreferences' => true, + // '1' is Legacy. + 'VectorDefaultSkinVersionForExistingAccounts' => '1', + 'VectorDefaultSidebarVisibleForAuthorisedUser' => true + ] ); + $this->setService( 'Vector.Config', $config ); + + $prefs = [ + 'foo' => [], + 'skin' => [], + 'bar' => [] + ]; + Hooks::onGetPreferences( $this->getTestUser()->getUser(), $prefs ); + $this->assertSame( + $prefs, + [ + 'foo' => [], + 'skin' => [], + 'VectorSkinVersion' => [ + 'type' => 'toggle', + 'label-message' => 'prefs-vector-enable-vector-1-label', + 'help-message' => 'prefs-vector-enable-vector-1-help', + 'section' => SKIN_PREFS_SECTION, + // '1' is enabled which means Legacy. + 'default' => '1', + 'hide-if' => [ '!==', 'wpskin', 'vector' ] + ], + 'VectorSidebarVisible' => [ + 'type' => 'api', + 'default' => true + ], + 'bar' => [] + ], + 'Preferences are inserted directly after skin.' + ); + } + + /** + * @covers ::onGetPreferences + */ + public function testOnGetPreferencesShowPreferencesEnabledSkinSectionMissingLegacy() { + $config = new HashConfig( [ + 'VectorShowSkinPreferences' => true, + // '1' is Legacy. + 'VectorDefaultSkinVersionForExistingAccounts' => '1', + 'VectorDefaultSidebarVisibleForAuthorisedUser' => true + ] ); + $this->setService( 'Vector.Config', $config ); + + $prefs = [ + 'foo' => [], + 'bar' => [] + ]; + Hooks::onGetPreferences( $this->getTestUser()->getUser(), $prefs ); + $this->assertSame( + $prefs, + [ + 'foo' => [], + 'bar' => [], + 'VectorSkinVersion' => [ + 'type' => 'toggle', + 'label-message' => 'prefs-vector-enable-vector-1-label', + 'help-message' => 'prefs-vector-enable-vector-1-help', + 'section' => SKIN_PREFS_SECTION, + // '1' is enabled which means Legacy. + 'default' => '1', + 'hide-if' => [ '!==', 'wpskin', 'vector' ] + ], + 'VectorSidebarVisible' => [ + 'type' => 'api', + 'default' => true + ], + ], + 'Preferences are appended.' + ); + } + + /** + * @covers ::onGetPreferences + */ + public function testOnGetPreferencesShowPreferencesEnabledSkinSectionMissingLatest() { + $config = new HashConfig( [ + 'VectorShowSkinPreferences' => true, + // '2' is latest. + 'VectorDefaultSkinVersionForExistingAccounts' => '2', + 'VectorDefaultSidebarVisibleForAuthorisedUser' => true + ] ); + $this->setService( 'Vector.Config', $config ); + + $prefs = [ + 'foo' => [], + 'bar' => [], + ]; + Hooks::onGetPreferences( $this->getTestUser()->getUser(), $prefs ); + $this->assertSame( + $prefs, + [ + 'foo' => [], + 'bar' => [], + 'VectorSkinVersion' => [ + 'type' => 'toggle', + 'label-message' => 'prefs-vector-enable-vector-1-label', + 'help-message' => 'prefs-vector-enable-vector-1-help', + 'section' => SKIN_PREFS_SECTION, + // '0' is disabled (which means latest). + 'default' => '0', + 'hide-if' => [ '!==', 'wpskin', 'vector' ] + ], + 'VectorSidebarVisible' => [ + 'type' => 'api', + 'default' => true + ], + ], + 'Legacy skin version is disabled.' + ); + } + + /** + * @covers ::onPreferencesFormPreSave + */ + public function testOnPreferencesFormPreSaveVectorEnabledLegacyNewPreference() { + $formData = [ + 'skin' => 'vector', + // True is Legacy. + 'VectorSkinVersion' => true, + ]; + $form = $this->createMock( HTMLForm::class ); + $user = $this->createMock( \User::class ); + $user->expects( $this->once() ) + ->method( 'setOption' ) + // '1' is Legacy. + ->with( 'VectorSkinVersion', '1' ); + $result = true; + $oldPreferences = []; + + Hooks::onPreferencesFormPreSave( $formData, $form, $user, $result, $oldPreferences ); + } + + /** + * @covers ::onPreferencesFormPreSave + */ + public function testOnPreferencesFormPreSaveVectorEnabledLatestNewPreference() { + $formData = [ + 'skin' => 'vector', + // False is latest. + 'VectorSkinVersion' => false, + ]; + $form = $this->createMock( HTMLForm::class ); + $user = $this->createMock( \User::class ); + $user->expects( $this->once() ) + ->method( 'setOption' ) + // '2' is latest. + ->with( 'VectorSkinVersion', '2' ); + $result = true; + $oldPreferences = []; + + Hooks::onPreferencesFormPreSave( $formData, $form, $user, $result, $oldPreferences ); + } + + /** + * @covers ::onPreferencesFormPreSave + */ + public function testOnPreferencesFormPreSaveVectorEnabledNoNewPreference() { + $formData = [ + 'skin' => 'vector', + ]; + $form = $this->createMock( HTMLForm::class ); + $user = $this->createMock( \User::class ); + $user->expects( $this->never() ) + ->method( 'setOption' ); + $result = true; + $oldPreferences = []; + + Hooks::onPreferencesFormPreSave( $formData, $form, $user, $result, $oldPreferences ); + } + + /** + * @covers ::onPreferencesFormPreSave + */ + public function testOnPreferencesFormPreSaveVectorDisabledNoOldPreference() { + $formData = [ + // False is latest. + 'VectorSkinVersion' => false, + ]; + $form = $this->createMock( HTMLForm::class ); + $user = $this->createMock( \User::class ); + $user->expects( $this->never() ) + ->method( 'setOption' ); + $result = true; + $oldPreferences = []; + + Hooks::onPreferencesFormPreSave( $formData, $form, $user, $result, $oldPreferences ); + } + + /** + * @covers ::onPreferencesFormPreSave + */ + public function testOnPreferencesFormPreSaveVectorDisabledOldPreference() { + $formData = [ + // False is latest. + 'VectorSkinVersion' => false, + ]; + $form = $this->createMock( HTMLForm::class ); + $user = $this->createMock( \User::class ); + $user->expects( $this->once() ) + ->method( 'setOption' ) + ->with( 'VectorSkinVersion', 'old' ); + $result = true; + $oldPreferences = [ + 'VectorSkinVersion' => 'old', + ]; + + Hooks::onPreferencesFormPreSave( $formData, $form, $user, $result, $oldPreferences ); + } + + /** + * @covers ::onLocalUserCreated + */ + public function testOnLocalUserCreatedLegacy() { + $config = new HashConfig( [ + // '1' is Legacy. + 'VectorDefaultSkinVersionForNewAccounts' => '1', + ] ); + $this->setService( 'Vector.Config', $config ); + + $user = $this->createMock( \User::class ); + $user->expects( $this->once() ) + ->method( 'setOption' ) + // '1' is Legacy. + ->with( 'VectorSkinVersion', '1' ); + $isAutoCreated = false; + Hooks::onLocalUserCreated( $user, $isAutoCreated ); + } + + /** + * @covers ::onLocalUserCreated + */ + public function testOnLocalUserCreatedLatest() { + $config = new HashConfig( [ + // '2' is latest. + 'VectorDefaultSkinVersionForNewAccounts' => '2', + ] ); + $this->setService( 'Vector.Config', $config ); + + $user = $this->createMock( \User::class ); + $user->expects( $this->once() ) + ->method( 'setOption' ) + // '2' is latest. + ->with( 'VectorSkinVersion', '2' ); + $isAutoCreated = false; + Hooks::onLocalUserCreated( $user, $isAutoCreated ); + } + + /** + * @covers ::onSkinTemplateNavigation + */ + public function testOnSkinTemplateNavigation() { + $this->setMwGlobals( [ + 'wgVectorUseIconWatch' => true + ] ); + $skin = new SkinVector(); + $contentNavWatch = [ + 'actions' => [ + 'watch' => [ 'class' => 'watch' ], + ] + ]; + $contentNavUnWatch = [ + 'actions' => [ + 'move' => [ 'class' => 'move' ], + 'unwatch' => [], + ], + ]; + + Hooks::onSkinTemplateNavigation( $skin, $contentNavUnWatch ); + Hooks::onSkinTemplateNavigation( $skin, $contentNavWatch ); + + $this->assertTrue( + strpos( $contentNavWatch['views']['watch']['class'], 'icon' ) !== false, + 'Watch list items require an "icon" class' + ); + $this->assertTrue( + strpos( $contentNavUnWatch['views']['unwatch']['class'], 'icon' ) !== false, + 'Unwatch list items require an "icon" class' + ); + $this->assertFalse( + strpos( $contentNavUnWatch['actions']['move']['class'], 'icon' ) !== false, + 'List item other than watch or unwatch should not have an "icon" class' + ); + } +} diff --git a/tests/phpunit/integration/VectorTemplateTest.php b/tests/phpunit/integration/VectorTemplateTest.php new file mode 100644 index 0000000..4736a56 --- /dev/null +++ b/tests/phpunit/integration/VectorTemplateTest.php @@ -0,0 +1,149 @@ +set( 'skin', new \SkinVector() ); + return $template; + } + + /** + * @param string $nodeString an HTML of the node we want to verify + * @param string $tag Tag of the element we want to check + * @param string $attribute Attribute of the element we want to check + * @param string $search Value of the attribute we want to verify + * @return bool + */ + private function expectNodeAttribute( $nodeString, $tag, $attribute, $search ) { + $node = new \DOMDocument(); + $node->loadHTML( $nodeString ); + $element = $node->getElementsByTagName( $tag )->item( 0 ); + if ( !$element ) { + return false; + } + + $values = explode( ' ', $element->getAttribute( $attribute ) ); + return in_array( $search, $values ); + } + + /** + * @covers ::getMenuData + */ + public function testMakeListItemRespectsCollapsibleOption() { + $vectorTemplate = $this->provideVectorTemplateObject(); + $template = TestingAccessWrapper::newFromObject( $vectorTemplate ); + $listItemClass = 'my_test_class'; + $options = [ 'vector-collapsible' => true ]; + $item = [ 'class' => $listItemClass ]; + $propsCollapsible = $template->getMenuData( + 'foo', + [ + 'bar' => $item, + ], + 0, + $options + ); + $propsNonCollapsible = $template->getMenuData( + 'foo', + [ + 'bar' => $item, + ], + 0, + [] + ); + $nonCollapsible = $propsNonCollapsible['html-items']; + $collapsible = $propsCollapsible['html-items']; + + $this->assertTrue( + $this->expectNodeAttribute( $collapsible, 'li', 'class', 'collapsible' ), + 'The collapsible element has to have `collapsible` class' + ); + $this->assertFalse( + $this->expectNodeAttribute( $nonCollapsible, 'li', 'class', 'collapsible' ), + 'The non-collapsible element should not have `collapsible` class' + ); + $this->assertTrue( + $this->expectNodeAttribute( $nonCollapsible, 'li', 'class', $listItemClass ), + 'The non-collapsible element should preserve item class' + ); + } + + /** + * @covers ::getMenuProps + */ + public function testGetMenuProps() { + $title = Title::newFromText( 'SkinTemplateVector' ); + $context = RequestContext::getMain(); + $context->setTitle( $title ); + $context->setLanguage( 'fr' ); + $vectorTemplate = $this->provideVectorTemplateObject(); + // used internally by getPersonalTools + $vectorTemplate->set( 'personal_urls', [] ); + $this->setMwGlobals( 'wgHooks', [ + 'SkinTemplateNavigation' => [ + function ( &$skinTemplate, &$content_navigation ) { + $content_navigation = [ + 'actions' => [], + 'namespaces' => [], + 'variants' => [], + 'views' => [], + ]; + } + ] + ] ); + $openVectorTemplate = TestingAccessWrapper::newFromObject( $vectorTemplate ); + + $props = $openVectorTemplate->getMenuProps(); + $views = $props['data-page-actions']; + $namespaces = $props['data-namespace-tabs']; + + $this->assertSame( $views, [ + 'id' => 'p-views', + 'label-id' => 'p-views-label', + 'label' => $context->msg( 'views' )->text(), + 'list-classes' => 'vector-menu-content-list', + 'html-items' => '', + 'is-dropdown' => false, + 'html-tooltip' => '', + 'html-after-portal' => '', + 'class' => 'vector-menu-empty emptyPortlet vector-menu vector-menu-tabs vectorTabs', + ] ); + + $variants = $props['data-variants']; + $actions = $props['data-page-actions-more']; + $this->assertSame( $namespaces['class'], + 'vector-menu-empty emptyPortlet vector-menu vector-menu-tabs vectorTabs' ); + $this->assertSame( $variants['class'], + 'vector-menu-empty emptyPortlet vector-menu vector-menu-dropdown vectorMenu' ); + $this->assertSame( $actions['class'], + 'vector-menu-empty emptyPortlet vector-menu vector-menu-dropdown vectorMenu' ); + $this->assertSame( $props['data-personal-menu']['class'], + 'vector-menu-empty emptyPortlet vector-menu' ); + } + +} diff --git a/tests/phpunit/unit/FeatureManagement/FeatureManagerTest.php b/tests/phpunit/unit/FeatureManagement/FeatureManagerTest.php new file mode 100644 index 0000000..fd60fc7 --- /dev/null +++ b/tests/phpunit/unit/FeatureManagement/FeatureManagerTest.php @@ -0,0 +1,147 @@ +expectException( \LogicException::class ); + + $featureManager = new FeatureManager(); + $featureManager->registerSimpleRequirement( 'requirementA', true ); + $featureManager->registerSimpleRequirement( 'requirementA', true ); + } + + public static function provideInvalidFeatureConfig() { + return [ + + // ::registerFeature( string, int[] ) will throw an exception. + [ + \Wikimedia\Assert\ParameterAssertionException::class, + [ 1 ], + ], + + // The "bar" requirement hasn't been registered. + [ + \InvalidArgumentException::class, + [ + 'bar', + ], + ], + ]; + } + + /** + * @dataProvider provideInvalidFeatureConfig + * @covers ::registerFeature + */ + public function testRegisterFeatureValidatesConfig( $expectedExceptionType, $config ) { + $this->expectException( $expectedExceptionType ); + + $featureManager = new FeatureManager(); + $featureManager->registerSimpleRequirement( 'requirement', true ); + $featureManager->registerFeature( 'feature', $config ); + } + + /** + * @covers ::isRequirementMet + */ + public function testIsRequirementMet() { + $featureManager = new FeatureManager(); + $featureManager->registerSimpleRequirement( 'enabled', true ); + $featureManager->registerSimpleRequirement( 'disabled', false ); + + $this->assertTrue( $featureManager->isRequirementMet( 'enabled' ) ); + $this->assertFalse( $featureManager->isRequirementMet( 'disabled' ) ); + } + + /** + * @covers ::isRequirementMet + */ + public function testIsRequirementMetThrowsExceptionWhenRequirementIsntRegistered() { + $this->expectException( \InvalidArgumentException::class ); + + $featureManager = new FeatureManager(); + $featureManager->isRequirementMet( 'foo' ); + } + + /** + * @covers ::registerFeature + */ + public function testRegisterFeatureThrowsExceptionWhenFeatureIsRegisteredTwice() { + $this->expectException( \LogicException::class ); + + $featureManager = new FeatureManager(); + $featureManager->registerFeature( 'featureA', [] ); + $featureManager->registerFeature( 'featureA', [] ); + } + + /** + * @covers ::isFeatureEnabled + */ + public function testIsFeatureEnabled() { + $featureManager = new FeatureManager(); + $featureManager->registerSimpleRequirement( 'foo', false ); + $featureManager->registerFeature( 'requiresFoo', 'foo' ); + + $this->assertFalse( + $featureManager->isFeatureEnabled( 'requiresFoo' ), + 'A feature is disabled when the requirement that it requires is disabled.' + ); + + // --- + + $featureManager->registerSimpleRequirement( 'bar', true ); + $featureManager->registerSimpleRequirement( 'baz', true ); + + $featureManager->registerFeature( 'requiresFooBar', [ 'foo', 'bar' ] ); + $featureManager->registerFeature( 'requiresBarBaz', [ 'bar', 'baz' ] ); + + $this->assertFalse( + $featureManager->isFeatureEnabled( 'requiresFooBar' ), + 'A feature is disabled when at least one requirement that it requires is disabled.' + ); + + $this->assertTrue( $featureManager->isFeatureEnabled( 'requiresBarBaz' ) ); + } + + /** + * @covers ::isFeatureEnabled + */ + public function testIsFeatureEnabledThrowsExceptionWhenFeatureIsntRegistered() { + $this->expectException( \InvalidArgumentException::class ); + + $featureManager = new FeatureManager(); + $featureManager->isFeatureEnabled( 'foo' ); + } +} diff --git a/tests/phpunit/unit/FeatureManagement/Requirements/DynamicConfigRequirementTest.php b/tests/phpunit/unit/FeatureManagement/Requirements/DynamicConfigRequirementTest.php new file mode 100644 index 0000000..19d82c3 --- /dev/null +++ b/tests/phpunit/unit/FeatureManagement/Requirements/DynamicConfigRequirementTest.php @@ -0,0 +1,77 @@ + $configValue, + ] ); + + $requirement = new DynamicConfigRequirement( $config, 'Foo', 'Bar' ); + + $this->assertEquals( $requirement->isMet(), $configValue ); + } + + /** + * @covers ::isMet + */ + public function testItCastsConfigValue() { + $config = new \HashConfig( [ + 'Foo' => new \stdClass(), + ] ); + + $requirement = new DynamicConfigRequirement( $config, 'Foo', 'Bar' ); + + $this->assertTrue( $requirement->isMet() ); + } + + /** + * @covers ::getName + */ + public function testItReturnsName() { + $requirement = new DynamicConfigRequirement( + new \HashConfig(), + 'Foo', + 'Bar' + ); + + $this->assertEquals( 'Bar', $requirement->getName() ); + } +} diff --git a/tests/resource-loader-bundlesize.js b/tests/resource-loader-bundlesize.js new file mode 100644 index 0000000..676a76c --- /dev/null +++ b/tests/resource-loader-bundlesize.js @@ -0,0 +1,66 @@ +/** + * ResourceLoader module bandwidth test + * + * Fetches a series of ResourceLoader modules from a ResourceLoader URI and + * pipes their content into a bundlesize command which validates their bytesize + * against a configuration in in ../bundlesize.config.json. + */ + +const + MW_SERVER = process.env.MW_SERVER || 'http://127.0.0.1:8080', + MW_SCRIPT_PATH = process.env.MW_SCRIPT_PATH || '/w', + childProcess = require( 'child_process' ), + fetch = require( 'node-fetch' ).default, + bundles = require( '../bundlesize.config.json' ), + // eslint-disable-next-line es/no-object-assign + bundlesizeEnv = Object.assign( {}, process.env ); + +/** + * Create a ResourceLoader URL based on $MW_SERVER and $MW_SCRIPT_PATH + * + * @param {string} rlModuleName + * @return {string} + */ +function createRLUrl( rlModuleName ) { + return `${MW_SERVER}${MW_SCRIPT_PATH}/load.php?lang=en&modules=${rlModuleName}`; +} + +/** + * Remove the "CI" environment variable so that it is not passed to + * the bundlesize command, resulting in an unnecessary "Github token not found" + * warning. Note: assigning to null or undefined doesn't work because Node casts + * environment variable values to strings. + */ +delete bundlesizeEnv.CI; + +/** + * Fetch each ResourceLoader module defined in the bundlesize config + * and pipe it's content into a bundlesize command. + * The bundlesize stdout and stderr are passed to the parent process, + * so any error in bundlesize will trigger a non-zero exit status for this script. + */ +bundles.forEach( async ( rlModule ) => { + const rlModuleResponse = await fetch( createRLUrl( rlModule.resourceModule ) ), + rlModuleContent = await rlModuleResponse.text(); + + // Execute the bundlesize command. + const cmd = childProcess.spawn( + 'node_modules/.bin/bundlesize-pipe', + [ '--name', rlModule.resourceModule, '--max-size', rlModule.maxSize ], + { + // Stdin is writable stream, stdout and stderr are passed to the parent process. + stdio: [ 'pipe', 'inherit', 'inherit' ], + env: bundlesizeEnv + } + ); + + cmd.stdin.write( rlModuleContent ); + cmd.stdin.end(); + + cmd.on( 'exit', ( code ) => { + if ( code !== 0 ) { + process.exitCode = code || 1; // prevent assigning falsy values. + } + } ); + +} ); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..cba57ae --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "exclude": ["docs", "vendor"], + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "newLine": "lf", + "forceConsistentCasingInFileNames": true, + "pretty": true, + "target": "es5", + "lib": ["dom"], + "allowJs": true, + "checkJs": true, + "noEmit": true + } +} diff --git a/variables.less b/variables.less index 97e98ab..9c657de 100644 --- a/variables.less +++ b/variables.less @@ -1,22 +1,55 @@ -@import 'mediawiki.ui/variables'; +@import 'mediawiki.ui/variables.less'; @font-size-root: 100%; @font-size-browser: 16; // Assumed browser default of `16px` -@font-family-serif: 'Linux Libertine', 'Georgia', 'Times', serif; +// +// == Typography == +// +// Detailed documentation of the font choices: +// https://www.mediawiki.org/wiki/Wikimedia_User_Interface/Use_cases/Font_family_stack +// Source of this font stack definition in WikimediaUI Base: +// https://phabricator.wikimedia.org/source/wikimedia-ui-base/browse/master/wikimedia-ui-base.less$202 +// See T73240 for a related discussion concerning the serif font stack. +// Note: Numbers in Georgia font are non-lining, the font-feature to change this is documented at: +// https://www.mediawiki.org/wiki/Talk:Typography_refresh/Archive_2#Numbers_looks_weird_in_article_title + +@font-family-serif: + 'Linux Libertine', // GNU+Linux, alternative to Times New Roman. + 'Georgia', // Windows, intended as a serif typeface that would appear elegant but + // legible printed small or on low-resolution screens. + 'Times', // Windows, very similar to Times New Roman with subtle differences. + serif; // Platform default: 'Times New Roman' on Windows. + +// +// Body content uses the user setting in browser / the system default sans-serif font: +// Arial on Windows, Roboto on Android. // FIXME: Use WikimediaUI Base's OS specific default sans-serif fonts. + @font-family-sans: sans-serif; + +// Fallback for headings, language: ja,he,ko. See T73240,T65817,T65843,T65844,T65827. @font-family-sans--fallback: sans-serif; -// Page content +// +// == Page content == +// + @background-color-base: #fff; -@color-base: #222; +@color-base: #202122; @color-base--emphasized: #000; +@color-base--subtle: #54595d; @color-link: #0645ad; @color-link--visited: #0b0080; @color-link-new: #a55858; @color-link-selected: @color-base; +// See oojs/ui/src/themes/wikimediaui/common.less. +@background-color-frameless--hover: rgba( 0, 24, 73, 7/255 ); // equivalent to @wmui-color-base90 on white +@color-primary: #36c; // wikimedia-ui-base.less + +@outline-color-base--focus: @color-primary; + @font-size-base: unit( 14 / @font-size-browser, em ); // Equals `0.875em`. @font-size-reset: @font-size-root; @font-size-heading-1: 1.8em; @@ -24,17 +57,21 @@ @font-size-heading-3: 1.2em; @font-size-notification: 0.8em; @font-size-site-notice: 0.8em; +@font-size-footer: unit( 12 / @font-size-browser, em ); @line-height-base: 1.6; @line-height-heading: 1.3; @line-height-code: 1.3; @line-height-footer-info: 1.4; @line-height-footer-buttons: 2; +@size-sidebar-button: unit( 44 / @font-size-browser, em ); // Equals `2.75em`. // FIXME: Use global variable since Echo and CentralNotice use this variable @border-color-content: #a7d7f9; // Due to darker background gradient, border needs to be darkened for aligned visual perception. @border-color-content--tabs-inactive: darken( @border-color-content, 10% ); -@content-line-height: 1.6; +@border-color-portal-heading: #c8ccd1; +// Use `rgba()` notation for better Safari support, see T254489. +@border-color-portal-heading-transparent: rgba( red( @border-color-portal-heading ), green( @border-color-portal-heading ), blue( @border-color-portal-heading ), 0 ); @padding-content: 1em; // Navigation @@ -49,11 +86,27 @@ @font-size-nav-main-heading: unit( 12 / @font-size-browser, em ); // Equals `0.75em`. @font-size-nav-main-body: unit( 12 / @font-size-browser, em ); -@margin-left-nav-main-body: 0.5em; +@margin-start-nav-main-body: 0.5em; + +// Navigation: Portal +// Font size of the Portal links. +@font-size-portal-list-item: @font-size-nav-main-body; + +// Margin space from the start of the Portal (left edge in LTR +// languages). +@margin-start-portal: 0.7em; + +// Margin space from the end of the Portal (right edge in LTR +// languages). +@margin-end-portal: 0.6em; + +// Margin space from the start of the Portal body (left edge in LTR languages). +@margin-start-portal-body: @margin-start-nav-main-body; // Navigation: Personal tools @background-position-nav-personal-icon: left ( 4 / @font-size-browser / @font-size-nav-personal ); @background-size-nav-personal-icon: 14 / @font-size-browser / @font-size-nav-personal; +@top-personal-tools: 6px; @font-size-nav-personal: 0.75em; // Using `unit()` without second parameter to achieve a unitless output for `line-height`. @line-height-nav-personal: unit( 14 / @font-size-browser / @font-size-nav-personal ); // Equals `1.667`. @@ -65,7 +118,30 @@ @width-search-button: 24 / @font-size-browser / @font-size-search-input; @font-size-search-input: unit( 13 / @font-size-browser, em ); // Equals `0.8125em`. -// Footer -// FIXME: Currently calculates at 11.2px, which is worth nothing and unreadable for a big -// part of our audiences. Push up _at least_ to 12px. -@font-size-footer: 0.7em; +// Z-indices +// See skinStyles/jquery.ui/jquery.ui.datepicker.css. +// @z-index-ui-datepicker-cover: -1; +@z-index-base: 0; +@z-index-header: 1; +@z-index-sidebar: 1; +@z-index-menu-checkbox: 1; +@z-index-search-button: 1; +// Ensure that this is displayed on top of .mw-body-content and clickable. +@z-index-indicators: 1; +// See skinStyles/jquery.ui/jquery.ui.slider.css. +// @z-index-ui-slider-range: 1; +// Menus must overlap indicators (@z-index-indicators) and VisualEditor toolbar (z-index: 2). +@z-index-menu: 2; +// See skinStyles/jquery.ui/jquery.ui.slider.css. +// @z-index-ui-slider-handle: 2; +// Display on top of page tabs (T39158, T50078). +@z-index-personal: 100; +@z-index-sidebar-button: 101; +// See skinStyles/jquery.ui/jquery.ui.selectable.css. +// @z-index-ui-selectable-helper: 100; +@z-index-overlay: 101; +// See skinStyles/jquery.ui/jquery.ui.tooltip.css. +// @z-index-ui-tooltip: 9999; + +// Transitions +@transition-duration-base: 100ms;