diff --git a/.eslintignore b/.eslintignore index 68d20451..34e010bf 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,9 @@ +/.storybook/ +/docs/ +/i18n/ +/node_modules/ +/vendor/ + # ES6 files resources/skins.citizen.scripts.search/typeahead-init.js resources/skins.citizen.scripts.search/underscore.partial.js diff --git a/.github/workflows/grunt.yml b/.github/workflows/grunt.yml deleted file mode 100644 index 4cb6940f..00000000 --- a/.github/workflows/grunt.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Grunt - -on: - push: - branches: - - '**' - pull_request: - branches: - - '**' - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Install dependencies - run: | - npm install --save-dev - - #- name: Generate documentation - # run: npm run doc - - - name: Run stylelint autofix - run: npm run fix - - - name: Run eslint and stylelint test - run: npm run test - - # Only patch code when it is a push event - - name: Push the changes - if: github.event_name == 'push' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - git config --global user.name "github-actions" - git config --global user.email "github-actions@users.noreply.github.com" - git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" - git add . - git commit -am "Github CI lint - eslint/stylelint" || echo "No changes to commit" - git push diff --git a/.github/workflows/composer.yml b/.github/workflows/mediawiki.yml similarity index 53% rename from .github/workflows/composer.yml rename to .github/workflows/mediawiki.yml index 91dd6d1f..5541e80d 100644 --- a/.github/workflows/composer.yml +++ b/.github/workflows/mediawiki.yml @@ -1,52 +1,57 @@ -name: Composer - -on: - push: - branches: - - '**' - pull_request: - branches: - - '**' - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Install dependencies - run: composer install --prefer-dist --no-progress --no-suggest - - # Bypass the phpcbf non-standard exit code - - name: Run phpcbf - run: | - sh ./bin/phpcbf.sh - composer fix - - - name: Run parallel-lint, phpcs, minus-x - run: composer test - - # Only patch code when it is a push event - - name: Push the changes - if: github.event_name == 'push' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - git config --global user.name "github-actions" - git config --global user.email "github-actions@users.noreply.github.com" - git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" - git add . - git commit -am "Github CI lint - phpcbf" || echo "No changes to commit" - git pull - git push - - # Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit" - # Docs: https://getcomposer.org/doc/articles/scripts.md - - # - name: Run test suite - # run: composer run-script test +name: MediaWiki CI + +on: + push: + branches: + - '**' + pull_request: + branches: + - '**' + +jobs: + test: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Install dependencies + run: | + composer validate + npm install --save-dev + composer install --prefer-dist --no-progress --no-suggest + + # Bypass the phpcbf non-standard exit code + - name: Check PHP + run: | + sh ./bin/phpcbf.sh + composer fix + composer test + + - name: Check Javascript + run: | + npm run lint:fix:js + npm run lint:js + + - name: Check CSS/LESS + run: | + npm run lint:fix:styles + npm run lint:styles + + - name: Check i18n + run: | + npm run lint:i18n + + # Only patch code when it is a push event + - name: Push the changes + if: github.event_name == 'push' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git config --global user.name "github-actions" + git config --global user.email "github-actions@users.noreply.github.com" + git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" + git add . + git commit -am "Make a dinner reservation - MediaWiki CI" -m "I clean up code to MediaWiki standards" || echo "No changes to commit" + git push diff --git a/.gitignore b/.gitignore index bfd3338f..2cda4e61 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,47 @@ -/composer.lock -/vendor -/node_modules -.eslintcache \ No newline at end of file +# git-deploy status file: +/.deploy + +# Editors +*.kate-swp +*~ +\#*# +.#* +.*.swp +.project +cscope.files +cscope.out +## NetBeans +nbproject* +project.index +## Sublime +sublime-* +sftp-config.json + +# Building & testing +/composer.lock +/docs +/vendor +/node_modules +.eslintcache + +# Operating systems +## Mac OS X +.DS_Store +## Windows +Thumbs.db + +# Misc +.buildpath +.classpath +.idea +.metadata* +.settings +/static* +/tags +/.htaccess +/.htpasswd +.eslintcache + +# Storybook +/.storybook/resolve-less-imports/ +/.storybook/integration.less \ No newline at end of file diff --git a/.phpcs.xml b/.phpcs.xml index a441f41c..2d610fb4 100644 --- a/.phpcs.xml +++ b/.phpcs.xml @@ -1,7 +1,9 @@ - - - - . - */vendor/* - */out/* + + + + . + + + */vendor/* + */out/* \ No newline at end of file diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 00000000..397e2588 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,5 @@ +/.storybook/ +/docs/ +/node_modules/ +/skinStyles/jquery.ui/ +/vendor/ \ No newline at end of file diff --git a/.stylelintrc.json b/.stylelintrc.json index 73ba6c02..fa9bbf19 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -1,14 +1,9 @@ -{ - "extends": "stylelint-config-wikimedia", - "ignoreFiles": "out/**", - "rules": { - "linebreaks": null, - "unit-blacklist": null, - "selector-max-id": 10, - "declaration-no-important": null, - "no-descending-specificity": null, - "time-min-milliseconds": 1, - "unit-no-unknown": null, - "no-duplicate-selectors": null - } -} +{ + "extends": "stylelint-config-wikimedia", + "rules": { + "selector-max-id": null, + "no-descending-specificity": null, + "declaration-no-important": null, + "unit-blacklist": null + } +} \ No newline at end of file diff --git a/.svgo.yml b/.svgo.yml new file mode 100644 index 00000000..a1ac1f11 --- /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/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 31cd2339..00000000 --- a/Gruntfile.js +++ /dev/null @@ -1,33 +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' ], - fix: true - }, - all: [ - '**/*.js{,on}', - '!{vendor,node_modules,docs}/**' - ] - }, - stylelint: { - all: [ - '**/*.{css,less}', - '!node_modules/**', - '!vendor/**' - ] - }, - banana: conf.MessagesDirs - } ); - - grunt.registerTask( 'test', [ 'eslint', 'stylelint', 'banana' ] ); - grunt.registerTask( 'default', 'test' ); -}; diff --git a/README.md b/README.md index f91d665c..dcde1865 100644 --- a/README.md +++ b/README.md @@ -1,88 +1,88 @@ -# Citizen -![](https://github.com/StarCitizenTools/mediawiki-skins-Citizen/workflows/Composer/badge.svg) ![](https://github.com/StarCitizenTools/mediawiki-skins-Citizen/workflows/Grunt/badge.svg) - -Citizen is a responsive skin for [MediaWiki](https://www.mediawiki.org) built by the [Star Citizen Wiki](https://starcitizen.tools) team. Although it is specifically built for the Star Citizen Wiki, the skin should be able to run on any Mediawiki installation that is 1.31 or higher. Due to resource constraints, we might not be able to provide full support for setups that are vastly different than us, but please feel free to submit patches or bug report! - -Live demo can be seen at the [Star Citizen Wiki](https://starcitizen.tools), more avaliable [here](https://wikiapiary.com/wiki/Skin:Citizen). - -## Notable features -* **Fully responsive skin**: Responsive and able to adapt to different screen sizes. πŸ“±πŸ’»πŸ–₯️ -* **Persistent ToC**: Access ToC anywhere in the article. ***Tracking require JS.*** πŸ”πŸ“– -* **Rich search suggestions**: More helpful search suggestions with images and descriptions. ***Require JS.*** πŸ”πŸ‘€ -* **Lazyload images**: Improve load time of your wiki and avoid unnessecary image downloads. ***Require JS.*** πŸš€ -* **Native light/dark mode support**: Respect OS and app configuration for light and dark mode. β˜€οΈπŸŒ™ -* **Webapp manifest**: Give a more app-like experience when user add your wiki to their home screen. πŸ“± -* **HTTP security response headers**: Enhance the security of your wiki from HTTP response headers. πŸ”’πŸ”‘ - -## Installation -1. [Download](https://github.com/StarCitizenTools/mediawiki-skins-Citizen/archive/master.zip) place the file(s) in a directory called `Citizen` in your `skins/` folder. -2. Add the following code at the bottom of your LocalSettings.php: -```php -wfLoadSkin( 'Citizen' ); -``` -3. **βœ”οΈDone** - Navigate to Special:Version on your wiki to verify that the skin is successfully installed. - -## Configurations -**The skin works out of the box without any configurations.** -The config flags allow more customization on the specific features in the skin. - -Note that: -* By default all security-related features are turned off to ensure maximum compatiability. -* If you have a lot of users that does not use javascript, it is recommended to turn off image lazyload as it requires javascript to display images properly. - -### Search suggestions -Name | Description | Values | Default -:--- | :--- | :--- | :--- -`$wgCitizenEnableSearch` | Enable or disable rich search suggestions |`true` - enable; `false` - disable | `true` -`$wgCitizenSearchDescriptionSource` | Source of description text on search suggestions | `wikidata` - Use description provided by [WikibaseLib](Extension:WikibaseLib) or [ShortDescription](https://www.mediawiki.org/wiki/Extension:ShortDescription); `textextracts` - Use description provided by [TextExtracts](https://www.mediawiki.org/wiki/Extension:TextExtracts); `pagedescription` - Use description provided by [Description2](https://www.mediawiki.org/wiki/Extension:Description2) or any other extension that sets the `description` page property | `textextracts` -`$wgCitizenMaxSearchResults` | Max number of search suggestions | Integer > 0 | `6` - -### Image lazyload -Name | Description | Values | Default -:--- | :--- | :--- | :--- -`$wgCitizenEnableLazyload` | Enable or disable image lazyloading | `true` - enable; `false` - disable | `true` -`$wgCitizenThumbnailSize` | Thumbnail size in pixels to use for lazy-loading placeholder | Integer > 0 | `10` - -### Security-related -#### Content Security Policy (CSP) -Name | Description | Values | Default -:--- | :--- | :--- | :--- -`$wgCitizenEnableCSP` | Enable or disable [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy), as an alternative to [`$wgCSPHeader`](https://www.mediawiki.org/wiki/Manual:$wgCSPHeader) in Mediawiki 1.32+ | `true` - enable; `false` - disable | `false` -`$wgCitizenEnableCSPReportMode` | Enable or disable [CSP report only mode](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only), overrides `$wgCitizenEnableCSP` | `true` - enable; `false` - disable | `false` -`$wgCitizenCSPDirective` | The string of yourr CSP directive | See the [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) page | - -#### HTTP Strict Transport Security (HSTS) -Name | Description | Values | Default -:--- | :--- | :--- | :--- -`$wgCitizenEnableHSTS` | Enable or disable [HTTP Strict Transport Security](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) | `true` - enable; `false` - disable | `false` -`$wgCitizenHSTSMaxAge` | Time in second that the browser should remember that a site is only to be accessed using HTTPS | Integer > 0 | `300` -`$wgCitizenHSTSIncludeSubdomains` | Apply HSTS to all of the site's subdomains | `true` - enable; `false` - disable | `false` -`$wgCitizenHSTSPreload` | Enable or disable [HSTS preload](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security#Preloading_Strict_Transport_Security) | `true` - enable; `false` - disable | `false` - -#### Other security headers -Name | Description | Values | Default -:--- | :--- | :--- | :--- -`$wgCitizenEnableDenyXFrameOptions` | Enable or disable the deny [X-Frame-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) header | `true` - enable; `false` - disable | `false` -`$wgCitizenEnableXXSSProtection` | Enable or disable the [X-XSS-Protection header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection) | `true` - enable; `false` - disable | `false` -`$wgCitizenEnableStrictReferrerPolicy` | Enable or disable `strict-origin-when-cross-origin` [referrer policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) header, should be used in conjunction with [`$wgReferrerPolicy`](https://www.mediawiki.org/wiki/Manual:$wgReferrerPolicy) as that only outputs the meta tags | `true` - enable; `false` - disable | `false` -`$wgCitizenEnableFeaturePolicy` | Enable or disable [Feature Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy) | `true` - enable; `false` - disable | `false` -`$wgCitizenFeaturePolicyDirective` | The string of your Feature Policy directive | See the [Feature Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy) page | - -### Webapp manifest -Name | Description | Values | Default -:--- | :--- | :--- | :--- -`$wgCitizenEnableManifest` | Enable or disable [web app manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) | `true` - enable; `false` - disable | `true` -`$wgCitizenManifestThemeColor` | [Theme color](https://developer.mozilla.org/en-US/docs/Web/Manifest/theme_color) of the web app manifest | Hex color code | `#11151d` -`$wgCitizenManifestBackgroundColor` | [Background color](https://developer.mozilla.org/en-US/docs/Web/Manifest/background_color) of the web app manifest | Hex color code | `#fff` - -### Miscellaneous -Name | Description | Values | Default -:--- | :--- | :--- | :--- -`$wgCitizenShowPageTools` | The condition of page tools visibility | `true` - always visible; `login` - visible to logged-in users; `permission` - visible to users with the right permissions | `true` -`$wgCitizenEnablePreconnect` | Enable or disable [preconnect to required origin](https://web.dev/uses-rel-preconnect/) | `true` - enable; `false` - disable | `false` -`$wgCitizenPreconnectURL` | The URL for preconnect to required origin | URL | -`$wgCitizenThemeColor` | The color defined in the `theme-color` meta tag | Hex color code | `#11151d` - -## Requirements -* [MediaWiki](https://www.mediawiki.org) 1.31 or later - +# Citizen +![](https://github.com/StarCitizenTools/mediawiki-skins-Citizen/workflows/MediaWiki%20CI/badge.svg) + +Citizen is a responsive skin for [MediaWiki](https://www.mediawiki.org) built by the [Star Citizen Wiki](https://starcitizen.tools) team. Although it is specifically built for the Star Citizen Wiki, the skin should be able to run on any Mediawiki installation that is 1.31 or higher. Due to resource constraints, we might not be able to provide full support for setups that are vastly different than us, but please feel free to submit patches or bug report! + +Live demo can be seen at the [Star Citizen Wiki](https://starcitizen.tools), more avaliable [here](https://wikiapiary.com/wiki/Skin:Citizen). + +## Notable features +* **Fully responsive skin**: Responsive and able to adapt to different screen sizes. πŸ“±πŸ’»πŸ–₯️ +* **Persistent ToC**: Access ToC anywhere in the article. ***Tracking require JS.*** πŸ”πŸ“– +* **Rich search suggestions**: More helpful search suggestions with images and descriptions. ***Require JS.*** πŸ”πŸ‘€ +* **Lazyload images**: Improve load time of your wiki and avoid unnessecary image downloads. ***Require JS.*** πŸš€ +* **Native light/dark mode support**: Respect OS and app configuration for light and dark mode. β˜€οΈπŸŒ™ +* **Webapp manifest**: Give a more app-like experience when user add your wiki to their home screen. πŸ“± +* **HTTP security response headers**: Enhance the security of your wiki from HTTP response headers. πŸ”’πŸ”‘ + +## Installation +1. [Download](https://github.com/StarCitizenTools/mediawiki-skins-Citizen/archive/master.zip) place the file(s) in a directory called `Citizen` in your `skins/` folder. +2. Add the following code at the bottom of your LocalSettings.php: +```php +wfLoadSkin( 'Citizen' ); +``` +3. **βœ”οΈDone** - Navigate to Special:Version on your wiki to verify that the skin is successfully installed. + +## Configurations +**The skin works out of the box without any configurations.** +The config flags allow more customization on the specific features in the skin. + +Note that: +* By default all security-related features are turned off to ensure maximum compatiability. +* If you have a lot of users that does not use javascript, it is recommended to turn off image lazyload as it requires javascript to display images properly. + +### Search suggestions +Name | Description | Values | Default +:--- | :--- | :--- | :--- +`$wgCitizenEnableSearch` | Enable or disable rich search suggestions |`true` - enable; `false` - disable | `true` +`$wgCitizenSearchDescriptionSource` | Source of description text on search suggestions | `wikidata` - Use description provided by [WikibaseLib](Extension:WikibaseLib) or [ShortDescription](https://www.mediawiki.org/wiki/Extension:ShortDescription); `textextracts` - Use description provided by [TextExtracts](https://www.mediawiki.org/wiki/Extension:TextExtracts); `pagedescription` - Use description provided by [Description2](https://www.mediawiki.org/wiki/Extension:Description2) or any other extension that sets the `description` page property | `textextracts` +`$wgCitizenMaxSearchResults` | Max number of search suggestions | Integer > 0 | `6` + +### Image lazyload +Name | Description | Values | Default +:--- | :--- | :--- | :--- +`$wgCitizenEnableLazyload` | Enable or disable image lazyloading | `true` - enable; `false` - disable | `true` +`$wgCitizenThumbnailSize` | Thumbnail size in pixels to use for lazy-loading placeholder | Integer > 0 | `10` + +### Security-related +#### Content Security Policy (CSP) +Name | Description | Values | Default +:--- | :--- | :--- | :--- +`$wgCitizenEnableCSP` | Enable or disable [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy), as an alternative to [`$wgCSPHeader`](https://www.mediawiki.org/wiki/Manual:$wgCSPHeader) in Mediawiki 1.32+ | `true` - enable; `false` - disable | `false` +`$wgCitizenEnableCSPReportMode` | Enable or disable [CSP report only mode](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only), overrides `$wgCitizenEnableCSP` | `true` - enable; `false` - disable | `false` +`$wgCitizenCSPDirective` | The string of yourr CSP directive | See the [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) page | + +#### HTTP Strict Transport Security (HSTS) +Name | Description | Values | Default +:--- | :--- | :--- | :--- +`$wgCitizenEnableHSTS` | Enable or disable [HTTP Strict Transport Security](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) | `true` - enable; `false` - disable | `false` +`$wgCitizenHSTSMaxAge` | Time in second that the browser should remember that a site is only to be accessed using HTTPS | Integer > 0 | `300` +`$wgCitizenHSTSIncludeSubdomains` | Apply HSTS to all of the site's subdomains | `true` - enable; `false` - disable | `false` +`$wgCitizenHSTSPreload` | Enable or disable [HSTS preload](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security#Preloading_Strict_Transport_Security) | `true` - enable; `false` - disable | `false` + +#### Other security headers +Name | Description | Values | Default +:--- | :--- | :--- | :--- +`$wgCitizenEnableDenyXFrameOptions` | Enable or disable the deny [X-Frame-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) header | `true` - enable; `false` - disable | `false` +`$wgCitizenEnableXXSSProtection` | Enable or disable the [X-XSS-Protection header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection) | `true` - enable; `false` - disable | `false` +`$wgCitizenEnableStrictReferrerPolicy` | Enable or disable `strict-origin-when-cross-origin` [referrer policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy) header, should be used in conjunction with [`$wgReferrerPolicy`](https://www.mediawiki.org/wiki/Manual:$wgReferrerPolicy) as that only outputs the meta tags | `true` - enable; `false` - disable | `false` +`$wgCitizenEnableFeaturePolicy` | Enable or disable [Feature Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy) | `true` - enable; `false` - disable | `false` +`$wgCitizenFeaturePolicyDirective` | The string of your Feature Policy directive | See the [Feature Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy) page | + +### Webapp manifest +Name | Description | Values | Default +:--- | :--- | :--- | :--- +`$wgCitizenEnableManifest` | Enable or disable [web app manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) | `true` - enable; `false` - disable | `true` +`$wgCitizenManifestThemeColor` | [Theme color](https://developer.mozilla.org/en-US/docs/Web/Manifest/theme_color) of the web app manifest | Hex color code | `#11151d` +`$wgCitizenManifestBackgroundColor` | [Background color](https://developer.mozilla.org/en-US/docs/Web/Manifest/background_color) of the web app manifest | Hex color code | `#fff` + +### Miscellaneous +Name | Description | Values | Default +:--- | :--- | :--- | :--- +`$wgCitizenShowPageTools` | The condition of page tools visibility | `true` - always visible; `login` - visible to logged-in users; `permission` - visible to users with the right permissions | `true` +`$wgCitizenEnablePreconnect` | Enable or disable [preconnect to required origin](https://web.dev/uses-rel-preconnect/) | `true` - enable; `false` - disable | `false` +`$wgCitizenPreconnectURL` | The URL for preconnect to required origin | URL | +`$wgCitizenThemeColor` | The color defined in the `theme-color` meta tag | Hex color code | `#11151d` + +## Requirements +* [MediaWiki](https://www.mediawiki.org) 1.31 or later + diff --git a/composer.json b/composer.json index f428096b..cf39206b 100644 --- a/composer.json +++ b/composer.json @@ -1,30 +1,47 @@ -{ - "name": "mediawiki/citizen-skin", - "type": "mediawiki-skin", - "description": "A responsive skin developed for the Star Citizen Wiki", - "keywords": [ - "MediaWiki", - "skin" - ], - "homepage": "https://starcitizen.tools", - "readme": "README.md", - "license": "GPL-3.0", - "require-dev": { - "jakub-onderka/php-parallel-lint": "1.0.0", - "mediawiki/mediawiki-codesniffer": "28.0.0", - "jakub-onderka/php-console-highlighter": "0.4.0", - "mediawiki/minus-x": "0.3.2", - "mediawiki/mediawiki-phan-config": "0.9.0" - }, - "scripts": { - "test": [ - "parallel-lint . --exclude vendor --exclude node_modules", - "phpcs --config-set ignore_warnings_on_exit 1", - "phpcs -p -s", - "minus-x check ." - ], - "fix": [ - "minus-x fix ." - ] - } -} +{ + "name": "mediawiki/citizen-skin", + "type": "mediawiki-skin", + "description": "A responsive skin developed for the Star Citizen Wiki", + "keywords": [ + "wiki", + "MediaWiki", + "skin" + ], + "homepage": "https://www.mediawiki.org/wiki/Skin:Citizen", + "readme": "README.md", + "license": "GPL-3.0", + "authors": [ + { + "name": "alistair3149" + }, + { + "name": "Octfx" + } + ], + "support": { + "wiki": "https://www.mediawiki.org/wiki/Skin:Citizen", + "forum": "https://www.mediawiki.org/wiki/Skin_talk:Citizen", + "source": "https://github.com/StarCitizenTools/mediawiki-skins-Citizen" + }, + "require": { + "composer/installers": ">1.0.12" + }, + "require-dev": { + "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": [ + "minus-x fix ." + ], + "test": [ + "parallel-lint . --exclude node_modules --exclude vendor", + "phpcs --config-set ignore_warnings_on_exit 1", + "phpcs -p -s", + "minus-x check ." + ] + } +} \ No newline at end of file diff --git a/eslintrc.json b/eslintrc.json new file mode 100644 index 00000000..4185f853 --- /dev/null +++ b/eslintrc.json @@ -0,0 +1,17 @@ +{ + "root": true, + "extends": [ + "wikimedia/client", + "wikimedia/jquery", + "wikimedia/mediawiki" + ], + "globals": { + "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/includes/CitizenTemplate.php b/includes/CitizenTemplate.php index ed0bd887..30bad98e 100644 --- a/includes/CitizenTemplate.php +++ b/includes/CitizenTemplate.php @@ -340,9 +340,9 @@ class CitizenTemplate extends BaseTemplate { } /** - * Render page-related links at the bottom - * @return string html - */ + * Render page-related links at the bottom + * @return string html + */ private function buildPageLinks() : array { $contentNavigation = $this->data['content_navigation']; diff --git a/includes/api/ApiWebappManifest.php b/includes/api/ApiWebappManifest.php index b08fac0f..6a59a581 100644 --- a/includes/api/ApiWebappManifest.php +++ b/includes/api/ApiWebappManifest.php @@ -51,7 +51,6 @@ class ApiWebappManifest extends ApiBase { /** * @param ApiResult $result */ - // TODO: Add support for 192 and 512px icons private function addIcons( $result ) { $icons = []; @@ -100,7 +99,7 @@ class ApiWebappManifest extends ApiBase { * Calls getConfig. Returns empty string on exception or $default; * * @param string $key - * @param string|integer $default + * @param string|int|null $default * @return mixed|string * @see Config::get() */ diff --git a/jsdoc.json b/jsdoc.json index fc3035d1..19ad8eb0 100644 --- a/jsdoc.json +++ b/jsdoc.json @@ -1,7 +1,34 @@ -{ - "source": { - "include": [ - "resources/scripts" - ] - } -} +{ + "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": "#" + } + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a04f65d5..21e29a2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,12 +40,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "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 } } }, @@ -59,14 +53,6 @@ "jsesc": "^2.5.1", "lodash": "^4.17.13", "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/helper-function-name": { @@ -269,6 +255,25 @@ "fastq": "^1.6.0" } }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz", + "integrity": "sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz", + "integrity": "sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw==", + "dev": true, + "requires": { + "remark": "^12.0.0", + "unist-util-find-all-after": "^3.0.1" + } + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -281,12 +286,6 @@ "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", "dev": true }, - "@types/node": { - "version": "14.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.10.tgz", - "integrity": "sha512-Bz23oN/5bi0rniKT24ExLf4cK0JdvN3dH/3k0whYkdN4eI4vS2ZW/2ENNn2uxHCzWcbdHIa/GRuWQytfzCjRYw==", - "dev": true - }, "@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -299,42 +298,22 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "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==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/unist": "*", - "@types/vfile-message": "*" - } - }, - "@types/vfile-message": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz", - "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==", - "dev": true, - "requires": { - "vfile-message": "*" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", "dev": true }, "acorn-jsx": { @@ -396,12 +375,6 @@ "sprintf-js": "~1.0.2" } }, - "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=", - "dev": true - }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -420,12 +393,6 @@ "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=", - "dev": true - }, "autoprefixer": { "version": "9.8.0", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", @@ -459,6 +426,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "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 + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -497,25 +470,26 @@ "dev": true }, "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.30001077", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001077.tgz", - "integrity": "sha512-AEzsGvjBJL0lby/87W96PyEvwN0GsYvk5LHsglLg9tW37K4BqvAvoSCdWIE13OZQ8afupqZ73+oL/1LkedN8hA==", + "version": "1.0.30001084", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001084.tgz", + "integrity": "sha512-ftdc5oGmhEbLUuMZ/Qp3mOpzfZLCxPYKcvGv6v2dJJ+8EdqcvZRbAGOiLmkM/PV1QGta/uwBs8/nCl6sokDW6w==", "dev": true }, "catharsis": { @@ -598,11 +572,16 @@ "is-regexp": "^2.0.0" } }, - "coffeescript": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", - "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", - "dev": true + "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" + } }, "collapse-white-space": { "version": "1.0.6", @@ -625,12 +604,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -644,14 +617,6 @@ "dev": true, "requires": { "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } } }, "cosmiconfig": { @@ -665,26 +630,6 @@ "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.7.2" - }, - "dependencies": { - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } } }, "cross-spawn": { @@ -708,29 +653,85 @@ } } }, + "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-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-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": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "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 }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", "dev": true, "requires": { - "array-find-index": "^1.0.1" - } - }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "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 + } } }, "debug": { @@ -756,6 +757,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 + } } }, "deep-is": { @@ -764,6 +773,15 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "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" + } + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -771,14 +789,6 @@ "dev": true, "requires": { "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } } }, "doctrine": { @@ -829,6 +839,12 @@ "domelementtype": "1" } }, + "domino": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.5.tgz", + "integrity": "sha512-vMDo7f6ogUV9PkzmxXLiXzJkJZqU09Le4C40mj+HmAGS/2FPmdetoNOQZXpu2kekn0GJKvtwKMAVoruTj60Xww==", + "dev": true + }, "domutils": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", @@ -840,9 +856,9 @@ } }, "electron-to-chromium": { - "version": "1.3.459", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.459.tgz", - "integrity": "sha512-aN3Z89qEYIwVjzGi9SrcTjjopRZ3STUA6xTufS0fxZy8xOO2iqVw8rYKdT32CHgOKHOYj5KGmz3n6xUKE4QJiQ==", + "version": "1.3.474", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.474.tgz", + "integrity": "sha512-fPkSgT9IBKmVJz02XioNsIpg0WYmkPrvU1lUJblMMJALxyE7/32NGvbJQKKxpNokozPvqfqkuUqVClYsvetcLw==", "dev": true }, "emoji-regex": { @@ -866,6 +882,36 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "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.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "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" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -943,9 +989,9 @@ }, "dependencies": { "eslint-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", - "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "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.1.0" @@ -1089,12 +1135,6 @@ "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=", - "dev": true - }, "execall": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", @@ -1104,12 +1144,6 @@ "clone-regexp": "^2.1.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1128,15 +1162,15 @@ } }, "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==", + "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.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", - "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -1196,37 +1230,12 @@ } }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "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" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } + "locate-path": "^2.0.0" } }, "flat-cache": { @@ -1252,6 +1261,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": 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 + }, "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", @@ -1265,15 +1280,9 @@ "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=", - "dev": true - }, - "getobject": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", "dev": true }, "glob": { @@ -1371,159 +1380,37 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "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" - } - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.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.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": "22.0.0", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-22.0.0.tgz", - "integrity": "sha512-I7vIU4x/mb20fmA6TAmLx6Wzn7mfs8ZXeuk7LbP2ujKVFV7KZmJ3qXUyqe2wnD+v/74Rs5uYOZrLL8EoBmlG9Q==", - "dev": true, - "requires": { - "chalk": "^2.1.0", - "eslint": "^6.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": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", - "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", - "dev": true, - "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.5" - } - }, - "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" - } - }, - "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==", - "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.13.0", - "resolved": "https://registry.npmjs.org/grunt-stylelint/-/grunt-stylelint-0.13.0.tgz", - "integrity": "sha512-Ju9N03UBvPwcdoJYL77pDk0k0E8VD4oYtTfoRwvvPM1ON2MjOXWwPyaeIoYPnhUwcfN9D7TaXnTtuhNoWNsyrQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, "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 }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "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 }, "hosted-git-info": { @@ -1590,13 +1477,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", @@ -1627,9 +1511,9 @@ "dev": true }, "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.2.0.tgz", + "integrity": "sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -1742,6 +1626,18 @@ "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", "dev": true }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "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.4", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", @@ -1754,12 +1650,6 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "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", @@ -1788,29 +1678,41 @@ "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-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-regexp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, + "is-symbol": { + "version": "1.0.3", + "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-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, "is-whitespace-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", @@ -1884,6 +1786,17 @@ } } }, + "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" + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -1975,19 +1888,6 @@ "uc.micro": "^1.0.1" } }, - "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=", - "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" - } - }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -1996,14 +1896,6 @@ "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" - }, - "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 - } } }, "lodash": { @@ -2027,20 +1919,16 @@ "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=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } + "lunr": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.0.tgz", + "integrity": "sha1-TXwMoSvdHgRHsMExuRQgkpdAyI8=", + "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.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", "dev": true }, "markdown-escapes": { @@ -2069,10 +1957,13 @@ "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==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } }, "marked": { "version": "0.7.0", @@ -2087,14 +1978,20 @@ "dev": true }, "mdast-util-compact": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", - "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", "dev": true, "requires": { - "unist-util-visit": "^1.1.0" + "unist-util-visit": "^2.0.0" } }, + "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", @@ -2102,21 +1999,30 @@ "dev": true }, "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", + "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", "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.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "dependencies": { + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true + } } }, "merge2": { @@ -2171,6 +2077,14 @@ "arrify": "^1.0.1", "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 + } } }, "mkdirp": { @@ -2212,15 +2126,6 @@ "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", "dev": true }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -2253,18 +2158,67 @@ "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", "dev": true }, + "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", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "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-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.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.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.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" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2337,9 +2291,9 @@ } }, "parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "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", @@ -2351,22 +2305,22 @@ } }, "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" } }, "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", @@ -2387,15 +2341,10 @@ "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=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "picomatch": { "version": "2.2.2", @@ -2403,27 +2352,6 @@ "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=", - "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=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", @@ -2431,17 +2359,6 @@ "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" - } - } } }, "postcss": { @@ -2455,6 +2372,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", @@ -2475,15 +2398,6 @@ "htmlparser2": "^3.10.0" } }, - "postcss-jsx": { - "version": "0.36.4", - "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.4.tgz", - "integrity": "sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==", - "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", @@ -2493,16 +2407,6 @@ "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==", - "dev": true, - "requires": { - "remark": "^10.0.1", - "unist-util-find-all-after": "^1.0.2" - } - }, "postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -2607,6 +2511,12 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -2614,24 +2524,85 @@ "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=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "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-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.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" + } + }, + "p-try": { + "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 + }, + "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 + } } }, "readable-stream": { @@ -2646,13 +2617,13 @@ } }, "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" } }, "regexpp": { @@ -2662,43 +2633,44 @@ "dev": true }, "remark": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", - "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", + "integrity": "sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A==", "dev": true, "requires": { - "remark-parse": "^6.0.0", - "remark-stringify": "^6.0.0", - "unified": "^7.0.0" + "remark-parse": "^8.0.0", + "remark-stringify": "^8.0.0", + "unified": "^9.0.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": "8.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.2.tgz", + "integrity": "sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ==", "dev": true, "requires": { + "ccount": "^1.0.0", "collapse-white-space": "^1.0.2", "is-alphabetical": "^1.0.0", "is-decimal": "^1.0.0", "is-whitespace-character": "^1.0.0", "is-word-character": "^1.0.0", "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", + "parse-entities": "^2.0.0", "repeat-string": "^1.5.4", "state-toggle": "^1.0.0", "trim": "0.0.1", "trim-trailing-lines": "^1.0.0", "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", "xtend": "^4.0.1" } }, "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": "8.1.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.0.tgz", + "integrity": "sha512-FSPZv1ds76oAZjurhhuV5qXSUSoz6QRPuwYK38S41sLHwg4oB7ejnmZshj7qwjgYLf93kdz6BOX9j5aidNE7rA==", "dev": true, "requires": { "ccount": "^1.0.0", @@ -2707,12 +2679,12 @@ "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", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", "repeat-string": "^1.5.4", "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", + "stringify-entities": "^3.0.0", "unherit": "^1.0.4", "xtend": "^4.0.1" } @@ -2723,15 +2695,6 @@ "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=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "replace-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", @@ -2809,9 +2772,9 @@ } }, "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==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "safer-buffer": { @@ -2820,6 +2783,12 @@ "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 + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -2873,9 +2842,9 @@ } }, "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 }, "spdx-correct": { @@ -2922,6 +2891,12 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, "state-toggle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", @@ -2950,6 +2925,26 @@ } } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2957,17 +2952,26 @@ "dev": true, "requires": { "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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 + } } }, "stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.0.1.tgz", + "integrity": "sha512-Lsk3ISA2++eJYqBMPKcr/8eby1I6L0gP0NlxF8Zja6c05yr/yCYyb2c9PwXjd08Ib3If1vn1rbs1H5ZtVuOfvQ==", "dev": true, "requires": { "character-entities-html4": "^1.0.0", "character-entities-legacy": "^1.0.0", "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.2", "is-hexadecimal": "^1.0.0" } }, @@ -2988,22 +2992,13 @@ } } }, - "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-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": { @@ -3019,14 +3014,16 @@ "dev": true }, "stylelint": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.2.0.tgz", - "integrity": "sha512-isf31yjkm0DQesx+Yk1b/WQpFkf1MicwaAVR22Hprx9HRFGhhEkWdrVCyrkK6HFymL0rhzynG97Tu53q/WCsAg==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.3.2.tgz", + "integrity": "sha512-kpO3/Gz2ZY40EWUwFYYkgpzhf8ZDUyKpcui5+pS0XKJBj/EMYmZpOJoL8IFAz2yApYeg91NVy5yAjE39hDzWvQ==", "dev": true, "requires": { - "autoprefixer": "^9.7.4", + "@stylelint/postcss-css-in-js": "^0.37.1", + "@stylelint/postcss-markdown": "^0.36.1", + "autoprefixer": "^9.7.6", "balanced-match": "^1.0.0", - "chalk": "^3.0.0", + "chalk": "^4.0.0", "cosmiconfig": "^6.0.0", "debug": "^4.1.1", "execall": "^2.0.0", @@ -3044,23 +3041,21 @@ "lodash": "^4.17.15", "log-symbols": "^3.0.0", "mathml-tag-names": "^2.1.3", - "meow": "^6.0.0", + "meow": "^6.1.0", "micromatch": "^4.0.2", "normalize-selector": "^0.2.0", - "postcss": "^7.0.26", + "postcss": "^7.0.27", "postcss-html": "^0.36.0", - "postcss-jsx": "^0.36.4", "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.4.2", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", "postcss-scss": "^2.0.0", "postcss-selector-parser": "^6.0.2", "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.0.2", + "postcss-value-parser": "^4.0.3", "resolve-from": "^5.0.0", "slash": "^3.0.0", "specificity": "^0.4.1", @@ -3071,7 +3066,7 @@ "svg-tags": "^1.0.0", "table": "^5.4.6", "v8-compile-cache": "^2.1.0", - "write-file-atomic": "^3.0.1" + "write-file-atomic": "^3.0.3" }, "dependencies": { "ansi-styles": { @@ -3084,27 +3079,10 @@ "color-convert": "^2.0.1" } }, - "camelcase": { - "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": "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": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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", @@ -3126,22 +3104,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "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" - } - }, - "get-stdin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", - "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3154,137 +3116,6 @@ "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, - "indent-string": { - "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 - }, - "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" - } - }, - "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", - "dev": true - }, - "meow": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", - "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.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" - } - }, - "p-try": { - "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 - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "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 - }, - "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": { - "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": "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": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "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 - } - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -3300,15 +3131,6 @@ "ansi-regex": "^5.0.0" } }, - "strip-indent": { - "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": { - "min-indent": "^1.0.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -3317,28 +3139,16 @@ "requires": { "has-flag": "^4.0.0" } - }, - "trim-newlines": { - "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 - }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true } } }, "stylelint-config-wikimedia": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.9.0.tgz", - "integrity": "sha512-y3ylqR3/1f4iPN71vRG+/5e7abry5UtxlZ5hg6UaKHBPQBgFJbbZg7mYiKiusZNx0KiGxsfvnqGJKdmav+ONlw==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.10.1.tgz", + "integrity": "sha512-R/E7xVKwDyneKmVwkNi+TqJlXZjnL5IH+bQPmfHrgwwyAekNx5GdYZ+tVjx7VBXdv/pjOr0HevVpXSQe86ZfVQ==", "dev": true, "requires": { - "stylelint": "13.2.0" + "stylelint": "13.3.2" } }, "sugarss": { @@ -3365,6 +3175,27 @@ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", "dev": true }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "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" + } + }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", @@ -3451,9 +3282,9 @@ "dev": true }, "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "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 }, "trim-trailing-lines": { @@ -3510,16 +3341,6 @@ "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==", "dev": true }, - "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==", - "dev": true, - "requires": { - "sprintf-js": "^1.0.3", - "util-deprecate": "^1.0.2" - } - }, "unherit": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", @@ -3531,19 +3352,17 @@ } }, "unified": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", - "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", + "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==", "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" } }, "uniq": { @@ -3553,27 +3372,27 @@ "dev": true }, "unist-util-find-all-after": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz", - "integrity": "sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz", + "integrity": "sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw==", "dev": true, "requires": { - "unist-util-is": "^3.0.0" + "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.0.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", + "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==", "dev": true }, "unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", "dev": true, "requires": { - "unist-util-visit": "^1.1.0" + "unist-util-visit": "^2.0.0" } }, "unist-util-stringify-position": { @@ -3586,23 +3405,32 @@ } }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", + "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", "dev": true, "requires": { - "unist-util-visit-parents": "^2.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" } }, "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==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", + "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", "dev": true, "requires": { - "unist-util-is": "^3.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" } }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -3618,6 +3446,18 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, "v8-compile-cache": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", @@ -3635,38 +3475,22 @@ } }, "vfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", - "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.1.tgz", + "integrity": "sha512-lRjkpyDGjVlBA7cDQhQ+gNcvB1BGaTHYuSOcY3S7OhDmBtnzX95FhtZZDecSTDm6aajFymyve6S5DN4ZHGezdQ==", "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" - }, - "dependencies": { - "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==", - "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==", - "dev": true, - "requires": { - "unist-util-stringify-position": "^1.1.1" - } - } + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" } }, "vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", + "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==", "dev": true }, "vfile-message": { @@ -3772,12 +3596,6 @@ "typedarray-to-buffer": "^3.1.5" } }, - "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=", - "dev": true - }, "xmlcreate": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", @@ -3804,14 +3622,6 @@ "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } } } } diff --git a/package.json b/package.json index da8ac713..c95e965b 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,23 @@ { "private": true, "scripts": { - "test": "grunt test", - "doc": "jsdoc resources/main.js -c jsdoc.json -r", - "fix": "stylelint '**/*.less' '**/*.css' --fix" + "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/", + "doc": "jsdoc -c jsdoc.json", + "svgmin": "svgo --config=.svgo.yml -q -r -f resources/" }, "devDependencies": { "eslint-config-wikimedia": "0.15.3", - "grunt": "1.0.4", "grunt-banana-checker": "0.9.0", - "grunt-eslint": "22.0.0", - "grunt-stylelint": "0.13.0", - "stylelint-config-wikimedia": "0.9.0", - "jsdoc": "3.6.3" + "jsdoc": "3.6.3", + "jsdoc-wmf-theme": "0.0.3", + "stylelint-config-wikimedia": "0.10.1", + "svgo": "1.3.2" }, - "eslintIgnore": [ - "vendor/**", - "node_modules/**", - "out/**" - ], "jshintConfig": { "esversion": 6 } diff --git a/resources/images/icons/article.svg b/resources/images/icons/article.svg index 820abdd8..dc29ded1 100644 --- a/resources/images/icons/article.svg +++ b/resources/images/icons/article.svg @@ -1,7 +1,7 @@ - - - - article - - - + + + + article + + + diff --git a/resources/images/icons/beta.svg b/resources/images/icons/beta.svg index 7a37c5a7..f05b8eb6 100644 --- a/resources/images/icons/beta.svg +++ b/resources/images/icons/beta.svg @@ -1,7 +1,7 @@ - - - - beaker - - - + + + + beaker + + + diff --git a/resources/images/icons/block.svg b/resources/images/icons/block.svg index 315baadd..1eadfd04 100644 --- a/resources/images/icons/block.svg +++ b/resources/images/icons/block.svg @@ -1,7 +1,7 @@ - - - - block - - - + + + + block + + + diff --git a/resources/images/icons/contributions.svg b/resources/images/icons/contributions.svg index 1af18f8f..720c8b9c 100644 --- a/resources/images/icons/contributions.svg +++ b/resources/images/icons/contributions.svg @@ -1 +1,8 @@ - \ No newline at end of file + + + + + + + + diff --git a/resources/images/icons/delete.svg b/resources/images/icons/delete.svg index 1751526a..23f608bb 100644 --- a/resources/images/icons/delete.svg +++ b/resources/images/icons/delete.svg @@ -1,7 +1,7 @@ - - - - trash - - - + + + + trash + + + diff --git a/resources/images/icons/discussion.svg b/resources/images/icons/discussion.svg index e529f5e2..04a78301 100644 --- a/resources/images/icons/discussion.svg +++ b/resources/images/icons/discussion.svg @@ -1,8 +1,8 @@ - - - - speech bubbles - - - - + + + + speech bubbles + + + + diff --git a/resources/images/icons/download.svg b/resources/images/icons/download.svg index 7cdc0067..c40d0e44 100644 --- a/resources/images/icons/download.svg +++ b/resources/images/icons/download.svg @@ -1 +1,4 @@ - + + + + diff --git a/resources/images/icons/edit.svg b/resources/images/icons/edit.svg index 9577b4f6..d8b21b9f 100644 --- a/resources/images/icons/edit.svg +++ b/resources/images/icons/edit.svg @@ -1 +1,4 @@ - + + + + diff --git a/resources/images/icons/eye.svg b/resources/images/icons/eye.svg index dc7fce7c..98412415 100644 --- a/resources/images/icons/eye.svg +++ b/resources/images/icons/eye.svg @@ -1,8 +1,8 @@ - - - - eye - - - - + + + + eye + + + + diff --git a/resources/images/icons/eyeClosed.svg b/resources/images/icons/eyeClosed.svg index e71ec4b6..80e911b5 100644 --- a/resources/images/icons/eyeClosed.svg +++ b/resources/images/icons/eyeClosed.svg @@ -1,8 +1,8 @@ - - - - eye closed - - - - + + + + eye closed + + + + diff --git a/resources/images/icons/help.svg b/resources/images/icons/help.svg index c1847703..b6229c36 100644 --- a/resources/images/icons/help.svg +++ b/resources/images/icons/help.svg @@ -1,8 +1,8 @@ - - - - help - - - - + + + + help + + + + diff --git a/resources/images/icons/history.svg b/resources/images/icons/history.svg index d7567150..814ae860 100644 --- a/resources/images/icons/history.svg +++ b/resources/images/icons/history.svg @@ -1 +1,7 @@ -history \ No newline at end of file + + + + history + + + diff --git a/resources/images/icons/home.svg b/resources/images/icons/home.svg index ff37d418..c4abeeea 100644 --- a/resources/images/icons/home.svg +++ b/resources/images/icons/home.svg @@ -1 +1,4 @@ - + + + + diff --git a/resources/images/icons/image.svg b/resources/images/icons/image.svg index 0d0a198e..1578d865 100644 --- a/resources/images/icons/image.svg +++ b/resources/images/icons/image.svg @@ -1,7 +1,7 @@ - - - - image - - - + + + + image + + + diff --git a/resources/images/icons/info.svg b/resources/images/icons/info.svg index 973702e0..2ca9d632 100644 --- a/resources/images/icons/info.svg +++ b/resources/images/icons/info.svg @@ -1,7 +1,7 @@ - - - - info - - - + + + + info + + + diff --git a/resources/images/icons/journal.svg b/resources/images/icons/journal.svg index e1dea555..e82b1c48 100644 --- a/resources/images/icons/journal.svg +++ b/resources/images/icons/journal.svg @@ -1,7 +1,7 @@ - - - - journal - - - + + + + journal + + + diff --git a/resources/images/icons/language.svg b/resources/images/icons/language.svg index 9262f73f..77353e3a 100644 --- a/resources/images/icons/language.svg +++ b/resources/images/icons/language.svg @@ -1,7 +1,7 @@ - - - - language - - - + + + + language + + + diff --git a/resources/images/icons/link.svg b/resources/images/icons/link.svg index 581d0e37..f215755b 100644 --- a/resources/images/icons/link.svg +++ b/resources/images/icons/link.svg @@ -1,8 +1,8 @@ - - - - link - - - - + + + + link + + + + diff --git a/resources/images/icons/lock.svg b/resources/images/icons/lock.svg index d6fbab6d..65eb7b38 100644 --- a/resources/images/icons/lock.svg +++ b/resources/images/icons/lock.svg @@ -1,7 +1,7 @@ - - - - lock - - - + + + + lock + + + diff --git a/resources/images/icons/logOut.svg b/resources/images/icons/logOut.svg index 98ca7b4d..6a9a9950 100644 --- a/resources/images/icons/logOut.svg +++ b/resources/images/icons/logOut.svg @@ -1,8 +1,8 @@ - - - - log out - - - - + + + + log out + + + + diff --git a/resources/images/icons/login.svg b/resources/images/icons/login.svg index cac442ce..f3b95329 100644 --- a/resources/images/icons/login.svg +++ b/resources/images/icons/login.svg @@ -1 +1,4 @@ - + + + + diff --git a/resources/images/icons/move.svg b/resources/images/icons/move.svg index ddbf49b9..93799858 100644 --- a/resources/images/icons/move.svg +++ b/resources/images/icons/move.svg @@ -1,7 +1,7 @@ - - - - move - - - + + + + move + + + diff --git a/resources/images/icons/profile.svg b/resources/images/icons/profile.svg index 4147ed40..09bd2b80 100644 --- a/resources/images/icons/profile.svg +++ b/resources/images/icons/profile.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + + + diff --git a/resources/images/icons/random.svg b/resources/images/icons/random.svg index 1792476e..2e99c589 100644 --- a/resources/images/icons/random.svg +++ b/resources/images/icons/random.svg @@ -1 +1,4 @@ - + + + + diff --git a/resources/images/icons/reddit.svg b/resources/images/icons/reddit.svg index 21726516..2ad1dd34 100644 --- a/resources/images/icons/reddit.svg +++ b/resources/images/icons/reddit.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/resources/images/icons/search.svg b/resources/images/icons/search.svg index 2c8140e4..4caa4838 100644 --- a/resources/images/icons/search.svg +++ b/resources/images/icons/search.svg @@ -1,7 +1,7 @@ - - - - search - - - + + + + search + + + diff --git a/resources/images/icons/settings.svg b/resources/images/icons/settings.svg index fbc1f5b4..b2a80e72 100644 --- a/resources/images/icons/settings.svg +++ b/resources/images/icons/settings.svg @@ -1 +1,4 @@ - + + + + diff --git a/resources/images/icons/specialpages.svg b/resources/images/icons/specialpages.svg index efb3b249..cf92c9c9 100644 --- a/resources/images/icons/specialpages.svg +++ b/resources/images/icons/specialpages.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + diff --git a/resources/images/icons/unLock.svg b/resources/images/icons/unLock.svg index 2893b6ca..37001920 100644 --- a/resources/images/icons/unLock.svg +++ b/resources/images/icons/unLock.svg @@ -1,7 +1,7 @@ - - - - un-lock - - - + + + + un-lock + + + diff --git a/resources/images/icons/upload.svg b/resources/images/icons/upload.svg index be053d27..143a33e6 100644 --- a/resources/images/icons/upload.svg +++ b/resources/images/icons/upload.svg @@ -1,8 +1,8 @@ - - - - upload - - - - + + + + upload + + + + diff --git a/resources/images/icons/userAvatar.svg b/resources/images/icons/userAvatar.svg index 3f47c477..1f9a36e0 100644 --- a/resources/images/icons/userAvatar.svg +++ b/resources/images/icons/userAvatar.svg @@ -1,8 +1,8 @@ - - - - user avatar - - - - + + + + user avatar + + + + diff --git a/resources/images/icons/userNormal.svg b/resources/images/icons/userNormal.svg index b63e9612..b94fcbf6 100644 --- a/resources/images/icons/userNormal.svg +++ b/resources/images/icons/userNormal.svg @@ -1 +1,9 @@ - + + + + + + + + + diff --git a/resources/images/icons/userTalk.svg b/resources/images/icons/userTalk.svg index 990cfc39..f395b2e1 100644 --- a/resources/images/icons/userTalk.svg +++ b/resources/images/icons/userTalk.svg @@ -1,7 +1,7 @@ - - - - user talk - - - + + + + user talk + + + diff --git a/resources/images/icons/users.svg b/resources/images/icons/users.svg index 56cbc65c..e64517a4 100644 --- a/resources/images/icons/users.svg +++ b/resources/images/icons/users.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/resources/images/icons/ve-edit.svg b/resources/images/icons/ve-edit.svg index fa13e4d4..668eb3b3 100644 --- a/resources/images/icons/ve-edit.svg +++ b/resources/images/icons/ve-edit.svg @@ -1 +1,7 @@ -Visual Edit \ No newline at end of file + + + Visual Edit + + + + diff --git a/resources/images/icons/warning.svg b/resources/images/icons/warning.svg index 53c5d5ba..3d28f6d7 100644 --- a/resources/images/icons/warning.svg +++ b/resources/images/icons/warning.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + + + diff --git a/resources/images/icons/watchlist.svg b/resources/images/icons/watchlist.svg index d974bb46..31325596 100644 --- a/resources/images/icons/watchlist.svg +++ b/resources/images/icons/watchlist.svg @@ -1 +1,4 @@ - + + + + diff --git a/resources/images/icons/whatlinkshere.svg b/resources/images/icons/whatlinkshere.svg index f4e3214d..20f7eff5 100644 --- a/resources/images/icons/whatlinkshere.svg +++ b/resources/images/icons/whatlinkshere.svg @@ -1,7 +1,7 @@ - - - - what links here - - - + + + + what links here + + + diff --git a/resources/skins.citizen.icons.badges/CCBYSA.svg b/resources/skins.citizen.icons.badges/CCBYSA.svg index 7a46ae73..98b49776 100644 --- a/resources/skins.citizen.icons.badges/CCBYSA.svg +++ b/resources/skins.citizen.icons.badges/CCBYSA.svg @@ -1 +1,6 @@ -CCBYSA4 \ No newline at end of file + + + CCBYSA4 + + + diff --git a/resources/skins.citizen.icons.badges/GDPR.svg b/resources/skins.citizen.icons.badges/GDPR.svg index 9030d8c2..87a1d326 100644 --- a/resources/skins.citizen.icons.badges/GDPR.svg +++ b/resources/skins.citizen.icons.badges/GDPR.svg @@ -1 +1,7 @@ -GDPR \ No newline at end of file + + + GDPR + + + + diff --git a/resources/skins.citizen.icons.badges/MediaWiki.svg b/resources/skins.citizen.icons.badges/MediaWiki.svg index ec6f8115..0ca14761 100644 --- a/resources/skins.citizen.icons.badges/MediaWiki.svg +++ b/resources/skins.citizen.icons.badges/MediaWiki.svg @@ -1 +1,6 @@ -PoweredByMediawiki \ No newline at end of file + + + PoweredByMediawiki + + + diff --git a/resources/skins.citizen.icons.badges/Miraheze.svg b/resources/skins.citizen.icons.badges/Miraheze.svg index 8bb79aba..7a9b54f2 100644 --- a/resources/skins.citizen.icons.badges/Miraheze.svg +++ b/resources/skins.citizen.icons.badges/Miraheze.svg @@ -1 +1,15 @@ - \ No newline at end of file + + + + + + + + + + + + + diff --git a/resources/skins.citizen.icons.badges/StarCitizenCommunity.svg b/resources/skins.citizen.icons.badges/StarCitizenCommunity.svg index 97694563..efc74d4b 100644 --- a/resources/skins.citizen.icons.badges/StarCitizenCommunity.svg +++ b/resources/skins.citizen.icons.badges/StarCitizenCommunity.svg @@ -1 +1,8 @@ -Asset 3 \ No newline at end of file + + + Asset 3 + + + + + diff --git a/resources/skins.citizen.icons.badges/StarCitizenTools.svg b/resources/skins.citizen.icons.badges/StarCitizenTools.svg index a41ad31f..19d67213 100644 --- a/resources/skins.citizen.icons.badges/StarCitizenTools.svg +++ b/resources/skins.citizen.icons.badges/StarCitizenTools.svg @@ -1 +1,12 @@ - \ No newline at end of file + + + + + + + + + + + + diff --git a/resources/skins.citizen.icons.badges/WikiApiary.svg b/resources/skins.citizen.icons.badges/WikiApiary.svg index 48c1cc31..c0168f75 100644 --- a/resources/skins.citizen.icons.badges/WikiApiary.svg +++ b/resources/skins.citizen.icons.badges/WikiApiary.svg @@ -1 +1,6 @@ -Asset 4 \ No newline at end of file + + + Asset 4 + + + diff --git a/resources/skins.citizen.icons.footer/history_white.svg b/resources/skins.citizen.icons.footer/history_white.svg index ef734dd3..45296606 100644 --- a/resources/skins.citizen.icons.footer/history_white.svg +++ b/resources/skins.citizen.icons.footer/history_white.svg @@ -1 +1,7 @@ -history + + + + history + + + diff --git a/resources/skins.citizen.icons.search/noimage.svg b/resources/skins.citizen.icons.search/noimage.svg index bc4f53c9..8cc7e028 100644 --- a/resources/skins.citizen.icons.search/noimage.svg +++ b/resources/skins.citizen.icons.search/noimage.svg @@ -1,5 +1,5 @@ - - - - - + + + + + diff --git a/resources/skins.citizen.icons.search/searchfulltext.svg b/resources/skins.citizen.icons.search/searchfulltext.svg index 5b11c1dd..29561b05 100644 --- a/resources/skins.citizen.icons.search/searchfulltext.svg +++ b/resources/skins.citizen.icons.search/searchfulltext.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + diff --git a/resources/skins.citizen.icons/more.svg b/resources/skins.citizen.icons/more.svg index b4e2b0e2..abe00603 100644 --- a/resources/skins.citizen.icons/more.svg +++ b/resources/skins.citizen.icons/more.svg @@ -1 +1,9 @@ -ellipsis \ No newline at end of file + + + + ellipsis + + + + + diff --git a/resources/skins.citizen.icons/toc-ltr.svg b/resources/skins.citizen.icons/toc-ltr.svg index b71332eb..04d82660 100644 --- a/resources/skins.citizen.icons/toc-ltr.svg +++ b/resources/skins.citizen.icons/toc-ltr.svg @@ -1,7 +1,7 @@ - - - - stripe ToC - - - + + + + stripe ToC + + + diff --git a/resources/skins.citizen.icons/toc-rtl.svg b/resources/skins.citizen.icons/toc-rtl.svg index 43de5d64..7ef90ce2 100644 --- a/resources/skins.citizen.icons/toc-rtl.svg +++ b/resources/skins.citizen.icons/toc-rtl.svg @@ -1,7 +1,7 @@ - - - - stripe ToC - - - + + + + stripe ToC + + + diff --git a/resources/skins.citizen.styles.toc/toc.less b/resources/skins.citizen.styles.toc/toc.less index ff113145..1f7f67eb 100644 --- a/resources/skins.citizen.styles.toc/toc.less +++ b/resources/skins.citizen.styles.toc/toc.less @@ -84,8 +84,8 @@ position: relative; z-index: 2; border-left: 1px dashed; - max-width: ~'calc( (100vw - '@page-width + @margin-side * 4~' ) / 2 )'; - max-height: ~'calc( 100vh - '@header-height * 2 + @margin-side * 4~' )'; + max-width: ~'calc( (100vw - '@page-width + @margin-side * 4 ~' ) / 2 )'; + max-height: ~'calc( 100vh - '@header-height * 2 + @margin-side * 4 ~' )'; overflow: visible auto; overscroll-behavior: contain; display: block; diff --git a/resources/skins.citizen.styles/Catlinks.less b/resources/skins.citizen.styles/Catlinks.less index 41e8c263..2804649a 100644 --- a/resources/skins.citizen.styles/Catlinks.less +++ b/resources/skins.citizen.styles/Catlinks.less @@ -67,7 +67,7 @@ @media ( max-width: @screen2 ) { .catlinks { - margin: 0~'calc((100vw - @{page-width}) / -2)'; + margin: 0 ~'calc((100vw - @{page-width}) / -2)'; } } diff --git a/resources/skins.citizen.styles/Pagelinks.less b/resources/skins.citizen.styles/Pagelinks.less index 6ff279ba..2749e64d 100644 --- a/resources/skins.citizen.styles/Pagelinks.less +++ b/resources/skins.citizen.styles/Pagelinks.less @@ -54,7 +54,7 @@ @media ( max-width: @screen2 ) { #p-namespaces { - margin: 0~'calc((100vw - @{page-width}) / -2)'; + margin: 0 ~'calc((100vw - @{page-width}) / -2)'; } } diff --git a/resources/skins.citizen.styles/common/content.less b/resources/skins.citizen.styles/common/content.less index b22777f9..603ea63a 100644 --- a/resources/skins.citizen.styles/common/content.less +++ b/resources/skins.citizen.styles/common/content.less @@ -256,7 +256,7 @@ > div.tnone, > div.floatnone, > table.floatnone { - margin: 0.6rem~'calc((100vw - @{page-width}) / -2)'; + margin: 0.6rem ~'calc((100vw - @{page-width}) / -2)'; a.image, a.image > img { diff --git a/resources/skins.citizen.styles/common/reducemotion.less b/resources/skins.citizen.styles/common/reducemotion.less index 43acf6be..b67992ef 100644 --- a/resources/skins.citizen.styles/common/reducemotion.less +++ b/resources/skins.citizen.styles/common/reducemotion.less @@ -1,8 +1,10 @@ @media ( prefers-reduced-motion: reduce ) { + /* stylelint-disable time-min-milliseconds, declaration-no-important */ *, *:before, *:after { animation-duration: 0.001s !important; transition-duration: 0.001s !important; } + /* stylelint-enable time-min-milliseconds, declaration-no-important */ } diff --git a/skinStyles/extensions/CookieWarning/ext.CookieWarning.styles.less b/skinStyles/extensions/CookieWarning/ext.CookieWarning.styles.less index 413901f1..ab3b7ad5 100644 --- a/skinStyles/extensions/CookieWarning/ext.CookieWarning.styles.less +++ b/skinStyles/extensions/CookieWarning/ext.CookieWarning.styles.less @@ -37,6 +37,7 @@ .mw-cookiewarning-dismiss { background: @accent-50; + height: 100%; &:hover { background: @accent-10; @@ -64,10 +65,6 @@ a { height: auto; } - - .mw-cookiewarning-dismiss { - height: 100%; - } } } diff --git a/skinStyles/extensions/Flow/ext.flow.styles.base.less b/skinStyles/extensions/Flow/ext.flow.styles.base.less index 6de8f42f..2f2c6c3d 100644 --- a/skinStyles/extensions/Flow/ext.flow.styles.base.less +++ b/skinStyles/extensions/Flow/ext.flow.styles.base.less @@ -12,6 +12,18 @@ background: @dark-bg-20; } } + + .mw-ui-icon-before:before, + .oo-ui-indicatorElement-indicator, + .oo-ui-iconElement-icon { + filter: invert( 1 ) hue-rotate( 180deg ); + } + + .flow-menu { + .mw-ui-button.mw-ui-quiet { + color: @dark-text-90; + } + } } .flow-revision-content { @@ -41,18 +53,4 @@ box-shadow: -2px 0 0 0 rgba( 0, 0, 0, 0.1 ); } } - - .flow-component { - .mw-ui-icon-before:before, - .oo-ui-indicatorElement-indicator, - .oo-ui-iconElement-icon { - filter: invert( 1 ) hue-rotate( 180deg ); - } - - .flow-menu { - .mw-ui-button.mw-ui-quiet { - color: @dark-text-90; - } - } - } } diff --git a/skinStyles/extensions/SemanticMediaWiki/ext.smw.page.styles.less b/skinStyles/extensions/SemanticMediaWiki/ext.smw.page.styles.less index 703909cc..30aeae3d 100644 --- a/skinStyles/extensions/SemanticMediaWiki/ext.smw.page.styles.less +++ b/skinStyles/extensions/SemanticMediaWiki/ext.smw.page.styles.less @@ -46,6 +46,7 @@ .smw-property-page-results .header-title { color: @dark-text-80; background-color: @dark-bg-0; + border-bottom: 1px solid @dark-bg-20; } .list-pager-value-filter input { @@ -66,10 +67,6 @@ color: @dark-text-80 !important; } - .smw-property-page-results .header-title { - border-bottom: 1px solid @dark-bg-20; - } - .smw-property-page-results.legacy .header-title { border-bottom: 0 solid @dark-bg-20; } diff --git a/skinStyles/extensions/SemanticMediaWiki/ext.smw.style.less b/skinStyles/extensions/SemanticMediaWiki/ext.smw.style.less index 16ce2f21..f94ff0c3 100644 --- a/skinStyles/extensions/SemanticMediaWiki/ext.smw.style.less +++ b/skinStyles/extensions/SemanticMediaWiki/ext.smw.style.less @@ -357,10 +357,6 @@ border-bottom-color: rgba( 27, 31, 35, 0.15 ); } - .smw-dropdown-menu:before { - border-bottom-color: rgba( 27, 31, 35, 0.15 ); - } - .smw-dropdown-menu:after { border-bottom-color: @dark-bg-0; } diff --git a/skinStyles/extensions/SemanticMediaWiki/ext.smw.table.styles.less b/skinStyles/extensions/SemanticMediaWiki/ext.smw.table.styles.less index 695fd62b..9f9298cc 100644 --- a/skinStyles/extensions/SemanticMediaWiki/ext.smw.table.styles.less +++ b/skinStyles/extensions/SemanticMediaWiki/ext.smw.table.styles.less @@ -20,10 +20,6 @@ border: 1px solid @dark-bg-50; } - .smw-table-header { - background-color: @dark-bg-20; - } - .smw-table-footer { background-color: @dark-bg-20; } diff --git a/skinStyles/extensions/SemanticResultFormats/datatables/ext.srf.datatables.bootstrap.less b/skinStyles/extensions/SemanticResultFormats/datatables/ext.srf.datatables.bootstrap.less index ff804859..8e3926f3 100644 --- a/skinStyles/extensions/SemanticResultFormats/datatables/ext.srf.datatables.bootstrap.less +++ b/skinStyles/extensions/SemanticResultFormats/datatables/ext.srf.datatables.bootstrap.less @@ -24,10 +24,6 @@ border-top: 1px solid @dark-bg-20; } - .srf-datatables .bordered-table { - border: 1px solid @dark-bg-20; - } - .bordered-table th + th, .bordered-table td + td, .bordered-table th + td { diff --git a/skinStyles/extensions/SemanticResultFormats/filtered/ext.srf.filtered.map-view.leaflet.less b/skinStyles/extensions/SemanticResultFormats/filtered/ext.srf.filtered.map-view.leaflet.less index f994fefc..91546230 100644 --- a/skinStyles/extensions/SemanticResultFormats/filtered/ext.srf.filtered.map-view.leaflet.less +++ b/skinStyles/extensions/SemanticResultFormats/filtered/ext.srf.filtered.map-view.leaflet.less @@ -7,6 +7,7 @@ @media ( prefers-color-scheme: dark ) { .leaflet-container a { + color: @color-link; -webkit-tap-highlight-color: rgba( 51, 181, 229, 0.4 ); } @@ -14,10 +15,6 @@ background: @dark-bg-20; } - .leaflet-container a { - color: @color-link; - } - .leaflet-container a.leaflet-active { outline: 2px solid @yellow-50; } diff --git a/skinStyles/extensions/SemanticResultFormats/filtered/ext.srf.filtered.slider.less b/skinStyles/extensions/SemanticResultFormats/filtered/ext.srf.filtered.slider.less index 0dd89f47..b53bfba0 100644 --- a/skinStyles/extensions/SemanticResultFormats/filtered/ext.srf.filtered.slider.less +++ b/skinStyles/extensions/SemanticResultFormats/filtered/ext.srf.filtered.slider.less @@ -7,11 +7,11 @@ @media ( prefers-color-scheme: dark ) { .irs-grid-pol { - background: @dark-bg-0; + background: @dark-bg-40; } .irs-grid-text { - color: @dark-text-100; + color: @dark-text-60; } .irs-disable-mask { @@ -49,12 +49,4 @@ .lt-ie9 .irs-single { background: @dark-bg-50; } - - .irs-grid-pol { - background: @dark-bg-40; - } - - .irs-grid-text { - color: @dark-text-60; - } } diff --git a/skinStyles/oojs/oojs-ui-toolbars.less b/skinStyles/oojs/oojs-ui-toolbars.less index f9851cbf..6f9403d5 100644 --- a/skinStyles/oojs/oojs-ui-toolbars.less +++ b/skinStyles/oojs/oojs-ui-toolbars.less @@ -38,8 +38,8 @@ @media ( prefers-color-scheme: dark ) { .oo-ui-toolbar-bar { - background-color: @dark-bg-20; - color: @dark-text-100; + background-color: @dark-bg-0; + color: @dark-text-90; } .oo-ui-toolGroup, @@ -199,11 +199,6 @@ color: @dark-text-70; } - .oo-ui-toolbar-bar { - background-color: @dark-bg-0; - color: @dark-text-90; - } - .oo-ui-toolbar-position-top > .oo-ui-toolbar-bar { border-bottom: 1px solid @dark-bg-30; box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); diff --git a/skinStyles/oojs/oojs-ui-windows.less b/skinStyles/oojs/oojs-ui-windows.less index f07429c6..6715cccf 100644 --- a/skinStyles/oojs/oojs-ui-windows.less +++ b/skinStyles/oojs/oojs-ui-windows.less @@ -48,11 +48,12 @@ @media ( prefers-color-scheme: dark ) { .oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame { - background-color: @dark-bg-50; + background-color: @dark-bg-0; } .oo-ui-processDialog-content .oo-ui-window-body { border-color: @dark-bg-40; + outline: 1px solid @dark-bg-30; } .oo-ui-messageDialog-content > .oo-ui-window-foot { @@ -83,10 +84,6 @@ border-bottom: 1px solid @dark-bg-50; } - .oo-ui-processDialog-content .oo-ui-window-body { - outline: 1px solid @dark-bg-30; - } - .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless:hover, .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless:hover { background-color: rgba( 0, 0, 0, 0.05 ); @@ -135,10 +132,6 @@ z-index: 10; } - .oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame { - background-color: @dark-bg-0; - } - .oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame { border: 1px solid @dark-bg-50; box-shadow: 0 2px 2px 0 rgba( 0, 0, 0, 0.25 );