From 0755591d8ddac10fa8e3539c828d2427f25f8548 Mon Sep 17 00:00:00 2001 From: gtbu <60353863+g7sim@users.noreply.github.com> Date: Sun, 9 Apr 2023 17:10:41 +0200 Subject: [PATCH] update css-crush 4.13 for php8.2 --- .../css-crush/.github/workflows/php.yml | 29 + include/thirdparty/css-crush/composer.json | 36 + include/thirdparty/css-crush/docs/README.md | 3 + .../css-crush/docs/api/functions.md | 84 + .../thirdparty/css-crush/docs/api/options.md | 103 + .../css-crush/docs/core/abstract.md | 44 + .../css-crush/docs/core/auto-prefixing.md | 39 + .../css-crush/docs/core/direct-import.md | 25 + .../css-crush/docs/core/fragments.md | 25 + .../css-crush/docs/core/functions/a-adjust.md | 26 + .../css-crush/docs/core/functions/data-uri.md | 33 + .../css-crush/docs/core/functions/h-adjust.md | 24 + .../docs/core/functions/hsl-adjust.md | 27 + .../docs/core/functions/hsla-adjust.md | 27 + .../css-crush/docs/core/functions/l-adjust.md | 24 + .../css-crush/docs/core/functions/math.md | 19 + .../css-crush/docs/core/functions/query.md | 54 + .../css-crush/docs/core/functions/s-adjust.md | 25 + .../css-crush/docs/core/functions/this.md | 39 + .../css-crush/docs/core/inheritance.md | 127 ++ .../thirdparty/css-crush/docs/core/loop.md | 41 + .../thirdparty/css-crush/docs/core/mixins.md | 95 + .../thirdparty/css-crush/docs/core/nesting.md | 49 + .../css-crush/docs/core/selector-aliases.md | 80 + .../css-crush/docs/core/selector-grouping.md | 22 + .../css-crush/docs/core/variables.md | 62 + .../css-crush/docs/getting-started/js.md | 26 + .../css-crush/docs/getting-started/php.md | 17 + .../thirdparty/css-crush/docs/plugins/aria.md | 21 + .../css-crush/docs/plugins/canvas.md | 55 + .../thirdparty/css-crush/docs/plugins/ease.md | 37 + .../css-crush/docs/plugins/forms.md | 16 + .../css-crush/docs/plugins/hocus-pocus.md | 12 + .../css-crush/docs/plugins/property-sorter.md | 21 + .../css-crush/docs/plugins/svg-gradients.md | 48 + .../thirdparty/css-crush/docs/plugins/svg.md | 74 + include/thirdparty/css-crush/index.js | 8 +- .../css-crush/lib/CssCrush/Process.php | 10 +- .../thirdparty/css-crush/package-lock.json | 1664 +++++++++++++++++ include/thirdparty/css-crush/package.json | 32 + 40 files changed, 3195 insertions(+), 8 deletions(-) create mode 100644 include/thirdparty/css-crush/.github/workflows/php.yml create mode 100644 include/thirdparty/css-crush/composer.json create mode 100644 include/thirdparty/css-crush/docs/README.md create mode 100644 include/thirdparty/css-crush/docs/api/functions.md create mode 100644 include/thirdparty/css-crush/docs/api/options.md create mode 100644 include/thirdparty/css-crush/docs/core/abstract.md create mode 100644 include/thirdparty/css-crush/docs/core/auto-prefixing.md create mode 100644 include/thirdparty/css-crush/docs/core/direct-import.md create mode 100644 include/thirdparty/css-crush/docs/core/fragments.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/a-adjust.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/data-uri.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/h-adjust.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/hsl-adjust.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/hsla-adjust.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/l-adjust.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/math.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/query.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/s-adjust.md create mode 100644 include/thirdparty/css-crush/docs/core/functions/this.md create mode 100644 include/thirdparty/css-crush/docs/core/inheritance.md create mode 100644 include/thirdparty/css-crush/docs/core/loop.md create mode 100644 include/thirdparty/css-crush/docs/core/mixins.md create mode 100644 include/thirdparty/css-crush/docs/core/nesting.md create mode 100644 include/thirdparty/css-crush/docs/core/selector-aliases.md create mode 100644 include/thirdparty/css-crush/docs/core/selector-grouping.md create mode 100644 include/thirdparty/css-crush/docs/core/variables.md create mode 100644 include/thirdparty/css-crush/docs/getting-started/js.md create mode 100644 include/thirdparty/css-crush/docs/getting-started/php.md create mode 100644 include/thirdparty/css-crush/docs/plugins/aria.md create mode 100644 include/thirdparty/css-crush/docs/plugins/canvas.md create mode 100644 include/thirdparty/css-crush/docs/plugins/ease.md create mode 100644 include/thirdparty/css-crush/docs/plugins/forms.md create mode 100644 include/thirdparty/css-crush/docs/plugins/hocus-pocus.md create mode 100644 include/thirdparty/css-crush/docs/plugins/property-sorter.md create mode 100644 include/thirdparty/css-crush/docs/plugins/svg-gradients.md create mode 100644 include/thirdparty/css-crush/docs/plugins/svg.md create mode 100644 include/thirdparty/css-crush/package-lock.json create mode 100644 include/thirdparty/css-crush/package.json diff --git a/include/thirdparty/css-crush/.github/workflows/php.yml b/include/thirdparty/css-crush/.github/workflows/php.yml new file mode 100644 index 0000000..edd94f4 --- /dev/null +++ b/include/thirdparty/css-crush/.github/workflows/php.yml @@ -0,0 +1,29 @@ +name: CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Validate composer.json and composer.lock + run: composer validate --strict + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v2 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + - name: Install dependencies + run: composer install --prefer-dist --no-progress + + - name: Run test suite + run: composer run-script test diff --git a/include/thirdparty/css-crush/composer.json b/include/thirdparty/css-crush/composer.json new file mode 100644 index 0000000..246f7b4 --- /dev/null +++ b/include/thirdparty/css-crush/composer.json @@ -0,0 +1,36 @@ +{ + "name": "css-crush/css-crush", + "type": "library", + "description": "CSS preprocessor", + "keywords": ["css", "preprocessor"], + "homepage": "http://the-echoplex.net/csscrush", + "license": "MIT", + "scripts": { + "test": "vendor/bin/phpunit tests" + }, + "authors": [ + { + "name": "Pete Boere", + "email": "pete@the-echoplex.net" + }, + { + "name": "GitHub contributors", + "homepage": "https://github.com/peteboere/css-crush/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "8.*", + "psr/log": "1.0.*@dev", + "twig/twig": "1.*" + }, + "bin": [ + "bin/csscrush" + ], + "autoload": { + "psr-0": { "CssCrush": "lib/" }, + "files": [ "lib/functions.php" ] + } +} diff --git a/include/thirdparty/css-crush/docs/README.md b/include/thirdparty/css-crush/docs/README.md new file mode 100644 index 0000000..9c284db --- /dev/null +++ b/include/thirdparty/css-crush/docs/README.md @@ -0,0 +1,3 @@ +# CSS-Crush Documentation + +Rendered online at http://the-echoplex.net/csscrush diff --git a/include/thirdparty/css-crush/docs/api/functions.md b/include/thirdparty/css-crush/docs/api/functions.md new file mode 100644 index 0000000..639f9fb --- /dev/null +++ b/include/thirdparty/css-crush/docs/api/functions.md @@ -0,0 +1,84 @@ + + +## csscrush_file() + +Process CSS file and return the compiled file URL. + +csscrush_file( string $file [, array [$options](#api--options) ] ) + + +*************** + +## csscrush_tag() + +Process CSS file and return an html `link` tag with populated href. + +csscrush_tag( string $file [, array [$options](#api--options) [, array $tag\_attributes ]] ) + + +*************** + +## csscrush_inline() + +Process CSS file and return CSS as text wrapped in html `style` tags. + +csscrush_inline( string $file [, array [$options](#api--options) [, array $tag\_attributes ]] ) + + +*************** + +## csscrush_string() + +Compile a raw string of CSS string and return it. + +csscrush_string( string $string [, array [$options](#api--options) ] ) + + +*************** + +## csscrush_get() + +Retrieve a config setting or option default. + +`csscrush_get( string $object_name, string $property )` + +### Parameters + + * `$object_name` Name of object you want to inspect: 'config' or 'options'. + * `$property` + + +*************** + +## csscrush_set() + +Set a config setting or option default. + +`csscrush_set( string $object_name, mixed $settings )` + +### Parameters + + * `$object_name` Name of object you want to modify: 'config' or 'options'. + * `$settings` Associative array of keys and values to set, or callable which argument is the object specified in `$object_name`. + + +*************** + +## csscrush_plugin() + +Register a plugin. + +`csscrush_plugin( string $name, callable $callback )` + + +*************** + +## csscrush_stat() + +Get compilation stats from the most recent compiled file. + +`csscrush_stat()` diff --git a/include/thirdparty/css-crush/docs/api/options.md b/include/thirdparty/css-crush/docs/api/options.md new file mode 100644 index 0000000..1aa3fb2 --- /dev/null +++ b/include/thirdparty/css-crush/docs/api/options.md @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Option + Values (default in bold) + Description +
minify + true | false | Array + Enable or disable minification. Optionally specify an array of advanced minification parameters. Currently the only advanced option is 'colors', which will compress all color values in any notation. +
formatter + block | single-line | padded + Set the formatting mode. Overrides minify option if both are set. +
newlines + use-platform | windows/win | unix + Set the output style of newlines +
boilerplate + true | false | Path + Prepend a boilerplate to the output file +
versioning + true | false + Append a timestamped querystring to the output filename +
vars + Array + An associative array of CSS variables to be applied at runtime. These will override variables declared globally or in the CSS. +
cache + true | false + Turn caching on or off. +
output_dir + Path + Specify an output directory for compiled files. Defaults to the same directory as the host file. +
output_file + Output filename + Specify an output filename (suffix is added). +
asset_dir + Path + Directory for SVG and image files generated by plugins (defaults to the main file output directory). +
stat_dump + false | true | Path + Save compile stats and variables to a file in json format. +
vendor_target + "all" | "moz", "webkit", ... | Array +Limit aliasing to a specific vendor, or an array of vendors. +
rewrite_import_urls + true | false | "absolute" + Rewrite relative URLs inside inlined imported files. +
import_paths + Array + Additional paths to search when resolving relative import URLs. +
plugins + Array + An array of plugin names to enable. +
source_map + true | false + Output a source map (compliant with the Source Map v3 proposal). +
context + Path + Context for importing resources from relative urls (Only applies to `csscrush_string()` and command line utility). +
doc_root + Path + Specify an alternative server document root for situations where the CSS is being served behind an alias or url rewritten path. +
diff --git a/include/thirdparty/css-crush/docs/core/abstract.md b/include/thirdparty/css-crush/docs/core/abstract.md new file mode 100644 index 0000000..4936aa8 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/abstract.md @@ -0,0 +1,44 @@ + + +Abstract rules are generic rules that can be [extended](#core--inheritance) with the `@extend` directive or mixed in (without arguments) like regular [mixins](#core--mixins) with the `@include` directive. + +```crush +@abstract ellipsis { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +@abstract heading { + font: bold 1rem serif; + letter-spacing: .1em; +} + +.foo { + @extend ellipsis; + display: block; +} +.bar { + @extend ellipsis; + @include heading; +} +``` + +```css +.foo, +.bar { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.foo { + display: block; +} +.bar { + font: bold 1rem serif; + letter-spacing: .1em; +} +``` diff --git a/include/thirdparty/css-crush/docs/core/auto-prefixing.md b/include/thirdparty/css-crush/docs/core/auto-prefixing.md new file mode 100644 index 0000000..02c67b6 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/auto-prefixing.md @@ -0,0 +1,39 @@ + + +Vendor prefixes for properties, functions, @-rules and declarations are **automatically generated** – based on [trusted](http://caniuse.com) [sources](http://developer.mozilla.org/en-US/docs/CSS/CSS_Reference) – so you can maintain cross-browser support while keeping your source code clean and easy to maintain. + + +```crush +.foo { + background: linear-gradient(to right, red, white); +} +``` + +```css +.foo { + background: -webkit-linear-gradient(to right, red, white); + background: linear-gradient(to right, red, white); +} +``` + + +```crush +@keyframes bounce { + 50% { transform: scale(1.4); } +} +``` + +```css +@-webkit-keyframes bounce { + 50% {-webkit-transform: scale(1.4); + transform: scale(1.4);} +} +@keyframes bounce { + 50% {-webkit-transform: scale(1.4); + transform: scale(1.4);} +} +``` diff --git a/include/thirdparty/css-crush/docs/core/direct-import.md b/include/thirdparty/css-crush/docs/core/direct-import.md new file mode 100644 index 0000000..fea9d69 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/direct-import.md @@ -0,0 +1,25 @@ + + +Files referenced with the `@import` directive are inlined directly to save on http requests. Relative URL paths in the CSS are also updated if necessary. + +If you specify a media designation following the import URL — as per the CSS standard — the imported file content is wrapped in a `@media` block. + + +```crush +/* Standard CSS @import statements */ +@import "print.css" print; +@import url( "small-screen.css" ) screen and ( max-width: 500px ); +``` + +```css +@media print { + /* Contents of print.css */ +} +@media screen and ( max-width: 500px ) { + /* Contents of small-screen.css */ +} +``` diff --git a/include/thirdparty/css-crush/docs/core/fragments.md b/include/thirdparty/css-crush/docs/core/fragments.md new file mode 100644 index 0000000..2d3d693 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/fragments.md @@ -0,0 +1,25 @@ + + +Fragments – defined and invoked with the @fragment directive – work in a similar way to [mixins](#core--mixins), except that they work at block level: + +```crush +@fragment input-placeholder { + #(1)::-webkit-input-placeholder { color: #(0); } + #(1):-moz-placeholder { color: #(0); } + #(1)::placeholder { color: #(0); } + #(1).placeholder-state { color: #(0); } +} + +@fragment input-placeholder(#777, textarea); +``` + +```css +textarea::-webkit-input-placeholder { color: #777; } +textarea:-moz-placeholder { color: #777; } +textarea::placeholder { color: #777; } +textarea.placeholder-state { color: #777; } +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/a-adjust.md b/include/thirdparty/css-crush/docs/core/functions/a-adjust.md new file mode 100644 index 0000000..59d2c93 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/a-adjust.md @@ -0,0 +1,26 @@ + + +Manipulate the opacity (alpha channel) of a color value. + +a-adjust( *color*, *offset* ) + +## Parameters + +* *`color`* Any valid CSS color value +* *`offset`* The percentage to offset the color opacity + +## Returns + +The modified color value + + +## Examples + +```css +/* Reduce color opacity by 10% */ +color: a-adjust( rgb(50,50,0) -10 ); +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/data-uri.md b/include/thirdparty/css-crush/docs/core/functions/data-uri.md new file mode 100644 index 0000000..32b0459 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/data-uri.md @@ -0,0 +1,33 @@ + + +Create a data-uri. + +data-uri( *url* ) + +## Parameters + +* *`url`* URL of an asset + +`url` cannot be external, and must not be written with an http protocol prefix. + +The following file extensions are supported: jpg, jpeg, gif, png, svg, svgz, ttf, woff + + +## Returns + +The created data-uri as a string inside a CSS url(). + + +## Examples + +```crush +background: silver data-uri(../images/stripe.png); +``` + +```css +background: silver url(data:); +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/h-adjust.md b/include/thirdparty/css-crush/docs/core/functions/h-adjust.md new file mode 100644 index 0000000..98605c9 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/h-adjust.md @@ -0,0 +1,24 @@ + + +Adjust the hue of a color value. + +h-adjust( *color*, *offset* ) + +## Parameters + +* *`color`* Any valid CSS color value +* *`offset`* The percentage to offset the color hue (percent mark optional) + +## Returns + +The modified color value. + +## Examples + +```css +color: h-adjust( deepskyblue -10 ); +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/hsl-adjust.md b/include/thirdparty/css-crush/docs/core/functions/hsl-adjust.md new file mode 100644 index 0000000..bdee0fd --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/hsl-adjust.md @@ -0,0 +1,27 @@ + + +Manipulate the hue, saturation and lightness of a color value + +hsl-adjust( *color*, *hue-offset*, *saturation-offset*, *lightness-offset* ) + +## Parameters + +* *`color`* Any valid CSS color value +* *`hue-offset`* The percentage to offset the color hue +* *`saturation-offset`* The percentage to offset the color saturation +* *`lightness-offset`* The percentage to offset the color lightness + +## Returns + +The modified color value + +## Examples + +```css +/* Lighten and increase saturation */ +color: hsl-adjust( red 0 5 5 ); +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/hsla-adjust.md b/include/thirdparty/css-crush/docs/core/functions/hsla-adjust.md new file mode 100644 index 0000000..cc05b4b --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/hsla-adjust.md @@ -0,0 +1,27 @@ + + +Manipulate the hue, saturation, lightness and opacity of a color value. + +hsla-adjust( *color*, *hue-offset*, *saturation-offset*, *lightness-offset*, *alpha-offset* ) + +## Parameters + +* *`color`* Any valid CSS color value +* *`hue-offset`* The percentage to offset the color hue +* *`saturation-offset`* The percentage to offset the color saturation +* *`lightness-offset`* The percentage to offset the color lightness +* *`alpha-offset`* The percentage to offset the color opacity + +## Returns + +The modified color value. + +## Examples + +```css +color: hsla-adjust( #f00 0 5 5 -10 ); +``` \ No newline at end of file diff --git a/include/thirdparty/css-crush/docs/core/functions/l-adjust.md b/include/thirdparty/css-crush/docs/core/functions/l-adjust.md new file mode 100644 index 0000000..28ac701 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/l-adjust.md @@ -0,0 +1,24 @@ + + +Adjust the lightness of a color value. + +l-adjust( *color*, *offset* ) + +## Parameters + +* *`color`* Any valid CSS color value +* *`offset`* The percentage to offset the color hue (percent mark optional) + +## Returns + +The modified color value. + +## Examples + +```css +color: l-adjust( deepskyblue 10 ); +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/math.md b/include/thirdparty/css-crush/docs/core/functions/math.md new file mode 100644 index 0000000..2d65b40 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/math.md @@ -0,0 +1,19 @@ + + +Evaluate a raw mathematical expression. + +math( *expression* [, *unit*] ) + +## Examples + +```crush +font-size: math( 12 / 16, em ); +``` + +```css +font-size: 0.75em; +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/query.md b/include/thirdparty/css-crush/docs/core/functions/query.md new file mode 100644 index 0000000..c9d5240 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/query.md @@ -0,0 +1,54 @@ + + +Copy a value from another rule. + +query( *target* [, *property-name* = default] [, *fallback*] ) + +## Parameters + +* *`target`* A rule selector, an abstract rule name or context keyword: `previous`, `next` (also `parent` and `top` within nested structures) +* *`property-name`* The CSS property name to copy, or just `default` to pass over. Defaults to the calling property +* *`fallback`* A CSS value to use if the target property does not exist + + +## Returns + +The referenced property value, or the fallback if it has not been set. + + +## Examples + + +```css +.foo { + width: 40em; + height: 100em; +} + +.bar { + width: query( .foo ); /* 40em */ + margin-top: query( .foo, height ); /* 100em */ + margin-bottom: query( .foo, default, 3em ); /* 3em */ +} +``` + +Using context keywords: + +```css +.foo { + width: 40em; + .bar { + width: 30em; + .baz: { + width: query( parent ); /* 30em */ + .qux { + width: query( top ); /* 40em */ + } + } + } +} +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/s-adjust.md b/include/thirdparty/css-crush/docs/core/functions/s-adjust.md new file mode 100644 index 0000000..8d2cce1 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/s-adjust.md @@ -0,0 +1,25 @@ + + +Adjust the saturation of a color value. + +s-adjust( *color*, *offset* ) + +## Parameters + +* *`color`* Any valid CSS color value +* *`offset`* The percentage to offset the color hue (percent mark optional) + +## Returns + +The modified color value. + +## Examples + +```css +/* Desaturate */ +color: s-adjust( deepskyblue -100 ); +``` diff --git a/include/thirdparty/css-crush/docs/core/functions/this.md b/include/thirdparty/css-crush/docs/core/functions/this.md new file mode 100644 index 0000000..12029b6 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/functions/this.md @@ -0,0 +1,39 @@ + + +Reference another property value from the same containing block. + +Restricted to referencing properties that don't already reference other properties. + +this( *property-name*, *fallback* ) + +## Parameters + +* *`property-name`* Property name +* *`fallback`* A CSS value + +## Returns + +The referenced property value, or the fallback if it has not been set. + +## Examples + +```css +.foo { + width: this( height ); + height: 100em; +} +``` + +******** + +```css +/* The following both fail because they create circular references. */ +.bar { + height: this( width ); + width: this( height ); +} +``` diff --git a/include/thirdparty/css-crush/docs/core/inheritance.md b/include/thirdparty/css-crush/docs/core/inheritance.md new file mode 100644 index 0000000..4473813 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/inheritance.md @@ -0,0 +1,127 @@ + + +By using the `@extend` directive and passing it a named ruleset or selector from any other rule you can share styles more effectively across a stylesheet. + +[Abstract rules](#core--abstract) can be used if you just need to extend a generic set of declarations. + +```crush +.negative-text { + overflow: hidden; + text-indent: -9999px; +} + +.sidebar-headline { + @extend .negative-text; + background: url( headline.png ) no-repeat; +} +``` + +```css +.negative-text, +.sidebar-headline { + overflow: hidden; + text-indent: -9999px; +} + +.sidebar-headline { + background: url( headline.png ) no-repeat; +} +``` + +Inheritance is recursive: + +```crush +.one { color: pink; } +.two { @extend .one; } +.three { @extend .two; } +.four { @extend .three; } +``` + +```css +.one, .two, .three, .four { color: pink; } +``` + +## Referencing by name + +If you want to reference a rule without being concerned about later changes to the identifying selector use the `@name` directive: + +```crush +.foo123 { + @name foo; + text-decoration: underline; +} + +.bar { + @include foo; +} +.baz { + @extend foo; +} +``` + + +## Extending with pseudo classes/elements + +`@extend` arguments can adopt pseudo classes/elements by appending an exclamation mark: + +```crush +.link-base { + color: #bada55; + text-decoration: underline; +} +.link-base:hover, +.link-base:focus { + text-decoration: none; +} + +.link-footer { + @extend .link-base, .link-base:hover!, .link-base:focus!; + color: blue; +} +``` + +```css +.link-base, +.link-footer { + color: #bada55; + text-decoration: underline; +} + +.link-base:hover, +.link-base:focus, +.link-footer:hover, +.link-footer:focus { + text-decoration: none; +} + +.link-footer { + color: blue; +} +``` + +The same outcome can also be achieved with an [Abstract rule](#core--abstract) wrapper to simplify repeated use: + +```crush +.link-base { + color: #bada55; + text-decoration: underline; +} +.link-base:hover, +.link-base:focus { + text-decoration: none; +} + +@abstract link-base { + @extend .link-base, .link-base:hover!, .link-base:focus!; +} + +.link-footer { + @extend link-base; + color: blue; +} +``` + diff --git a/include/thirdparty/css-crush/docs/core/loop.md b/include/thirdparty/css-crush/docs/core/loop.md new file mode 100644 index 0000000..66ae6f7 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/loop.md @@ -0,0 +1,41 @@ + + +For...in loops with lists and generator functions. + +```crush +@for fruit in apple, orange, pear { + .#(fruit) { + background-image: url("images/#(fruit).jpg"); + } +} +``` + +```css +.apple { background-image: url(images/apple.jpg); } +.orange { background-image: url(images/orange.jpg); } +.pear { background-image: url(images/pear.jpg); } +``` + +```crush +@for base in range(2, 24) { + @for i in range(1, #(base)) { + .grid-#(i)-of-#(base) { + width: math(#(i) / #(base) * 100, %); + } + } +} +``` + +```css +.grid-1-of-2 { width: 50%; } +.grid-2-of-2 { width: 100%; } +/* + Intermediate steps ommited. +*/ +.grid-23-of-24 { width: 95.83333%; } +.grid-24-of-24 { width: 100%; } +``` diff --git a/include/thirdparty/css-crush/docs/core/mixins.md b/include/thirdparty/css-crush/docs/core/mixins.md new file mode 100644 index 0000000..1348ff8 --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/mixins.md @@ -0,0 +1,95 @@ + + +Mixins make reusing small snippets of CSS much simpler. You define them with the `@mixin` directive. + +Positional arguments via the argument function `#()` extend the capability of mixins for repurposing in different contexts. + +```crush +@mixin display-font { + font-family: "Arial Black", sans-serif; + font-size: #(0); + letter-spacing: #(1); +} + +/* Another mixin with default arguments */ +@mixin blue-theme { + color: #(0 navy); + background-image: url("images/#(1 cross-hatch).png"); +} + +/* Applying the mixins */ +.foo { + @include display-font(100%, .1em), blue-theme; +} +``` + +```css +.foo { + font-family: "Arial Black", sans-serif; + font-size: 100%; + letter-spacing: .1em; + color: navy; + background-image: url("images/cross-hatch.png"); +} +``` + +## Skipping arguments + +Mixin arguments can be skipped by using the **default** keyword: + +```crush +@mixin display-font { + font-size: #(0 100%); + letter-spacing: #(1); +} + +/* Applying the mixin skipping the first argument so the + default value is used instead */ +#foo { + @include display-font(default, .3em); +} +``` + +Sometimes you may need to use the same positional argument more than once. In this case the default value only needs to be specified once: + +```crush +@mixin square { + width: #(0 10px); + height: #(0); +} + +.foo { + @include square; +} +``` + +```css +#foo { + width: 10px; + height: 10px; +} +``` + + +## Mixing-in from other sources + +Normal rules and [abstract rules](#core--abstract) can also be used as static mixins without arguments: + +```crush +@abstract negative-text { + text-indent: -9999px; + overflow: hidden; +} + +#main-content .theme-border { + border: 1px solid maroon; +} + +.foo { + @include negative-text, #main-content .theme-border; +} +``` diff --git a/include/thirdparty/css-crush/docs/core/nesting.md b/include/thirdparty/css-crush/docs/core/nesting.md new file mode 100644 index 0000000..999be4f --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/nesting.md @@ -0,0 +1,49 @@ + + +Rules can be nested to avoid repetitive typing when scoping to a common parent selector. + +```crush +.homepage { + color: #333; + background: white; + .content { + p { + font-size: 110%; + } + } +} +``` + +```css +.homepage { + color: #333; + background: white; +} +.homepage .content p { + font-size: 110%; +} +``` + +## Parent referencing + +You can use the parent reference symbol `&` for placing the parent selector explicitly. + +```crush +.homepage { + .no-js & { + p { + font-size: 110%; + } + } +} +``` + +```css +.no-js .homepage p { + font-size: 110%; +} +``` diff --git a/include/thirdparty/css-crush/docs/core/selector-aliases.md b/include/thirdparty/css-crush/docs/core/selector-aliases.md new file mode 100644 index 0000000..ea9296d --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/selector-aliases.md @@ -0,0 +1,80 @@ + + +Selector aliases can be useful for grouping together common selector chains for reuse. + +They're defined with the `@selector` directive, and can be used anywhere you might use a pseudo class. + + +```crush +@selector heading :any(h1, h2, h3, h4, h5, h6); +@selector radio input[type="radio"]; +@selector hocus :any(:hover, :focus); + +/* Selector aliases with arguments */ +@selector class-prefix :any([class^="#(0)"], [class*=" #(0)"]); +@selector col :class-prefix(-col); + +.sidebar :heading { + color: honeydew; +} + +:radio { + margin-right: 4px; +} + +:col { + float: left; +} + +p a:hocus { + text-decoration: none; +} +``` + +```css +.sidebar h1, .sidebar h2, +.sidebar h3, .sidebar h4, +.sidebar h5, .sidebar h6 { + color: honeydew; +} + +input[type="radio"] { + margin-right: 4px; +} + +[class^="col-"], +[class*=" col-"] { + border: 1px solid rgba(0,0,0,.5); +} + +p a:hover, +p a:focus { + text-decoration: none; +} +``` + +## Selector splatting + +Selector splats are a special kind of selector alias that expand using passed arguments. + +```crush +@selector-splat input input[type="#(text)"]; + +form :input(time, text, url, email, number) { + border: 1px solid; +} +``` + +```css +form input[type="time"], +form input[type="text"], +form input[type="url"], +form input[type="email"], +form input[type="number"] { + border: 1px solid; +} +``` diff --git a/include/thirdparty/css-crush/docs/core/selector-grouping.md b/include/thirdparty/css-crush/docs/core/selector-grouping.md new file mode 100644 index 0000000..0cafa1f --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/selector-grouping.md @@ -0,0 +1,22 @@ + + +Selector grouping with the `:any` pseudo class (modelled after CSS4 :matches) simplifies the creation of complex selector chains. + +```crush +:any( .sidebar, .block ) a:any( :hover, :focus ) { + color: lemonchiffon; +} +``` + +```css +.block a:hover, +.block a:focus, +.sidebar a:hover, +.sidebar a:focus { + color: lemonchiffon; +} +``` diff --git a/include/thirdparty/css-crush/docs/core/variables.md b/include/thirdparty/css-crush/docs/core/variables.md new file mode 100644 index 0000000..117f53f --- /dev/null +++ b/include/thirdparty/css-crush/docs/core/variables.md @@ -0,0 +1,62 @@ + + +Declare variables in your CSS with a `@set` directive and use them with the `$()` function. + +Variables can also be injected at runtime with the [vars option](#api--options). + + +```crush +/* Defining variables */ +@set { + dark: #333; + light: #F4F2E2; + smaller-screen: screen and (max-width: 800px); +} + +/* Using variables */ +@media $(smaller-screen) { + ul, p { + color: $(dark); + /* Using a fallback value with an undefined variable */ + background-color: $(accent-color, #ff0); + } +} +``` + +******* + +```css +/* Interpolation */ +.username::before { + content: "$(greeting)"; +} +``` + +## Conditionals + +Sections of CSS can be included and excluded on the basis of variable existence with the `@ifset` directive: + +```crush +@set foo #f00; +@set bar true; + +@ifset foo { + p { + color: $(foo); + } +} + +p { + font-size: 12px; + @ifset not foo { + line-height: 1.5; + } + @ifset bar(true) { + margin-bottom: 5px; + } +} +``` diff --git a/include/thirdparty/css-crush/docs/getting-started/js.md b/include/thirdparty/css-crush/docs/getting-started/js.md new file mode 100644 index 0000000..605727f --- /dev/null +++ b/include/thirdparty/css-crush/docs/getting-started/js.md @@ -0,0 +1,26 @@ + + +This preprocessor is written in PHP, so as prerequisite you will need to have PHP installed on your system to use the JS api. + +```shell +npm install csscrush +``` + +All methods can take the standard options (camelCase) as the second argument. + +```php +const csscrush = require('csscrush'); + +// Compile. Returns promise. +csscrush.file('./styles.css', {sourceMap: true}); + +// Compile string of CSS. Returns promise. +csscrush.string('* {box-sizing: border-box;}'); + +// Compile and watch file. Returns event emitter (triggers 'data' on compile). +csscrush.watch('./styles.css'); +``` diff --git a/include/thirdparty/css-crush/docs/getting-started/php.md b/include/thirdparty/css-crush/docs/getting-started/php.md new file mode 100644 index 0000000..1c6f836 --- /dev/null +++ b/include/thirdparty/css-crush/docs/getting-started/php.md @@ -0,0 +1,17 @@ + + +If you're using [Composer](http://getcomposer.org) you can use Crush in your project with the following line in your terminal: + +```shell +composer require css-crush/css-crush +``` + +If you're not using Composer yet just download the library ([zip](http://github.com/peteboere/css-crush/zipball/master) or [tar](http://github.com/peteboere/css-crush/tarball/master)) into a convenient location and require the bootstrap file: + +```php + +``` diff --git a/include/thirdparty/css-crush/docs/plugins/aria.md b/include/thirdparty/css-crush/docs/plugins/aria.md new file mode 100644 index 0000000..c00608d --- /dev/null +++ b/include/thirdparty/css-crush/docs/plugins/aria.md @@ -0,0 +1,21 @@ + +Pseudo classes for working with ARIA roles, states and properties. + + * [ARIA roles spec](http://www.w3.org/TR/wai-aria/roles) + * [ARIA states and properties spec](http://www.w3.org/TR/wai-aria/states_and_properties) + +````crush +:role(tablist) {...} +:aria-expanded {...} +:aria-expanded(false) {...} +:aria-label {...} +:aria-label(foobarbaz) {...} +```` + +````css +[role="tablist"] {...} +[aria-expanded="true"] {...} +[aria-expanded="false"] {...} +[aria-label] {...} +[aria-label="foobarbaz"] {...} +```` diff --git a/include/thirdparty/css-crush/docs/plugins/canvas.md b/include/thirdparty/css-crush/docs/plugins/canvas.md new file mode 100644 index 0000000..df6994d --- /dev/null +++ b/include/thirdparty/css-crush/docs/plugins/canvas.md @@ -0,0 +1,55 @@ + +Bitmap image generator. + +Requires the GD image library bundled with PHP. + +```crush +/* Create square semi-opaque png. */ +@canvas foo { + width: 50; + height: 50; + fill: rgba(255, 0, 0, .5); +} + +body { + background: white canvas(foo); +} +``` + +***** + +```crush +/* White to transparent east facing gradient with 10px + margin and background fill. */ +@canvas horz-gradient { + width: #(0); + height: 150; + fill: canvas-linear-gradient(to right, #(1 white), #(2 rgba(255,255,255,0))); + background-fill: powderblue; + margin: 10; +} + +/* Rectangle 300x150. */ +body { + background: canvas(horz-gradient, 300); +} +/* Flipped gradient, using canvas-data() to generate a data URI. */ +.bar { + background: canvas-data(horz-gradient, 100, rgba(255,255,255,0), white); +} +``` + +***** + +```crush +/* Google logo resized to 400px width and given a sepia effect. */ +@canvas sepia { + src: url(http://www.google.com/images/logo.png); + width: 400; + canvas-filter: greyscale() colorize(45, 45, 0); +} + +.bar { + background: canvas(sepia); +} +``` diff --git a/include/thirdparty/css-crush/docs/plugins/ease.md b/include/thirdparty/css-crush/docs/plugins/ease.md new file mode 100644 index 0000000..37ce5f9 --- /dev/null +++ b/include/thirdparty/css-crush/docs/plugins/ease.md @@ -0,0 +1,37 @@ + +Expanded easing keywords for transitions. + +* ease-in-out-back +* ease-in-out-circ +* ease-in-out-expo +* ease-in-out-sine +* ease-in-out-quint +* ease-in-out-quart +* ease-in-out-cubic +* ease-in-out-quad +* ease-out-back +* ease-out-circ +* ease-out-expo +* ease-out-sine +* ease-out-quint +* ease-out-quart +* ease-out-cubic +* ease-out-quad +* ease-in-back +* ease-in-circ +* ease-in-expo +* ease-in-sine +* ease-in-quint +* ease-in-quart +* ease-in-cubic +* ease-in-quad + +See [easing demos](http://easings.net) for live examples. + +```crush +transition: .2s ease-in-quad; +``` + +```css +transition: .2s cubic-bezier(.550,.085,.680,.530); +``` diff --git a/include/thirdparty/css-crush/docs/plugins/forms.md b/include/thirdparty/css-crush/docs/plugins/forms.md new file mode 100644 index 0000000..3f4fcbc --- /dev/null +++ b/include/thirdparty/css-crush/docs/plugins/forms.md @@ -0,0 +1,16 @@ + +Pseudo classes for working with forms. + +```crush +:input(date, search, email) {...} +:checkbox {...} +:radio {...} +:text {...} +``` + +```css +input[type="date"], input[type="search"], input[type="email"] {...} +input[type="checkbox"] {...} +input[type="radio"] {...} +input[type="text"] {...} +``` diff --git a/include/thirdparty/css-crush/docs/plugins/hocus-pocus.md b/include/thirdparty/css-crush/docs/plugins/hocus-pocus.md new file mode 100644 index 0000000..b8f3efa --- /dev/null +++ b/include/thirdparty/css-crush/docs/plugins/hocus-pocus.md @@ -0,0 +1,12 @@ + +Composite :hover/:focus/:active pseudo classes. + +```crush +a:hocus { color: red; } +a:pocus { color: red; } +``` + +```css +a:hover, a:focus { color: red; } +a:hover, a:focus, a:active { color: red; } +``` diff --git a/include/thirdparty/css-crush/docs/plugins/property-sorter.md b/include/thirdparty/css-crush/docs/plugins/property-sorter.md new file mode 100644 index 0000000..cd17817 --- /dev/null +++ b/include/thirdparty/css-crush/docs/plugins/property-sorter.md @@ -0,0 +1,21 @@ + +Property sorting. + +Examples use the predefined property sorting table. To define a custom sorting order pass an array to `csscrush_set_property_sort_order()` + + +```crush +color: red; +background: #000; +opacity: .5; +display: block; +position: absolute; +``` + +```css +position: absolute; +display: block; +opacity: .5; +color: red; +background: #000; +``` diff --git a/include/thirdparty/css-crush/docs/plugins/svg-gradients.md b/include/thirdparty/css-crush/docs/plugins/svg-gradients.md new file mode 100644 index 0000000..66ff410 --- /dev/null +++ b/include/thirdparty/css-crush/docs/plugins/svg-gradients.md @@ -0,0 +1,48 @@ + +Functions for creating SVG gradients with a CSS gradient like syntax. + +Primarily useful for supporting Internet Explorer 9. + +## svg-linear-gradent() + +Syntax is the same as [linear-gradient()](http://dev.w3.org/csswg/css3-images/#linear-gradient) + +```syntax +svg-linear-gradent( [ | to ,]? [, ]+ ) +``` + +### Returns + +A base64 encoded svg data-uri. + +### Known issues + +Color stops can only take percentage value offsets. + +```css +background-image: svg-linear-gradient( to top left, #fff, rgba(255,255,255,0) 80% ); +background-image: svg-linear-gradient( 35deg, red, gold 20%, powderblue ); +``` + + +## svg-radial-gradent() + +Syntax is similar to but more limited than [radial-gradient()](http://dev.w3.org/csswg/css3-images/#radial-gradient) + +```syntax +svg-radial-gradent( [ | at ,]? [, ]+ ) +``` + +### Returns + +A base64 encoded svg data-uri. + +### Known issues + +Color stops can only take percentage value offsets. +No control over shape - only circular gradients - however, the generated image can be stretched with background-size. + +```css +background-image: svg-radial-gradient( at center, red, blue 50%, yellow ); +background-image: svg-radial-gradient( 100% 50%, rgba(255,255,255,.5), rgba(255,255,255,0) ); +``` diff --git a/include/thirdparty/css-crush/docs/plugins/svg.md b/include/thirdparty/css-crush/docs/plugins/svg.md new file mode 100644 index 0000000..facec0d --- /dev/null +++ b/include/thirdparty/css-crush/docs/plugins/svg.md @@ -0,0 +1,74 @@ + +Define and embed simple SVG elements, paths and effects inside CSS + + +```crush +@svg foo { + type: star; + star-points: #(0 5); + radius: 100 50; + margin: 20; + stroke: black; + fill: red; + fill-opacity: .5; +} + +/* Embed SVG with svg() function (generates an svg file). */ +body { + background: svg(foo); +} +/* As above but a 3 point star creating a data URI instead of a file. */ +body { + background: svg-data(foo, 3); +} +``` + +******* + +```crush +/* Using path data and stroke styles to create a plus sign. */ +@svg plus { + d: "M0,5 h10 M5,0 v10"; + width: 10; + height: 10; + stroke: white; + stroke-linecap: round; + stroke-width: 2; +} +``` + + +******* + +```crush +/* Skewed circle with radial gradient fill and drop shadow. */ +@svg circle { + type: circle; + transform: skewX(30); + diameter: 60; + margin: 20; + fill: svg-radial-gradient(at top right, gold 50%, red); + drop-shadow: 2 2 0 rgba(0,0,0,1); +} +``` + +******* + +```crush +/* 8-sided polygon with an image fill. + Note: images usually have to be converted to data URIs, see known issues below. */ +@svg pattern { + type: polygon; + sides: 8; + diameter: 180; + margin: 20; + fill: pattern(data-uri(kitten.jpg), scale(1) translate(-100 0)); + fill-opacity: .8; +} +``` + + +### Known issues + +Firefox [does not allow linked images](https://bugzilla.mozilla.org/show_bug.cgi?id=628747#c0) (or other svg) when svg is in "svg as image" mode. + diff --git a/include/thirdparty/css-crush/index.js b/include/thirdparty/css-crush/index.js index c12c671..07afb0b 100644 --- a/include/thirdparty/css-crush/index.js +++ b/include/thirdparty/css-crush/index.js @@ -160,7 +160,7 @@ export default { }; export function watch(file, options={}) { - ({file: options.input, context: options.context} = resolveFile(file)); + ({file: options.input, context: options.context} = resolveFile(file, {watch: true})); return (new Process()).watch(options); } @@ -174,7 +174,7 @@ export function string(string, options={}) { return (new Process()).exec(options); } -const resolveFile = input => { +const resolveFile = (input, {watch}={}) => { if (Array.isArray(input)) { @@ -197,7 +197,9 @@ const resolveFile = input => { initial ||= result; previous = result; - setTimeout(poller, 2000); + if (watch) { + setTimeout(poller, 2000); + } return result; }; diff --git a/include/thirdparty/css-crush/lib/CssCrush/Process.php b/include/thirdparty/css-crush/lib/CssCrush/Process.php index 26079a3..e7c0641 100644 --- a/include/thirdparty/css-crush/lib/CssCrush/Process.php +++ b/include/thirdparty/css-crush/lib/CssCrush/Process.php @@ -5,7 +5,7 @@ * */ namespace CssCrush; - +#[\AllowDynamicProperties] class Process { use EventEmitter; @@ -630,8 +630,8 @@ class Process preg_match($rulePatt, $this->string->raw, $ruleMatch, PREG_UNMATCHED_AS_NULL, $traceOffset); - $selector = trim($ruleMatch['selector']); - $block = trim($ruleMatch['block_content']); + $selector = trim($ruleMatch['selector'] ?? null); + $block = trim($ruleMatch['block_content'] ?? null); $replace = ''; // If rules are nested inside we set their parent property. @@ -651,12 +651,12 @@ class Process } } else { - $rule = new Rule($selector, $block, $ruleMatch['trace_token']); + $rule = new Rule($selector, $block, $ruleMatch['trace_token'] ?? null); } $replace = $tokens->add($rule, 'r', $rule->label) . $replace; - $this->string->splice($replace, $traceOffset, strlen($ruleMatch[0])); + $this->string->splice($replace, $traceOffset, strlen($ruleMatch[0]) ?? null); } // Flip, since we just captured rules in reverse order. diff --git a/include/thirdparty/css-crush/package-lock.json b/include/thirdparty/css-crush/package-lock.json new file mode 100644 index 0000000..c4ff45d --- /dev/null +++ b/include/thirdparty/css-crush/package-lock.json @@ -0,0 +1,1664 @@ +{ + "name": "csscrush", + "version": "4.1.3", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "csscrush", + "version": "4.1.3", + "license": "MIT", + "dependencies": { + "glob": "~8.0.3" + }, + "bin": { + "csscrush": "bin/csscrush" + }, + "devDependencies": { + "eslint": "~8.16.0", + "normalize.css": "7.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/normalize.css": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-7.0.0.tgz", + "integrity": "sha1-q/sd2CRwZ04DIrU86xqvQSk45L8=", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "normalize.css": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-7.0.0.tgz", + "integrity": "sha1-q/sd2CRwZ04DIrU86xqvQSk45L8=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/include/thirdparty/css-crush/package.json b/include/thirdparty/css-crush/package.json new file mode 100644 index 0000000..a94376e --- /dev/null +++ b/include/thirdparty/css-crush/package.json @@ -0,0 +1,32 @@ +{ + "name": "csscrush", + "version": "4.1.3", + "description": "CSS-Crush, CSS preprocessor", + "main": "./index.js", + "repository": { + "type": "git", + "url": "https://github.com/peteboere/css-crush.git" + }, + "bugs": { + "url": "https://github.com/peteboere/css-crush/issues" + }, + "bin": { + "csscrush": "./bin/csscrush" + }, + "scripts": { + "lint": "eslint --fix index.js" + }, + "homepage": "http://the-echoplex.net/csscrush", + "license": "MIT", + "devDependencies": { + "eslint": "~8.16.0", + "normalize.css": "7.0.0" + }, + "dependencies": { + "glob": "~8.0.3" + }, + "type": "module", + "engines": { + "node": ">=16" + } +}