├── .editorconfig ├── .eslintrc ├── .gitignore ├── .huskyrc ├── .prettierrc ├── LICENSE.md ├── README.md ├── package.json ├── src ├── index.js └── mix.js └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 2 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parserOptions": { 3 | "ecmaVersion": 6, 4 | "sourceType": "module" 5 | }, 6 | "env": { 7 | "node": true 8 | }, 9 | "rules": { 10 | "no-const-assign": "error", 11 | "newline-before-return": "error", 12 | "no-unreachable": "error", 13 | "no-extra-semi": "error", 14 | "no-unexpected-multiline": "error" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | npm-debug.log 3 | yarn-error.log 4 | -------------------------------------------------------------------------------- /.huskyrc: -------------------------------------------------------------------------------- 1 | { 2 | "hooks": { 3 | "pre-commit": "yarn test" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "singleQuote": true, 4 | "trailingComma": "es5" 5 | } 6 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) Roots Software LLC 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 7 | of the Software, and to permit persons to whom the Software is furnished to do 8 | so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Palette Webpack Plugin 4 | 5 |

6 | 7 |

8 | 9 | MIT License 10 | 11 | 12 | 13 | Version 14 | 15 | 16 | 17 | Total Downloads 18 | 19 | 20 | 21 | Build Status 22 | 23 | 24 | 25 | Follow Roots 26 | 27 |

28 | 29 |

30 | Automatic Color Palette Generation 31 |
32 | Built with ❤️ 33 |

34 | 35 |

36 | Official Website | Donate 37 |

38 | 39 | ## Supporting 40 | 41 | Palette Webpack Plugin is an open source project and completely free to use. 42 | 43 | However, the amount of effort needed to maintain and develop new features and products within the Roots ecosystem is not sustainable without proper financial backing. If you have the capability, please consider donating using the links below: 44 | 45 |
46 | 47 | [![Donate via Patreon](https://img.shields.io/badge/donate-patreon-orange.svg?style=flat-square&logo=patreon)](https://www.patreon.com/rootsdev) 48 | [![Donate via PayPal](https://img.shields.io/badge/donate-paypal-blue.svg?style=flat-square&logo=paypal)](https://www.paypal.me/rootsdev) 49 | 50 |
51 | 52 | ## Overview 53 | 54 | Palette Webpack Plugin allows you to generate a `JSON` file during the build process containing your color palette from existing [Sass maps](https://sass-lang.com/documentation/values/maps) and/or [Tailwind](https://tailwindcss.com). 55 | 56 | While we hope someone may find this useful for other purposes, this plugin and it's output format were specifically built for handling WordPress' Gutenberg [`editor-color-palette`](https://developer.wordpress.org/block-editor/developers/themes/theme-support/) theme support feature. 57 | 58 | ## Features 59 | 60 | - Built to take the headache out of maintaining the WordPress editor palette. 61 | - Merge, filter, and sort Sass color maps and your Tailwind theme colors with a configurable priority. 62 | - Uses computer vision algorithms to detect and deprioritize grayscale colors to the bottom of the list. 63 | - Gracefully loads Sass and/or Tailwind support as needed. 64 | 65 | ## Getting Started 66 | 67 | To begin, you'll need to install `palette-webpack-plugin`: 68 | 69 | ```bash 70 | $ yarn add palette-webpack-plugin -D 71 | ``` 72 | 73 | Then add the plugin to your `webpack` config. Here is an example containing the default values: 74 | 75 | **webpack.config.js** 76 | 77 | ```js 78 | const PalettePlugin = require('palette-webpack-plugin'); 79 | 80 | module.exports = { 81 | plugins: [ 82 | new PalettePlugin({ 83 | output: 'palette.json', 84 | blacklist: ['transparent', 'inherit'], 85 | priority: 'tailwind', 86 | pretty: false, 87 | tailwind: { 88 | config: './tailwind.config.js', 89 | shades: false, 90 | path: 'colors', 91 | }, 92 | sass: { 93 | path: 'resources/assets/styles/config', 94 | files: ['variables.scss'], 95 | variables: ['colors'], 96 | }, 97 | }), 98 | ], 99 | }; 100 | ``` 101 | 102 | If you are using [Laravel Mix](https://laravel-mix.com), you may use the Mix helper like so: 103 | 104 | **webpack.mix.js** 105 | 106 | ```js 107 | const mix = require('laravel-mix'); 108 | require('palette-webpack-plugin/src/mix'); 109 | 110 | mix.palette({ ... }); 111 | ``` 112 | 113 | ## Usage 114 | 115 | The plugin's signature: 116 | 117 | **webpack.config.js** 118 | 119 | ```js 120 | module.exports = { 121 | plugins: [new PalettePlugin(options)], 122 | }; 123 | ``` 124 | 125 | **webpack.mix.js** 126 | 127 | ```js 128 | mix.palette(options); 129 | ``` 130 | 131 | ### Options 132 | 133 | | Name | Type | Default | Description | 134 | | :---------------: | :------------------------: | :--------------------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 135 | | `output` | `{String}` | `'palette.json'` | The filename and path relative to the public path. | 136 | | `blacklist` | `{Array}` | `['transparent, 'inherit']` | Globs to ignore colors. | 137 | | `priority` | `{String}` | `'tailwind'` | Priority when merging non-unique colors while using both Tailwind and Sass. | 138 | | `pretty` | `{Boolean}` | `false` | Use pretty formatting when writing the JSON file. | 139 | | `tailwind` | `{Object}` | `{ ... }` | Set Tailwind options. (See below) | 140 | | `tailwind.config` | `{String}` | `'./tailwind.config.js'` | Path to the Tailwind configuration file relative to the project root path. | 141 | | `tailwind.shades` | `{Object\|Array\|Boolean}` | `false` | While set to `true`, every color shade (`100-900`) will be generated. When set to `false`, only `500` will be used. Optionally, you may define either an array of shades as strings `['50', '100', '500']` or an object containing shade labels `{50: 'Lightest', 100: 'Lighter', 500: ''}`. | 142 | | `tailwind.path` | `{String}` | `'colors'` | Path to Tailwind config values for palette colors in dot notation. Uses Tailwind's color palette `theme('colors')` per default. | 143 | | `sass` | `{Object}` | `{ ... }` | Set Sass options. (See below) | 144 | | `sass.path` | `{String}` | `'resources/assets/styles/config'` | Path to Sass variable files relative to the project root path. | 145 | | `sass.files` | `{Array}` | `['variables.scss']` | An array of files to search for the defined Sass variables. | 146 | | `sass.variables` | `{Array}` | `['colors']` | An array of Sass variables (with or without `$`) to use for the color palette. | 147 | 148 | ### WordPress 149 | 150 | #### Vanilla WordPress 151 | 152 | The general idea is to [`file_get_contents()`](https://www.php.net/manual/en/function.file-get-contents.php) and [`json_decode()`](https://www.php.net/manual/en/function.json-decode.php) the palette and pass it to `add_theme_support('editor-color-palette', $palette)`. 153 | 154 | Here is an example of doing that: 155 | 156 | ```php 157 | /** 158 | * Register the initial theme setup. 159 | * 160 | * @return void 161 | */ 162 | add_action('after_setup_theme', function () { 163 | /** 164 | * Enable theme color palette support 165 | * @link https://developer.wordpress.org/block-editor/developers/themes/theme-support/#block-color-palettes 166 | */ 167 | add_theme_support('editor-color-palette', json_decode(file_get_contents('path/to/palette.json'), true)); 168 | }, 20); 169 | ``` 170 | 171 | #### Sage 10 172 | 173 | When using Sage 10, you can take advantage of the `asset()` helper to fetch the palette. A good place for doing this would be in `setup.php` with the other `add_theme_support()` options. 174 | 175 | ```php 176 | /** 177 | * Enable theme color palette support 178 | * @link https://developer.wordpress.org/block-editor/developers/themes/theme-support/#block-color-palettes 179 | */ 180 | add_theme_support('editor-color-palette', json_decode(asset('palette.json')->contents(), true)); 181 | ``` 182 | 183 | ## Output Example 184 | 185 | ```scss 186 | $black: '#111'; 187 | 188 | $colors: ( 189 | 'red': '#f54242', 190 | 'black': $black, 191 | 'not-actually-black': '#42f596', 192 | 'random-gray': '#858c89', 193 | 'white': '#fff', 194 | 'blue': '#4287f5', 195 | 'orange': '#f5b342', 196 | ); 197 | ``` 198 | 199 | would be transformed to: 200 | 201 | ```json 202 | [ 203 | { "name": "Blue", "slug": "blue", "color": "#4287f5" }, 204 | { 205 | "name": "Not Actually Black", 206 | "slug": "not-actually-black", 207 | "color": "#42f596" 208 | }, 209 | { "name": "Orange", "slug": "orange", "color": "#f5b342" }, 210 | { "name": "Red", "slug": "red", "color": "#f54242" }, 211 | { "name": "Black", "slug": "black", "color": "#111" }, 212 | { "name": "Random Gray", "slug": "random-gray", "color": "#858c89" }, 213 | { "name": "White", "slug": "white", "color": "#fff" } 214 | ] 215 | ``` 216 | 217 | ## Contributing 218 | 219 | Contributions are welcome from everyone. We have [contributing guidelines](https://github.com/roots/guidelines/blob/master/CONTRIBUTING.md) to help you get started. 220 | 221 | ## Todo 222 | 223 | - [ ] Add tests. 224 | - [ ] Split into components. 225 | - [ ] Convert to TypeScript? 226 | 227 | ## Community 228 | 229 | Keep track of development and community news. 230 | 231 | - Participate on the [Roots Discourse](https://discourse.roots.io/) 232 | - Follow [@rootswp on Twitter](https://twitter.com/rootswp) 233 | - Read and subscribe to the [Roots Blog](https://roots.io/blog/) 234 | - Subscribe to the [Roots Newsletter](https://roots.io/subscribe/) 235 | - Listen to the [Roots Radio podcast](https://roots.io/podcast/) 236 | 237 | ## License 238 | 239 | Palette Webpack Plugin is provided under the [MIT License](https://github.com/roots/palette-webpack-plugin/blob/master/LICENSE.md). 240 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "palette-webpack-plugin", 3 | "version": "1.0.5", 4 | "description": "Generate a JSON file containing your color palette from existing Sass maps and/or Tailwind.", 5 | "author": "Brandon Nifong ", 6 | "contributors": [ 7 | "Austin Pray " 8 | ], 9 | "license": "MIT", 10 | "repository": "roots/palette-webpack-plugin", 11 | "homepage": "https://github.com/roots/palette-webpack-plugin", 12 | "bugs": "https://github.com/roots/palette-webpack-plugin/issues", 13 | "keywords": [ 14 | "wordpress", 15 | "webpack", 16 | "color", 17 | "tailwind", 18 | "sass", 19 | "json" 20 | ], 21 | "main": "src/index.js", 22 | "engines": { 23 | "node": ">=16.0.0" 24 | }, 25 | "scripts": { 26 | "test": "eslint src/ --max-warnings=0" 27 | }, 28 | "dependencies": { 29 | "d3-color": "^2.0.0", 30 | "d3-hsv": "^0.1.0", 31 | "lodash": "^4.17.20", 32 | "sass-export": "^2.1.0" 33 | }, 34 | "peerDependencies": { 35 | "webpack": "^4.0.0 || ^5.0.0" 36 | }, 37 | "devDependencies": { 38 | "eslint": "^8.23.0", 39 | "husky": "^8.0.1" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const fs = require('fs'); 3 | const webpack = require('webpack'); 4 | const _ = require('lodash'); 5 | 6 | const { color: d3Color } = require('d3-color'); 7 | const { hsv: d3Hsv } = require('d3-hsv'); 8 | 9 | class PaletteWebpackPlugin { 10 | /** 11 | * Register the component. 12 | * 13 | * @param {Object} options 14 | */ 15 | constructor(options) { 16 | this.options = _.merge( 17 | { 18 | output: 'palette.json', 19 | blacklist: ['transparent', 'inherit'], 20 | priority: 'tailwind', 21 | pretty: false, 22 | tailwind: { 23 | config: './tailwind.config.js', 24 | shades: false, 25 | path: 'colors', 26 | }, 27 | sass: { 28 | path: 'resources/assets/styles/config', 29 | files: ['variables.scss'], 30 | variables: ['colors'], 31 | }, 32 | }, 33 | options || {} 34 | ); 35 | 36 | this.palette = this.options.priority.includes('tailwind') 37 | ? this.build(this.tailwind(), this.sass()) 38 | : this.build(this.sass(), this.tailwind()); 39 | } 40 | 41 | /** 42 | * Add Palette to the webpack build process. 43 | * 44 | * @param {Object} compiler 45 | */ 46 | apply(compiler) { 47 | const palette = JSON.stringify( 48 | this.palette, 49 | null, 50 | this.options.pretty ? 2 : null 51 | ); 52 | 53 | if (compiler.hooks) { 54 | if (webpack.version.startsWith('5')) { 55 | compiler.hooks.thisCompilation.tap( 56 | this.constructor.name, 57 | (compilation) => { 58 | Object.assign(compilation.assets, { 59 | [this.options.output]: { 60 | source() { 61 | return palette; 62 | }, 63 | size() { 64 | return palette.length; 65 | }, 66 | }, 67 | }); 68 | } 69 | ); 70 | } else { 71 | compiler.hooks.emit.tapAsync( 72 | this.constructor.name, 73 | (compilation, callback) => { 74 | Object.assign(compilation.assets, { 75 | [this.options.output]: { 76 | source() { 77 | return palette; 78 | }, 79 | size() { 80 | return palette.length; 81 | }, 82 | }, 83 | }); 84 | 85 | callback(); 86 | } 87 | ); 88 | } 89 | } 90 | } 91 | 92 | /** 93 | * Builds a flattened array containing descriptive color objects in a format 94 | * compatible with the WordPress `editor-color-palette` theme support feature. 95 | * 96 | * @see {@link https://developer.wordpress.org/block-editor/developers/themes/theme-support/} 97 | * @param {Object} objects 98 | */ 99 | build(...objects) { 100 | const collection = _.uniqBy(_.union(...objects), 'name'); 101 | 102 | const [colors, maybeColors] = _.partition( 103 | collection, 104 | (value) => !!d3Color(value.color) 105 | ); 106 | const [falsePositives, notColors] = _.partition(maybeColors, (value) => 107 | /^(?:rgb|hsl)a?\(.+?\)$/i.test(value.color) 108 | ); 109 | const [grayscale, notGrayscale] = _.partition( 110 | colors, 111 | (value) => 112 | this.isGrayscale(value.color) || this.maybeGrayscale(value.color) 113 | ); 114 | 115 | return [ 116 | [...notGrayscale, ...falsePositives, ...notColors], 117 | grayscale, 118 | ].flatMap((color) => _.sortBy(color, 'name')); 119 | } 120 | 121 | /** 122 | * Fetch and parse Sass theme colors if they are available. 123 | */ 124 | sass() { 125 | if (!this.options.sass || !this.options.sass.files) { 126 | return; 127 | } 128 | 129 | const paths = this.options.sass.path 130 | ? _.endsWith('/', this.options.sass.path) 131 | ? this.options.sass.path 132 | : [this.options.sass.path, '/'].join('') 133 | : null; 134 | 135 | const files = [this.options.sass.files].map((file) => { 136 | if (this.exists([paths, file].join(''))) { 137 | return [paths, file].join(''); 138 | } 139 | }); 140 | 141 | if (!files) { 142 | return; 143 | } 144 | 145 | const variables = require('sass-export') 146 | .exporter({ inputFiles: files }) 147 | .getArray(); 148 | 149 | if (!variables.length) { 150 | return; 151 | } 152 | 153 | return variables 154 | .filter( 155 | (key) => 156 | [this.options.sass.variables].some( 157 | (value) => 158 | key.name === 159 | (_.startsWith(value, '$') ? value : ['$', value].join('')) 160 | ) && key.mapValue 161 | ) 162 | .flatMap((colors) => 163 | colors.mapValue.map((color) => 164 | this.transform(color.name, color.compiledValue, true) 165 | ) 166 | ); 167 | } 168 | 169 | /** 170 | * Fetch and parse Tailwind theme colors if they are available. 171 | */ 172 | tailwind() { 173 | if (!this.options.tailwind || !this.exists(this.options.tailwind.config)) { 174 | return []; 175 | } 176 | 177 | const config = require('tailwindcss/resolveConfig')( 178 | require(path.resolve(this.options.tailwind.config)) 179 | ); 180 | 181 | this.tailwind = _.get( 182 | config, 183 | `theme.${this.options.tailwind.path || 'colors'}`, 184 | {} 185 | ); 186 | 187 | return Object.keys(this.tailwind) 188 | .flatMap((key) => { 189 | if (!key || this.options.blacklist.includes(key)) { 190 | return; 191 | } 192 | 193 | if (_.isString(this.tailwind[key])) { 194 | return this.transform(key); 195 | } 196 | 197 | if ( 198 | !this.options.tailwind.shades && 199 | this.tailwind[key].hasOwnProperty('500') 200 | ) { 201 | return this.transform(key, '500'); 202 | } 203 | 204 | if (_.isArray(this.options.tailwind.shades)) { 205 | return Object.keys(this.tailwind[key]) 206 | .filter((value) => this.options.tailwind.shades.includes(value)) 207 | .map((value) => this.transform(key, value)); 208 | } 209 | 210 | if (_.isObject(this.options.tailwind.shades)) { 211 | return Object.keys(this.tailwind[key]) 212 | .filter((value) => 213 | Object.keys(this.options.tailwind.shades).includes(value) 214 | ) 215 | .map((value) => this.transform(key, value)); 216 | } 217 | 218 | return Object.keys(this.tailwind[key]).map((value) => 219 | this.transform(key, value) 220 | ); 221 | }) 222 | .filter((value) => !!value); 223 | } 224 | 225 | /** 226 | * Transform a color key and value into a more descriptive object. 227 | * 228 | * @param {String} key 229 | * @param {String} value 230 | * @param {Boolean} isSass 231 | */ 232 | transform(key, value, isSass = false) { 233 | if (isSass) { 234 | return { 235 | name: this.title(key), 236 | slug: key, 237 | color: value, 238 | }; 239 | } 240 | 241 | if (!value) { 242 | return { 243 | name: this.title(key), 244 | slug: key, 245 | color: this.tailwind[key], 246 | }; 247 | } 248 | 249 | return { 250 | name: isNaN(value) 251 | ? this.title(value) 252 | : this.options.tailwind.shades 253 | ? this.title(key, value) 254 | : this.title(key), 255 | slug: `${key}-${value}`, 256 | color: this.tailwind[key][value], 257 | }; 258 | } 259 | 260 | /** 261 | * Returns a title cased string. 262 | * 263 | * @param {String} value 264 | * @param {String} description 265 | */ 266 | title(value, description) { 267 | value = _.startCase(_.camelCase(value)); 268 | 269 | if ( 270 | !_.isEmpty(description) && 271 | _.isObject(this.options.tailwind.shades) && 272 | _.has(this.options.tailwind.shades, description) 273 | ) { 274 | return _.trim(`${this.options.tailwind.shades[description]} ${value}`); 275 | } 276 | 277 | return ( 278 | value + (!_.isEmpty(description) ? ` (${this.title(description)})` : '') 279 | ); 280 | } 281 | 282 | /** 283 | * Checks if a file exists. 284 | * 285 | * @param {String|Array} files 286 | */ 287 | exists(files) { 288 | if (Array.isArray(files) && files.length) { 289 | return (this.options.sass.files = 290 | files.filter((file) => { 291 | return fs.existsSync(file); 292 | }) || false); 293 | } 294 | 295 | return fs.existsSync(files); 296 | } 297 | 298 | /** 299 | * Check if a color is grayscale. 300 | * 301 | * @param {String} color 302 | */ 303 | isGrayscale(color) { 304 | const { r, g, b } = d3Color(color); 305 | 306 | return r === g && r === b; 307 | } 308 | 309 | /** 310 | * Build a curve to find colors that visually look like grayscale. 311 | * 312 | * Shout out to Austin Pray 313 | * for the big brain plays on color sorting. 314 | * 315 | * @param {String} color 316 | */ 317 | maybeGrayscale(color) { 318 | const { h, s, v } = d3Hsv(color); 319 | 320 | /** 321 | * HSV is a cylinder where the central vertical axis comprises 322 | * the neutral, achromatic, or gray colors. 323 | * (image: https://w.wiki/Fsg) 324 | * 325 | * Let's build a curve to find colors that look like grayscale... 326 | * 327 | * v = 1.3/(1+8.5*s) 328 | * https://www.wolframalpha.com/input/?i=plot+v+%3D+1.3%2F%281%2B8.5*s%29+from+v%3D0+to+1+and+s%3D0+to+1 329 | * 330 | * Good enough for government work. Now let's see if the value 331 | * falls below the curve. 332 | */ 333 | return v < 1.3 / (1 + 8.5 * s); 334 | } 335 | } 336 | 337 | module.exports = PaletteWebpackPlugin; 338 | -------------------------------------------------------------------------------- /src/mix.js: -------------------------------------------------------------------------------- 1 | const mix = require('laravel-mix'); 2 | const PalettePlugin = require('./index'); 3 | 4 | class Palette { 5 | /** 6 | * The optional name to be used when called by Mix. 7 | */ 8 | name() { 9 | return ['colors', 'palette']; 10 | } 11 | 12 | /** 13 | * Register the component. 14 | * 15 | * @param {Object} options 16 | */ 17 | register(options) { 18 | this.options = options || {}; 19 | } 20 | 21 | /** 22 | * Plugins to be merged with the master webpack config. 23 | */ 24 | webpackPlugins() { 25 | return new PalettePlugin(this.options); 26 | } 27 | } 28 | 29 | mix.extend('palette', new Palette()); 30 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@eslint/eslintrc@^1.3.1": 6 | version "1.3.1" 7 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz#de0807bfeffc37b964a7d0400e0c348ce5a2543d" 8 | integrity sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ== 9 | dependencies: 10 | ajv "^6.12.4" 11 | debug "^4.3.2" 12 | espree "^9.4.0" 13 | globals "^13.15.0" 14 | ignore "^5.2.0" 15 | import-fresh "^3.2.1" 16 | js-yaml "^4.1.0" 17 | minimatch "^3.1.2" 18 | strip-json-comments "^3.1.1" 19 | 20 | "@humanwhocodes/config-array@^0.10.4": 21 | version "0.10.4" 22 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" 23 | integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== 24 | dependencies: 25 | "@humanwhocodes/object-schema" "^1.2.1" 26 | debug "^4.1.1" 27 | minimatch "^3.0.4" 28 | 29 | "@humanwhocodes/gitignore-to-minimatch@^1.0.2": 30 | version "1.0.2" 31 | resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" 32 | integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== 33 | 34 | "@humanwhocodes/module-importer@^1.0.1": 35 | version "1.0.1" 36 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 37 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 38 | 39 | "@humanwhocodes/object-schema@^1.2.1": 40 | version "1.2.1" 41 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 42 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 43 | 44 | "@nodelib/fs.scandir@2.1.5": 45 | version "2.1.5" 46 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 47 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 48 | dependencies: 49 | "@nodelib/fs.stat" "2.0.5" 50 | run-parallel "^1.1.9" 51 | 52 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 53 | version "2.0.5" 54 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 55 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 56 | 57 | "@nodelib/fs.walk@^1.2.3": 58 | version "1.2.8" 59 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 60 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 61 | dependencies: 62 | "@nodelib/fs.scandir" "2.1.5" 63 | fastq "^1.6.0" 64 | 65 | acorn-jsx@^5.3.2: 66 | version "5.3.2" 67 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 68 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 69 | 70 | acorn@^8.8.0: 71 | version "8.8.0" 72 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" 73 | integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== 74 | 75 | ajv@^6.10.0, ajv@^6.12.4: 76 | version "6.12.6" 77 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 78 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 79 | dependencies: 80 | fast-deep-equal "^3.1.1" 81 | fast-json-stable-stringify "^2.0.0" 82 | json-schema-traverse "^0.4.1" 83 | uri-js "^4.2.2" 84 | 85 | ansi-regex@^5.0.1: 86 | version "5.0.1" 87 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 88 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 89 | 90 | ansi-styles@^4.1.0: 91 | version "4.3.0" 92 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 93 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 94 | dependencies: 95 | color-convert "^2.0.1" 96 | 97 | anymatch@~3.1.2: 98 | version "3.1.2" 99 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 100 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 101 | dependencies: 102 | normalize-path "^3.0.0" 103 | picomatch "^2.0.4" 104 | 105 | argparse@^2.0.1: 106 | version "2.0.1" 107 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 108 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 109 | 110 | array-union@^2.1.0: 111 | version "2.1.0" 112 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 113 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 114 | 115 | balanced-match@^1.0.0: 116 | version "1.0.2" 117 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 118 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 119 | 120 | binary-extensions@^2.0.0: 121 | version "2.2.0" 122 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 123 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 124 | 125 | brace-expansion@^1.1.7: 126 | version "1.1.11" 127 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 128 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 129 | dependencies: 130 | balanced-match "^1.0.0" 131 | concat-map "0.0.1" 132 | 133 | braces@^3.0.2, braces@~3.0.2: 134 | version "3.0.2" 135 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 136 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 137 | dependencies: 138 | fill-range "^7.0.1" 139 | 140 | callsites@^3.0.0: 141 | version "3.1.0" 142 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 143 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 144 | 145 | chalk@^4.0.0: 146 | version "4.1.2" 147 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 148 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 149 | dependencies: 150 | ansi-styles "^4.1.0" 151 | supports-color "^7.1.0" 152 | 153 | "chokidar@>=3.0.0 <4.0.0": 154 | version "3.5.3" 155 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 156 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 157 | dependencies: 158 | anymatch "~3.1.2" 159 | braces "~3.0.2" 160 | glob-parent "~5.1.2" 161 | is-binary-path "~2.1.0" 162 | is-glob "~4.0.1" 163 | normalize-path "~3.0.0" 164 | readdirp "~3.6.0" 165 | optionalDependencies: 166 | fsevents "~2.3.2" 167 | 168 | color-convert@^2.0.1: 169 | version "2.0.1" 170 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 171 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 172 | dependencies: 173 | color-name "~1.1.4" 174 | 175 | color-name@~1.1.4: 176 | version "1.1.4" 177 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 178 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 179 | 180 | concat-map@0.0.1: 181 | version "0.0.1" 182 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 183 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 184 | 185 | cross-spawn@^7.0.2: 186 | version "7.0.3" 187 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 188 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 189 | dependencies: 190 | path-key "^3.1.0" 191 | shebang-command "^2.0.0" 192 | which "^2.0.1" 193 | 194 | d3-color@1: 195 | version "1.4.1" 196 | resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" 197 | integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== 198 | 199 | d3-color@^2.0.0: 200 | version "2.0.0" 201 | resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e" 202 | integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== 203 | 204 | d3-hsv@^0.1.0: 205 | version "0.1.0" 206 | resolved "https://registry.yarnpkg.com/d3-hsv/-/d3-hsv-0.1.0.tgz#c95be89b34177a29e70a0848db95d7f0261ea99b" 207 | integrity sha512-HcIU73raRodnYiGDMzFbI8wyWkQtd+aAgX2sypAKnJ7UP93P9bOEhhrxWL4krcyp1ec2LFOUpvC8mFBt38YokQ== 208 | dependencies: 209 | d3-color "1" 210 | 211 | debug@^4.1.1, debug@^4.3.2: 212 | version "4.3.4" 213 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 214 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 215 | dependencies: 216 | ms "2.1.2" 217 | 218 | deep-is@^0.1.3: 219 | version "0.1.4" 220 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 221 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 222 | 223 | dir-glob@^3.0.1: 224 | version "3.0.1" 225 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 226 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 227 | dependencies: 228 | path-type "^4.0.0" 229 | 230 | doctrine@^3.0.0: 231 | version "3.0.0" 232 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 233 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 234 | dependencies: 235 | esutils "^2.0.2" 236 | 237 | escape-string-regexp@^4.0.0: 238 | version "4.0.0" 239 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 240 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 241 | 242 | eslint-scope@^7.1.1: 243 | version "7.1.1" 244 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" 245 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== 246 | dependencies: 247 | esrecurse "^4.3.0" 248 | estraverse "^5.2.0" 249 | 250 | eslint-utils@^3.0.0: 251 | version "3.0.0" 252 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 253 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 254 | dependencies: 255 | eslint-visitor-keys "^2.0.0" 256 | 257 | eslint-visitor-keys@^2.0.0: 258 | version "2.1.0" 259 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 260 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 261 | 262 | eslint-visitor-keys@^3.3.0: 263 | version "3.3.0" 264 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 265 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 266 | 267 | eslint@^8.23.0: 268 | version "8.23.0" 269 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.0.tgz#a184918d288820179c6041bb3ddcc99ce6eea040" 270 | integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA== 271 | dependencies: 272 | "@eslint/eslintrc" "^1.3.1" 273 | "@humanwhocodes/config-array" "^0.10.4" 274 | "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" 275 | "@humanwhocodes/module-importer" "^1.0.1" 276 | ajv "^6.10.0" 277 | chalk "^4.0.0" 278 | cross-spawn "^7.0.2" 279 | debug "^4.3.2" 280 | doctrine "^3.0.0" 281 | escape-string-regexp "^4.0.0" 282 | eslint-scope "^7.1.1" 283 | eslint-utils "^3.0.0" 284 | eslint-visitor-keys "^3.3.0" 285 | espree "^9.4.0" 286 | esquery "^1.4.0" 287 | esutils "^2.0.2" 288 | fast-deep-equal "^3.1.3" 289 | file-entry-cache "^6.0.1" 290 | find-up "^5.0.0" 291 | functional-red-black-tree "^1.0.1" 292 | glob-parent "^6.0.1" 293 | globals "^13.15.0" 294 | globby "^11.1.0" 295 | grapheme-splitter "^1.0.4" 296 | ignore "^5.2.0" 297 | import-fresh "^3.0.0" 298 | imurmurhash "^0.1.4" 299 | is-glob "^4.0.0" 300 | js-yaml "^4.1.0" 301 | json-stable-stringify-without-jsonify "^1.0.1" 302 | levn "^0.4.1" 303 | lodash.merge "^4.6.2" 304 | minimatch "^3.1.2" 305 | natural-compare "^1.4.0" 306 | optionator "^0.9.1" 307 | regexpp "^3.2.0" 308 | strip-ansi "^6.0.1" 309 | strip-json-comments "^3.1.0" 310 | text-table "^0.2.0" 311 | 312 | espree@^9.4.0: 313 | version "9.4.0" 314 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" 315 | integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== 316 | dependencies: 317 | acorn "^8.8.0" 318 | acorn-jsx "^5.3.2" 319 | eslint-visitor-keys "^3.3.0" 320 | 321 | esquery@^1.4.0: 322 | version "1.4.0" 323 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 324 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 325 | dependencies: 326 | estraverse "^5.1.0" 327 | 328 | esrecurse@^4.3.0: 329 | version "4.3.0" 330 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 331 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 332 | dependencies: 333 | estraverse "^5.2.0" 334 | 335 | estraverse@^5.1.0, estraverse@^5.2.0: 336 | version "5.3.0" 337 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 338 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 339 | 340 | esutils@^2.0.2: 341 | version "2.0.3" 342 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 343 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 344 | 345 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 346 | version "3.1.3" 347 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 348 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 349 | 350 | fast-glob@^3.2.9: 351 | version "3.2.11" 352 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 353 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 354 | dependencies: 355 | "@nodelib/fs.stat" "^2.0.2" 356 | "@nodelib/fs.walk" "^1.2.3" 357 | glob-parent "^5.1.2" 358 | merge2 "^1.3.0" 359 | micromatch "^4.0.4" 360 | 361 | fast-json-stable-stringify@^2.0.0: 362 | version "2.1.0" 363 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 364 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 365 | 366 | fast-levenshtein@^2.0.6: 367 | version "2.0.6" 368 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 369 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 370 | 371 | fastq@^1.6.0: 372 | version "1.13.0" 373 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 374 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 375 | dependencies: 376 | reusify "^1.0.4" 377 | 378 | file-entry-cache@^6.0.1: 379 | version "6.0.1" 380 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 381 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 382 | dependencies: 383 | flat-cache "^3.0.4" 384 | 385 | fill-range@^7.0.1: 386 | version "7.0.1" 387 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 388 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 389 | dependencies: 390 | to-regex-range "^5.0.1" 391 | 392 | find-up@^5.0.0: 393 | version "5.0.0" 394 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 395 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 396 | dependencies: 397 | locate-path "^6.0.0" 398 | path-exists "^4.0.0" 399 | 400 | flat-cache@^3.0.4: 401 | version "3.0.4" 402 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 403 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 404 | dependencies: 405 | flatted "^3.1.0" 406 | rimraf "^3.0.2" 407 | 408 | flatted@^3.1.0: 409 | version "3.2.7" 410 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 411 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 412 | 413 | fs.realpath@^1.0.0: 414 | version "1.0.0" 415 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 416 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 417 | 418 | fsevents@~2.3.2: 419 | version "2.3.2" 420 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 421 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 422 | 423 | functional-red-black-tree@^1.0.1: 424 | version "1.0.1" 425 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 426 | integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== 427 | 428 | glob-parent@^5.1.2, glob-parent@~5.1.2: 429 | version "5.1.2" 430 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 431 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 432 | dependencies: 433 | is-glob "^4.0.1" 434 | 435 | glob-parent@^6.0.1: 436 | version "6.0.2" 437 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 438 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 439 | dependencies: 440 | is-glob "^4.0.3" 441 | 442 | glob@^7.1.3, glob@^7.1.6: 443 | version "7.2.3" 444 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 445 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 446 | dependencies: 447 | fs.realpath "^1.0.0" 448 | inflight "^1.0.4" 449 | inherits "2" 450 | minimatch "^3.1.1" 451 | once "^1.3.0" 452 | path-is-absolute "^1.0.0" 453 | 454 | globals@^13.15.0: 455 | version "13.17.0" 456 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" 457 | integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== 458 | dependencies: 459 | type-fest "^0.20.2" 460 | 461 | globby@^11.1.0: 462 | version "11.1.0" 463 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 464 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 465 | dependencies: 466 | array-union "^2.1.0" 467 | dir-glob "^3.0.1" 468 | fast-glob "^3.2.9" 469 | ignore "^5.2.0" 470 | merge2 "^1.4.1" 471 | slash "^3.0.0" 472 | 473 | grapheme-splitter@^1.0.4: 474 | version "1.0.4" 475 | resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" 476 | integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== 477 | 478 | has-flag@^4.0.0: 479 | version "4.0.0" 480 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 481 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 482 | 483 | husky@^8.0.1: 484 | version "8.0.1" 485 | resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" 486 | integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== 487 | 488 | ignore@^5.2.0: 489 | version "5.2.0" 490 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 491 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 492 | 493 | immutable@^4.0.0: 494 | version "4.1.0" 495 | resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" 496 | integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== 497 | 498 | import-fresh@^3.0.0, import-fresh@^3.2.1: 499 | version "3.3.0" 500 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 501 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 502 | dependencies: 503 | parent-module "^1.0.0" 504 | resolve-from "^4.0.0" 505 | 506 | imurmurhash@^0.1.4: 507 | version "0.1.4" 508 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 509 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 510 | 511 | inflight@^1.0.4: 512 | version "1.0.6" 513 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 514 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 515 | dependencies: 516 | once "^1.3.0" 517 | wrappy "1" 518 | 519 | inherits@2: 520 | version "2.0.4" 521 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 522 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 523 | 524 | is-binary-path@~2.1.0: 525 | version "2.1.0" 526 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 527 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 528 | dependencies: 529 | binary-extensions "^2.0.0" 530 | 531 | is-extglob@^2.1.1: 532 | version "2.1.1" 533 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 534 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 535 | 536 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 537 | version "4.0.3" 538 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 539 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 540 | dependencies: 541 | is-extglob "^2.1.1" 542 | 543 | is-number@^7.0.0: 544 | version "7.0.0" 545 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 546 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 547 | 548 | isexe@^2.0.0: 549 | version "2.0.0" 550 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 551 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 552 | 553 | js-yaml@^4.1.0: 554 | version "4.1.0" 555 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 556 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 557 | dependencies: 558 | argparse "^2.0.1" 559 | 560 | json-schema-traverse@^0.4.1: 561 | version "0.4.1" 562 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 563 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 564 | 565 | json-stable-stringify-without-jsonify@^1.0.1: 566 | version "1.0.1" 567 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 568 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 569 | 570 | levn@^0.4.1: 571 | version "0.4.1" 572 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 573 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 574 | dependencies: 575 | prelude-ls "^1.2.1" 576 | type-check "~0.4.0" 577 | 578 | locate-path@^6.0.0: 579 | version "6.0.0" 580 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 581 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 582 | dependencies: 583 | p-locate "^5.0.0" 584 | 585 | lodash.merge@^4.6.2: 586 | version "4.6.2" 587 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 588 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 589 | 590 | lodash@^4.17.20: 591 | version "4.17.21" 592 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 593 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 594 | 595 | merge2@^1.3.0, merge2@^1.4.1: 596 | version "1.4.1" 597 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 598 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 599 | 600 | micromatch@^4.0.4: 601 | version "4.0.5" 602 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 603 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 604 | dependencies: 605 | braces "^3.0.2" 606 | picomatch "^2.3.1" 607 | 608 | minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: 609 | version "3.1.2" 610 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 611 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 612 | dependencies: 613 | brace-expansion "^1.1.7" 614 | 615 | minimist@^1.2.5: 616 | version "1.2.6" 617 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 618 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 619 | 620 | ms@2.1.2: 621 | version "2.1.2" 622 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 623 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 624 | 625 | natural-compare@^1.4.0: 626 | version "1.4.0" 627 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 628 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 629 | 630 | normalize-path@^3.0.0, normalize-path@~3.0.0: 631 | version "3.0.0" 632 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 633 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 634 | 635 | once@^1.3.0: 636 | version "1.4.0" 637 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 638 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 639 | dependencies: 640 | wrappy "1" 641 | 642 | optionator@^0.9.1: 643 | version "0.9.1" 644 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 645 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 646 | dependencies: 647 | deep-is "^0.1.3" 648 | fast-levenshtein "^2.0.6" 649 | levn "^0.4.1" 650 | prelude-ls "^1.2.1" 651 | type-check "^0.4.0" 652 | word-wrap "^1.2.3" 653 | 654 | p-limit@^3.0.2: 655 | version "3.1.0" 656 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 657 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 658 | dependencies: 659 | yocto-queue "^0.1.0" 660 | 661 | p-locate@^5.0.0: 662 | version "5.0.0" 663 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 664 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 665 | dependencies: 666 | p-limit "^3.0.2" 667 | 668 | parent-module@^1.0.0: 669 | version "1.0.1" 670 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 671 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 672 | dependencies: 673 | callsites "^3.0.0" 674 | 675 | path-exists@^4.0.0: 676 | version "4.0.0" 677 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 678 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 679 | 680 | path-is-absolute@^1.0.0: 681 | version "1.0.1" 682 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 683 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 684 | 685 | path-key@^3.1.0: 686 | version "3.1.1" 687 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 688 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 689 | 690 | path-type@^4.0.0: 691 | version "4.0.0" 692 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 693 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 694 | 695 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 696 | version "2.3.1" 697 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 698 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 699 | 700 | prelude-ls@^1.2.1: 701 | version "1.2.1" 702 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 703 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 704 | 705 | punycode@^2.1.0: 706 | version "2.1.1" 707 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 708 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 709 | 710 | queue-microtask@^1.2.2: 711 | version "1.2.3" 712 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 713 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 714 | 715 | readdirp@~3.6.0: 716 | version "3.6.0" 717 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 718 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 719 | dependencies: 720 | picomatch "^2.2.1" 721 | 722 | regexpp@^3.2.0: 723 | version "3.2.0" 724 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 725 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 726 | 727 | resolve-from@^4.0.0: 728 | version "4.0.0" 729 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 730 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 731 | 732 | reusify@^1.0.4: 733 | version "1.0.4" 734 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 735 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 736 | 737 | rimraf@^3.0.2: 738 | version "3.0.2" 739 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 740 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 741 | dependencies: 742 | glob "^7.1.3" 743 | 744 | run-parallel@^1.1.9: 745 | version "1.2.0" 746 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 747 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 748 | dependencies: 749 | queue-microtask "^1.2.2" 750 | 751 | sass-export@^2.1.0: 752 | version "2.1.2" 753 | resolved "https://registry.yarnpkg.com/sass-export/-/sass-export-2.1.2.tgz#93cfac5eff20f47ca2f559d75bd12a5b370b81d6" 754 | integrity sha512-p6bLjnD/0l+aoVkoToClGSUgIK3PsL3x9/lratp4kVtcvYqoM/JFCxnhcumW8lFVkF8o7K9kWQ6q8upC22S0dA== 755 | dependencies: 756 | glob "^7.1.6" 757 | minimist "^1.2.5" 758 | sass "^1.32.8" 759 | 760 | sass@^1.32.8: 761 | version "1.54.9" 762 | resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.9.tgz#b05f14ed572869218d1a76961de60cd647221762" 763 | integrity sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q== 764 | dependencies: 765 | chokidar ">=3.0.0 <4.0.0" 766 | immutable "^4.0.0" 767 | source-map-js ">=0.6.2 <2.0.0" 768 | 769 | shebang-command@^2.0.0: 770 | version "2.0.0" 771 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 772 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 773 | dependencies: 774 | shebang-regex "^3.0.0" 775 | 776 | shebang-regex@^3.0.0: 777 | version "3.0.0" 778 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 779 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 780 | 781 | slash@^3.0.0: 782 | version "3.0.0" 783 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 784 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 785 | 786 | "source-map-js@>=0.6.2 <2.0.0": 787 | version "1.0.2" 788 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 789 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 790 | 791 | strip-ansi@^6.0.1: 792 | version "6.0.1" 793 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 794 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 795 | dependencies: 796 | ansi-regex "^5.0.1" 797 | 798 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 799 | version "3.1.1" 800 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 801 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 802 | 803 | supports-color@^7.1.0: 804 | version "7.2.0" 805 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 806 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 807 | dependencies: 808 | has-flag "^4.0.0" 809 | 810 | text-table@^0.2.0: 811 | version "0.2.0" 812 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 813 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 814 | 815 | to-regex-range@^5.0.1: 816 | version "5.0.1" 817 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 818 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 819 | dependencies: 820 | is-number "^7.0.0" 821 | 822 | type-check@^0.4.0, type-check@~0.4.0: 823 | version "0.4.0" 824 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 825 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 826 | dependencies: 827 | prelude-ls "^1.2.1" 828 | 829 | type-fest@^0.20.2: 830 | version "0.20.2" 831 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 832 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 833 | 834 | uri-js@^4.2.2: 835 | version "4.4.1" 836 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 837 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 838 | dependencies: 839 | punycode "^2.1.0" 840 | 841 | which@^2.0.1: 842 | version "2.0.2" 843 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 844 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 845 | dependencies: 846 | isexe "^2.0.0" 847 | 848 | word-wrap@^1.2.3: 849 | version "1.2.3" 850 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 851 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 852 | 853 | wrappy@1: 854 | version "1.0.2" 855 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 856 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 857 | 858 | yocto-queue@^0.1.0: 859 | version "0.1.0" 860 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 861 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 862 | --------------------------------------------------------------------------------