├── .editorconfig ├── .gitignore ├── .rollup.js ├── .tape.js ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── INSTALL.md ├── LICENSE.md ├── README.md ├── index.js ├── lib ├── custom-media-from-root.js ├── get-custom-media-from-imports.js ├── media-ast-from-string.js ├── transform-atrules.js ├── transform-media-list.js └── write-custom-media-to-exports.js ├── package.json ├── test ├── basic.css ├── basic.expect.css ├── basic.import.expect.css ├── basic.preserve.expect.css ├── export-media.css ├── export-media.js ├── export-media.json ├── export-media.mjs ├── import-css.css ├── import-media.css ├── import-media.js ├── import-media.json ├── import.css ├── import.empty.expect.css ├── import.expect.css └── import.plugin.expect.css └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_style = tab 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | 10 | [*.md] 11 | trim_trailing_whitespace = false 12 | 13 | [*.{json,md,yml}] 14 | indent_size = 2 15 | indent_style = space 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | index.*.* 3 | package-lock.json 4 | *.log* 5 | *.result.css 6 | .* 7 | !.editorconfig 8 | !.gitignore 9 | !.rollup.js 10 | !.tape.js 11 | !.travis.yml 12 | -------------------------------------------------------------------------------- /.rollup.js: -------------------------------------------------------------------------------- 1 | import babel from '@rollup/plugin-babel'; 2 | 3 | export default { 4 | input: 'index.js', 5 | output: [ 6 | { file: 'index.cjs.js', format: 'cjs', sourcemap: true, exports: 'default' }, 7 | { file: 'index.es.mjs', format: 'es', sourcemap: true, exports: 'default' } 8 | ], 9 | plugins: [ 10 | babel({ 11 | babelHelpers: 'bundled', 12 | plugins: [ 13 | '@babel/plugin-syntax-dynamic-import' 14 | ], 15 | presets: [ 16 | ['@babel/env', { modules: false, targets: { node: 10 } }] 17 | ] 18 | }) 19 | ] 20 | }; 21 | -------------------------------------------------------------------------------- /.tape.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'basic': { 3 | message: 'supports basic usage' 4 | }, 5 | 'basic:preserve': { 6 | message: 'supports { preserve: true } usage', 7 | options: { 8 | preserve: true 9 | } 10 | }, 11 | 'import': { 12 | message: 'supports { importFrom: { customMedia: { ... } } } usage', 13 | options: { 14 | importFrom: { 15 | customMedia: { 16 | '--mq-a': '(max-width: 30em), (max-height: 30em)', 17 | '--not-mq-a': 'not all and (--mq-a)' 18 | } 19 | } 20 | } 21 | }, 22 | 'import:import-fn': { 23 | message: 'supports { importFrom() } usage', 24 | options: { 25 | importFrom() { 26 | return { 27 | customMedia: { 28 | '--mq-a': '(max-width: 30em), (max-height: 30em)', 29 | '--not-mq-a': 'not all and (--mq-a)' 30 | } 31 | }; 32 | } 33 | }, 34 | expect: 'import.expect.css', 35 | result: 'import.result.css' 36 | }, 37 | 'import:import-fn-promise': { 38 | message: 'supports { async importFrom() } usage', 39 | options: { 40 | importFrom() { 41 | return new Promise(resolve => { 42 | resolve({ 43 | customMedia: { 44 | '--mq-a': '(max-width: 30em), (max-height: 30em)', 45 | '--not-mq-a': 'not all and (--mq-a)' 46 | } 47 | }) 48 | }); 49 | } 50 | }, 51 | expect: 'import.expect.css', 52 | result: 'import.result.css' 53 | }, 54 | 'import:json': { 55 | message: 'supports { importFrom: "test/import-media.json" } usage', 56 | options: { 57 | importFrom: 'test/import-media.json' 58 | }, 59 | expect: 'import.expect.css', 60 | result: 'import.result.css' 61 | }, 62 | 'import:js': { 63 | message: 'supports { importFrom: "test/import-media.js" } usage', 64 | options: { 65 | importFrom: 'test/import-media.js' 66 | }, 67 | expect: 'import.expect.css', 68 | result: 'import.result.css' 69 | }, 70 | 'import:css': { 71 | message: 'supports { importFrom: "test/import-media.css" } usage', 72 | options: { 73 | importFrom: 'test/import-media.css' 74 | }, 75 | expect: 'import.expect.css', 76 | result: 'import.result.css' 77 | }, 78 | 'import:css-from': { 79 | message: 'supports { importFrom: { from: "test/import-media.css" } } usage', 80 | options: { 81 | importFrom: { from: 'test/import-media.css' } 82 | }, 83 | expect: 'import.expect.css', 84 | result: 'import.result.css' 85 | }, 86 | 'import:css-from-type': { 87 | message: 'supports { importFrom: [ { from: "test/import-media.css", type: "css" } ] } usage', 88 | options: { 89 | importFrom: [ { from: 'test/import-media.css', type: 'css' } ] 90 | }, 91 | expect: 'import.expect.css', 92 | result: 'import.result.css' 93 | }, 94 | 'import:empty': { 95 | message: 'supports { importFrom: {} } usage', 96 | options: { 97 | importFrom: {} 98 | } 99 | }, 100 | 'basic:export': { 101 | message: 'supports { exportTo: { customMedia: { ... } } } usage', 102 | options: { 103 | exportTo: (global.__exportMediaObject = global.__exportMediaObject || { 104 | customMedia: null 105 | }) 106 | }, 107 | expect: 'basic.expect.css', 108 | result: 'basic.result.css', 109 | after() { 110 | if (__exportMediaObject.customMedia['--mq-a'] !== '(max-width: 30em), (max-height: 30em)') { 111 | throw new Error('The exportTo function failed'); 112 | } 113 | } 114 | }, 115 | 'basic:export-fn': { 116 | message: 'supports { exportTo() } usage', 117 | options: { 118 | exportTo(customMedia) { 119 | if (customMedia['--mq-a'] !== '(max-width: 30em), (max-height: 30em)') { 120 | throw new Error('The exportTo function failed'); 121 | } 122 | } 123 | }, 124 | expect: 'basic.expect.css', 125 | result: 'basic.result.css' 126 | }, 127 | 'basic:export-fn-promise': { 128 | message: 'supports { async exportTo() } usage', 129 | options: { 130 | exportTo(customMedia) { 131 | return new Promise((resolve, reject) => { 132 | if (customMedia['--mq-a'] !== '(max-width: 30em), (max-height: 30em)') { 133 | reject('The exportTo function failed'); 134 | } else { 135 | resolve(); 136 | } 137 | }); 138 | } 139 | }, 140 | expect: 'basic.expect.css', 141 | result: 'basic.result.css' 142 | }, 143 | 'basic:export-json': { 144 | message: 'supports { exportTo: "test/export-media.json" } usage', 145 | options: { 146 | exportTo: 'test/export-media.json' 147 | }, 148 | expect: 'basic.expect.css', 149 | result: 'basic.result.css', 150 | before() { 151 | global.__exportMediaString = require('fs').readFileSync('test/export-media.json', 'utf8'); 152 | }, 153 | after() { 154 | if (global.__exportMediaString !== require('fs').readFileSync('test/export-media.json', 'utf8')) { 155 | throw new Error('The original file did not match the freshly exported copy'); 156 | } 157 | } 158 | }, 159 | 'basic:export-js': { 160 | message: 'supports { exportTo: "test/export-media.js" } usage', 161 | options: { 162 | exportTo: 'test/export-media.js' 163 | }, 164 | expect: 'basic.expect.css', 165 | result: 'basic.result.css', 166 | before() { 167 | global.__exportMediaString = require('fs').readFileSync('test/export-media.js', 'utf8'); 168 | }, 169 | after() { 170 | if (global.__exportMediaString !== require('fs').readFileSync('test/export-media.js', 'utf8')) { 171 | throw new Error('The original file did not match the freshly exported copy'); 172 | } 173 | } 174 | }, 175 | 'basic:export-mjs': { 176 | message: 'supports { exportTo: "test/export-media.mjs" } usage', 177 | options: { 178 | exportTo: 'test/export-media.mjs' 179 | }, 180 | expect: 'basic.expect.css', 181 | result: 'basic.result.css', 182 | before() { 183 | global.__exportMediaString = require('fs').readFileSync('test/export-media.mjs', 'utf8'); 184 | }, 185 | after() { 186 | if (global.__exportMediaString !== require('fs').readFileSync('test/export-media.mjs', 'utf8')) { 187 | throw new Error('The original file did not match the freshly exported copy'); 188 | } 189 | } 190 | }, 191 | 'basic:export-css': { 192 | message: 'supports { exportTo: "test/export-media.css" } usage', 193 | options: { 194 | exportTo: 'test/export-media.css' 195 | }, 196 | expect: 'basic.expect.css', 197 | result: 'basic.result.css', 198 | before() { 199 | global.__exportMediaString = require('fs').readFileSync('test/export-media.css', 'utf8'); 200 | }, 201 | after() { 202 | if (global.__exportMediaString !== require('fs').readFileSync('test/export-media.css', 'utf8')) { 203 | throw new Error('The original file did not match the freshly exported copy'); 204 | } 205 | } 206 | }, 207 | 'basic:export-css-to': { 208 | message: 'supports { exportTo: { to: "test/export-media.css" } } usage', 209 | options: { 210 | exportTo: { to: 'test/export-media.css' } 211 | }, 212 | expect: 'basic.expect.css', 213 | result: 'basic.result.css', 214 | before() { 215 | global.__exportMediaString = require('fs').readFileSync('test/export-media.css', 'utf8'); 216 | }, 217 | after() { 218 | if (global.__exportMediaString !== require('fs').readFileSync('test/export-media.css', 'utf8')) { 219 | throw new Error('The original file did not match the freshly exported copy'); 220 | } 221 | } 222 | }, 223 | 'basic:export-css-to-type': { 224 | message: 'supports { exportTo: { to: "test/export-media.css", type: "css" } } usage', 225 | options: { 226 | exportTo: { to: 'test/export-media.css', type: 'css' } 227 | }, 228 | expect: 'basic.expect.css', 229 | result: 'basic.result.css', 230 | before() { 231 | global.__exportMediaString = require('fs').readFileSync('test/export-media.css', 'utf8'); 232 | }, 233 | after() { 234 | if (global.__exportMediaString !== require('fs').readFileSync('test/export-media.css', 'utf8')) { 235 | throw new Error('The original file did not match the freshly exported copy'); 236 | } 237 | } 238 | } 239 | }; 240 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # https://docs.travis-ci.com/user/travis-lint 2 | 3 | language: node_js 4 | 5 | node_js: 6 | - 14 7 | - 12 8 | - 10 9 | 10 | install: 11 | - npm install --ignore-scripts 12 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changes to PostCSS Custom Media 2 | 3 | ### 8.0.0 (January 12, 2021) 4 | 5 | - Added: Support for PostCSS v8 6 | 7 | ### 7.0.8 (March 30, 2019) 8 | 9 | - Fixed: Issue importing from `.pcss` files 10 | - Updated: `postcss` to 7.0.14 (patch) 11 | 12 | ### 7.0.7 (October 19, 2018) 13 | 14 | - Fixed: Issue combining custom media media queries with `and` 15 | 16 | ### 7.0.6 (October 12, 2018) 17 | 18 | - Fixed: Issue combining multiple custom media 19 | 20 | ### 7.0.5 (October 5, 2018) 21 | 22 | - Fixed: Possible issues resolving paths to imports and exports 23 | - Added: Imports from `customMedia` and `custom-media` simultaneously 24 | - Updated: `postcss` to 7.0.5 25 | 26 | ### 7.0.4 (September 23, 2018) 27 | 28 | - Added: `importFromPlugins` option to process imports 29 | 30 | ### 7.0.3 (September 20, 2018) 31 | 32 | - Fixed: Do not break on an empty `importFrom` object 33 | 34 | ### 7.0.2 (September 15, 2018) 35 | 36 | - Fixed: An issue with re-assigning params as a non-string 37 | 38 | ### 7.0.1 (September 14, 2018) 39 | 40 | - Fixed: An issue with how opposing queries are resolved. 41 | 42 | ### 7.0.0 (September 14, 2018) 43 | 44 | - Added: New `preserve` option to preserve custom media and atrules using them 45 | - Added: New `exportTo` function to specify where to export custom media 46 | - Added: New `importFrom` option to specify where to import custom media 47 | - Added: Support for PostCSS v7 48 | - Added: Support for Node v6+ 49 | 50 | # 6.0.0 (May 12, 2017) 51 | 52 | - Added: compatibility with postcss v6.x 53 | 54 | # 5.0.1 (February 3, 2016) 55 | 56 | - Fixed: circular dependencies are properly detected 57 | ([#17](https://github.com/postcss/postcss-custom-media/pull/17)) 58 | 59 | # 5.0.0 (August 25, 2015) 60 | 61 | - Removed: compatibility with postcss v4.x 62 | - Added: compatibility with postcss v5.x 63 | 64 | # 4.1.0 (06 30, 2015) 65 | 66 | - Added: Allow custom media to reference each other 67 | ([#10](https://github.com/postcss/postcss-custom-media/pull/10)) 68 | 69 | # 4.0.0 (May 17, 2015) 70 | 71 | - Changed: warning messages are now sent via postcss messages api (^4.1.0) 72 | - Added: automatic custom media `--` prefixing 73 | ([#11](https://github.com/postcss/postcss-custom-media/issues/11)) 74 | - Added: `preserve` allows you to preserve custom media query defintions 75 | - Added: `appendExtensions` allows you (when `preserve` is truthy) to append your extensions as media queries 76 | 77 | # 3.0.0 (January 29, 2015) 78 | 79 | - Added: compatibility with postcss v4.x 80 | - Removed: compatibility with postcss v3.x 81 | 82 | # 2.0.0 [Yanked] 83 | 84 | _You never saw this version (this is a bad release that points to 1.0.0)._ 85 | 86 | # 1.3.0 (November 25, 2014) 87 | 88 | - Changed: better gnu message 89 | 90 | # 1.2.1 (October 9, 2014) 91 | 92 | - Fixed: npm description 93 | 94 | # 1.2.0 (October 1, 2014) 95 | 96 | - Added: support for multiples media in query list (ref [#rework-custom-media/5](https://github.com/reworkcss/rework-custom-media/pull/5)) 97 | 98 | # 1.1.0 (September 30, 2014) 99 | 100 | - Added: support for js-defined media queries (fix [#3](https://github.com/postcss/postcss-custom-media/issues/3)) 101 | 102 | # 1.0.1 (September 16, 2014) 103 | 104 | - Added: Allow whitespace around custom media name (fix [#2](https://github.com/postcss/postcss-custom-media/issues/2)) 105 | 106 | # 1.0.0 (August 12, 2014) 107 | 108 | ✨ First release based on [rework-custom-media](https://github.com/reworkcss/rework-custom-media) v0.1.1 109 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to PostCSS Custom Media 2 | 3 | You want to help? You rock! Now, take a moment to be sure your contributions 4 | make sense to everyone else. 5 | 6 | ## Reporting Issues 7 | 8 | Found a problem? Want a new feature? 9 | 10 | - See if your issue or idea has [already been reported]. 11 | - Provide a [reduced test case] or a [live example]. 12 | 13 | Remember, a bug is a _demonstrable problem_ caused by _our_ code. 14 | 15 | ## Submitting Pull Requests 16 | 17 | Pull requests are the greatest contributions, so be sure they are focused in 18 | scope and avoid unrelated commits. 19 | 20 | 1. To begin; [fork this project], clone your fork, and add our upstream. 21 | ```bash 22 | # Clone your fork of the repo into the current directory 23 | git clone git@github.com:YOUR_USER/postcss-custom-media.git 24 | 25 | # Navigate to the newly cloned directory 26 | cd postcss-custom-media 27 | 28 | # Assign the original repo to a remote called "upstream" 29 | git remote add upstream git@github.com:postcss/postcss-custom-media.git 30 | 31 | # Install the tools necessary for testing 32 | npm install 33 | ``` 34 | 35 | 2. Create a branch for your feature or fix: 36 | ```bash 37 | # Move into a new branch for your feature 38 | git checkout -b feature/thing 39 | ``` 40 | ```bash 41 | # Move into a new branch for your fix 42 | git checkout -b fix/something 43 | ``` 44 | 45 | 3. If your code follows our practices, then push your feature branch: 46 | ```bash 47 | # Test current code 48 | npm test 49 | ``` 50 | ```bash 51 | # Push the branch for your new feature 52 | git push origin feature/thing 53 | ``` 54 | ```bash 55 | # Or, push the branch for your update 56 | git push origin update/something 57 | ``` 58 | 59 | That’s it! Now [open a pull request] with a clear title and description. 60 | 61 | [already been reported]: issues 62 | [fork this project]: fork 63 | [live example]: https://codepen.io/pen 64 | [open a pull request]: https://help.github.com/articles/using-pull-requests/ 65 | [reduced test case]: https://css-tricks.com/reduced-test-cases/ 66 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | # Installing PostCSS Custom Media 2 | 3 | [PostCSS Custom Media] runs in all Node environments, with special instructions for: 4 | 5 | | [Node](#node) | [PostCSS CLI](#postcss-cli) | [Webpack](#webpack) | [Create React App](#create-react-app) | [Gulp](#gulp) | [Grunt](#grunt) | 6 | | --- | --- | --- | --- | --- | --- | 7 | 8 | ## Node 9 | 10 | Add [PostCSS Custom Media] to your project: 11 | 12 | ```bash 13 | npm install postcss-custom-media --save-dev 14 | ``` 15 | 16 | Use [PostCSS Custom Media] to process your CSS: 17 | 18 | ```js 19 | const postcssCustomMedia = require('postcss-custom-media'); 20 | 21 | postcssCustomMedia.process(YOUR_CSS /*, processOptions, pluginOptions */); 22 | ``` 23 | 24 | Or use it as a [PostCSS] plugin: 25 | 26 | ```js 27 | const postcss = require('postcss'); 28 | const postcssCustomMedia = require('postcss-custom-media'); 29 | 30 | postcss([ 31 | postcssCustomMedia(/* pluginOptions */) 32 | ]).process(YOUR_CSS /*, processOptions */); 33 | ``` 34 | 35 | ## PostCSS CLI 36 | 37 | Add [PostCSS CLI] to your project: 38 | 39 | ```bash 40 | npm install postcss-cli --save-dev 41 | ``` 42 | 43 | Use [PostCSS Custom Media] in your `postcss.config.js` configuration file: 44 | 45 | ```js 46 | const postcssCustomMedia = require('postcss-custom-media'); 47 | 48 | module.exports = { 49 | plugins: [ 50 | postcssCustomMedia(/* pluginOptions */) 51 | ] 52 | } 53 | ``` 54 | 55 | ## Webpack 56 | 57 | Add [PostCSS Loader] to your project: 58 | 59 | ```bash 60 | npm install postcss-loader --save-dev 61 | ``` 62 | 63 | Use [PostCSS Custom Media] in your Webpack configuration: 64 | 65 | ```js 66 | const postcssCustomMedia = require('postcss-custom-media'); 67 | 68 | module.exports = { 69 | module: { 70 | rules: [ 71 | { 72 | test: /\.css$/, 73 | use: [ 74 | 'style-loader', 75 | { loader: 'css-loader', options: { importLoaders: 1 } }, 76 | { loader: 'postcss-loader', options: { 77 | ident: 'postcss', 78 | plugins: () => [ 79 | postcssCustomMedia(/* pluginOptions */) 80 | ] 81 | } } 82 | ] 83 | } 84 | ] 85 | } 86 | } 87 | ``` 88 | 89 | ## Create React App 90 | 91 | Add [React App Rewired] and [React App Rewire PostCSS] to your project: 92 | 93 | ```bash 94 | npm install react-app-rewired react-app-rewire-postcss --save-dev 95 | ``` 96 | 97 | Use [React App Rewire PostCSS] and [PostCSS Custom Media] in your 98 | `config-overrides.js` file: 99 | 100 | ```js 101 | const reactAppRewirePostcss = require('react-app-rewire-postcss'); 102 | const postcssCustomMedia = require('postcss-custom-media'); 103 | 104 | module.exports = config => reactAppRewirePostcss(config, { 105 | plugins: () => [ 106 | postcssCustomMedia(/* pluginOptions */) 107 | ] 108 | }); 109 | ``` 110 | 111 | ## Gulp 112 | 113 | Add [Gulp PostCSS] to your project: 114 | 115 | ```bash 116 | npm install gulp-postcss --save-dev 117 | ``` 118 | 119 | Use [PostCSS Custom Media] in your Gulpfile: 120 | 121 | ```js 122 | const postcss = require('gulp-postcss'); 123 | const postcssCustomMedia = require('postcss-custom-media'); 124 | 125 | gulp.task('css', () => gulp.src('./src/*.css').pipe( 126 | postcss([ 127 | postcssCustomMedia(/* pluginOptions */) 128 | ]) 129 | ).pipe( 130 | gulp.dest('.') 131 | )); 132 | ``` 133 | 134 | ## Grunt 135 | 136 | Add [Grunt PostCSS] to your project: 137 | 138 | ```bash 139 | npm install grunt-postcss --save-dev 140 | ``` 141 | 142 | Use [PostCSS Custom Media] in your Gruntfile: 143 | 144 | ```js 145 | const postcssCustomMedia = require('postcss-custom-media'); 146 | 147 | grunt.loadNpmTasks('grunt-postcss'); 148 | 149 | grunt.initConfig({ 150 | postcss: { 151 | options: { 152 | use: [ 153 | postcssCustomMedia(/* pluginOptions */) 154 | ] 155 | }, 156 | dist: { 157 | src: '*.css' 158 | } 159 | } 160 | }); 161 | ``` 162 | 163 | [Gulp PostCSS]: https://github.com/postcss/gulp-postcss 164 | [Grunt PostCSS]: https://github.com/nDmitry/grunt-postcss 165 | [PostCSS]: https://github.com/postcss/postcss 166 | [PostCSS CLI]: https://github.com/postcss/postcss-cli 167 | [PostCSS Loader]: https://github.com/postcss/postcss-loader 168 | [PostCSS Custom Media]: https://github.com/postcss/postcss-custom-media 169 | [React App Rewire PostCSS]: https://github.com/csstools/react-app-rewire-postcss 170 | [React App Rewired]: https://github.com/timarney/react-app-rewired 171 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | 3 | Copyright © PostCSS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | of the Software, and to permit persons to whom the Software is furnished to do 10 | so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
⚠️ PostCSS Custom Media was moved to @csstools/postcss-plugins. ⚠️
2 | Read the announcement
3 | 4 | # PostCSS Custom Media [PostCSS][postcss] 5 | 6 | [![NPM Version][npm-img]][npm-url] 7 | [![CSS Standard Status][css-img]][css-url] 8 | [![Build Status][cli-img]][cli-url] 9 | [![Support Chat][git-img]][git-url] 10 | 11 | [PostCSS Custom Media] lets you use Custom Media Queries in CSS, following the 12 | [CSS Media Queries] specification. 13 | 14 | ```pcss 15 | @custom-media --small-viewport (max-width: 30em); 16 | 17 | @media (--small-viewport) { 18 | /* styles for small viewport */ 19 | } 20 | 21 | /* becomes */ 22 | 23 | @media (max-width: 30em) { 24 | /* styles for small viewport */ 25 | } 26 | ``` 27 | 28 | ## Usage 29 | 30 | Add [PostCSS Custom Media] to your project: 31 | 32 | ```bash 33 | npm install postcss-custom-media --save-dev 34 | ``` 35 | 36 | Use [PostCSS Custom Media] to process your CSS: 37 | 38 | ```js 39 | const postcssCustomMedia = require('postcss-custom-media'); 40 | 41 | postcssCustomMedia.process(YOUR_CSS /*, processOptions, pluginOptions */); 42 | ``` 43 | 44 | Or use it as a [PostCSS] plugin: 45 | 46 | ```js 47 | const postcss = require('postcss'); 48 | const postcssCustomMedia = require('postcss-custom-media'); 49 | 50 | postcss([ 51 | postcssCustomMedia(/* pluginOptions */) 52 | ]).process(YOUR_CSS /*, processOptions */); 53 | ``` 54 | 55 | [PostCSS Custom Media] runs in all Node environments, with special instructions for: 56 | 57 | | [Node](INSTALL.md#node) | [PostCSS CLI](INSTALL.md#postcss-cli) | [Webpack](INSTALL.md#webpack) | [Create React App](INSTALL.md#create-react-app) | [Gulp](INSTALL.md#gulp) | [Grunt](INSTALL.md#grunt) | 58 | | --- | --- | --- | --- | --- | --- | 59 | 60 | ## Options 61 | 62 | ### preserve 63 | 64 | The `preserve` option determines whether custom media and atrules using custom 65 | media should be preserved in their original form. 66 | 67 | ```pcss 68 | @custom-media --small-viewport (max-width: 30em); 69 | 70 | @media (--small-viewport) { 71 | /* styles for small viewport */ 72 | } 73 | 74 | /* becomes */ 75 | 76 | @custom-media --small-viewport (max-width: 30em); 77 | 78 | @media (max-width: 30em) { 79 | /* styles for small viewport */ 80 | } 81 | 82 | @media (--small-viewport) { 83 | /* styles for small viewport */ 84 | } 85 | ``` 86 | 87 | ### importFrom 88 | 89 | The `importFrom` option specifies sources where custom media can be imported 90 | from, which might be CSS, JS, and JSON files, functions, and directly passed 91 | objects. 92 | 93 | ```js 94 | postcssCustomMedia({ 95 | importFrom: 'path/to/file.css' // => @custom-selector --small-viewport (max-width: 30em); 96 | }); 97 | ``` 98 | 99 | ```pcss 100 | @media (max-width: 30em) { 101 | /* styles for small viewport */ 102 | } 103 | 104 | @media (--small-viewport) { 105 | /* styles for small viewport */ 106 | } 107 | ``` 108 | 109 | Multiple sources can be passed into this option, and they will be parsed in the 110 | order they are received. JavaScript files, JSON files, functions, and objects 111 | will need to namespace custom media using the `customMedia` or 112 | `custom-media` key. 113 | 114 | ```js 115 | postcssCustomMedia({ 116 | importFrom: [ 117 | 'path/to/file.css', 118 | 'and/then/this.js', 119 | 'and/then/that.json', 120 | { 121 | customMedia: { '--small-viewport': '(max-width: 30em)' } 122 | }, 123 | () => { 124 | const customMedia = { '--small-viewport': '(max-width: 30em)' }; 125 | 126 | return { customMedia }; 127 | } 128 | ] 129 | }); 130 | ``` 131 | 132 | ### exportTo 133 | 134 | The `exportTo` option specifies destinations where custom media can be exported 135 | to, which might be CSS, JS, and JSON files, functions, and directly passed 136 | objects. 137 | 138 | ```js 139 | postcssCustomMedia({ 140 | exportTo: 'path/to/file.css' // @custom-media --small-viewport (max-width: 30em); 141 | }); 142 | ``` 143 | 144 | Multiple destinations can be passed into this option, and they will be parsed 145 | in the order they are received. JavaScript files, JSON files, and objects will 146 | need to namespace custom media using the `customMedia` or 147 | `custom-media` key. 148 | 149 | ```js 150 | const cachedObject = { customMedia: {} }; 151 | 152 | postcssCustomMedia({ 153 | exportTo: [ 154 | 'path/to/file.css', // @custom-media --small-viewport (max-width: 30em); 155 | 'and/then/this.js', // module.exports = { customMedia: { '--small-viewport': '(max-width: 30em)' } } 156 | 'and/then/this.mjs', // export const customMedia = { '--small-viewport': '(max-width: 30em)' } } 157 | 'and/then/that.json', // { "custom-media": { "--small-viewport": "(max-width: 30em)" } } 158 | cachedObject, 159 | customMedia => { 160 | customMedia // { '--small-viewport': '(max-width: 30em)' } 161 | } 162 | ] 163 | }); 164 | ``` 165 | 166 | See example exports written to [CSS](test/export-media.css), 167 | [JS](test/export-media.js), [MJS](test/export-media.mjs), and 168 | [JSON](test/export-media.json). 169 | 170 | [cli-img]: https://img.shields.io/travis/postcss/postcss-custom-media/master.svg 171 | [cli-url]: https://travis-ci.org/postcss/postcss-custom-media 172 | [css-img]: https://cssdb.org/badge/custom-media-queries.svg 173 | [css-url]: https://cssdb.org/#custom-media-queries 174 | [git-img]: https://img.shields.io/badge/support-chat-blue.svg 175 | [git-url]: https://gitter.im/postcss/postcss 176 | [npm-img]: https://img.shields.io/npm/v/postcss-custom-media.svg 177 | [npm-url]: https://www.npmjs.com/package/postcss-custom-media 178 | 179 | [CSS Media Queries]: https://drafts.csswg.org/mediaqueries-5/#custom-mq 180 | [PostCSS]: https://github.com/postcss/postcss 181 | [PostCSS Custom Media]: https://github.com/postcss/postcss-custom-media 182 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import getCustomMediaFromRoot from './lib/custom-media-from-root'; 2 | import getCustomMediaFromImports from './lib/get-custom-media-from-imports'; 3 | import transformAtrules from './lib/transform-atrules'; 4 | import writeCustomMediaToExports from './lib/write-custom-media-to-exports'; 5 | 6 | const creator = opts => { 7 | // whether to preserve custom media and at-rules using them 8 | const preserve = 'preserve' in Object(opts) ? Boolean(opts.preserve) : false; 9 | 10 | // sources to import custom media from 11 | const importFrom = [].concat(Object(opts).importFrom || []); 12 | 13 | // destinations to export custom media to 14 | const exportTo = [].concat(Object(opts).exportTo || []); 15 | 16 | // promise any custom media are imported 17 | const customMediaImportsPromise = getCustomMediaFromImports(importFrom); 18 | 19 | return { 20 | postcssPlugin: 'postcss-custom-media', 21 | Once: async (root, helpers) => { 22 | 23 | // combine rules from root and from imports 24 | helpers.customMedia = Object.assign( 25 | await customMediaImportsPromise, 26 | getCustomMediaFromRoot(root, { preserve }) 27 | ); 28 | 29 | await writeCustomMediaToExports(helpers.customMedia, exportTo); 30 | }, 31 | AtRule: { 32 | media: (atrule, helpers) => { 33 | transformAtrules(atrule, {preserve}, helpers) 34 | } 35 | } 36 | } 37 | } 38 | 39 | creator.postcss = true 40 | 41 | export default creator 42 | -------------------------------------------------------------------------------- /lib/custom-media-from-root.js: -------------------------------------------------------------------------------- 1 | import mediaASTFromString from './media-ast-from-string'; 2 | 3 | // return custom selectors from the css root, conditionally removing them 4 | export default (root, opts) => { 5 | // initialize custom selectors 6 | const customMedias = {}; 7 | 8 | // for each custom selector atrule that is a child of the css root 9 | root.nodes.slice().forEach(node => { 10 | if (isCustomMedia(node)) { 11 | // extract the name and selectors from the params of the custom selector 12 | const [, name, selectors] = node.params.match(customMediaParamsRegExp); 13 | 14 | // write the parsed selectors to the custom selector 15 | customMedias[name] = mediaASTFromString(selectors); 16 | 17 | // conditionally remove the custom selector atrule 18 | if (!Object(opts).preserve) { 19 | node.remove(); 20 | } 21 | } 22 | }); 23 | 24 | return customMedias; 25 | }; 26 | 27 | // match the custom selector name 28 | const customMediaNameRegExp = /^custom-media$/i; 29 | 30 | // match the custom selector params 31 | const customMediaParamsRegExp = /^(--[A-z][\w-]*)\s+([\W\w]+)\s*$/; 32 | 33 | // whether the atrule is a custom selector 34 | const isCustomMedia = node => node.type === 'atrule' && customMediaNameRegExp.test(node.name) && customMediaParamsRegExp.test(node.params); 35 | -------------------------------------------------------------------------------- /lib/get-custom-media-from-imports.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import path from 'path'; 3 | import { parse } from 'postcss'; 4 | import getMediaAstFromMediaString from './media-ast-from-string'; 5 | import getCustomMedia from './custom-media-from-root'; 6 | 7 | /* Get Custom Media from CSS File 8 | /* ========================================================================== */ 9 | 10 | async function getCustomMediaFromCSSFile(from) { 11 | const css = await readFile(from); 12 | const root = parse(css, { from }); 13 | 14 | return getCustomMedia(root, { preserve: true }); 15 | } 16 | 17 | /* Get Custom Media from Object 18 | /* ========================================================================== */ 19 | 20 | function getCustomMediaFromObject(object) { 21 | const customMedia = Object.assign( 22 | {}, 23 | Object(object).customMedia, 24 | Object(object)['custom-media'] 25 | ); 26 | 27 | for (const key in customMedia) { 28 | customMedia[key] = getMediaAstFromMediaString(customMedia[key]); 29 | } 30 | 31 | return customMedia; 32 | } 33 | 34 | /* Get Custom Media from JSON file 35 | /* ========================================================================== */ 36 | 37 | async function getCustomMediaFromJSONFile(from) { 38 | const object = await readJSON(from); 39 | 40 | return getCustomMediaFromObject(object); 41 | } 42 | 43 | /* Get Custom Media from JS file 44 | /* ========================================================================== */ 45 | 46 | async function getCustomMediaFromJSFile(from) { 47 | const object = await import(from); 48 | 49 | return getCustomMediaFromObject(object); 50 | } 51 | 52 | /* Get Custom Media from Sources 53 | /* ========================================================================== */ 54 | 55 | export default function getCustomMediaFromSources(sources) { 56 | return sources.map(source => { 57 | if (source instanceof Promise) { 58 | return source; 59 | } else if (source instanceof Function) { 60 | return source(); 61 | } 62 | 63 | // read the source as an object 64 | const opts = source === Object(source) ? source : { from: String(source) }; 65 | 66 | // skip objects with custom media 67 | if (Object(opts).customMedia || Object(opts)['custom-media']) { 68 | return opts 69 | } 70 | 71 | // source pathname 72 | const from = path.resolve(String(opts.from || '')); 73 | 74 | // type of file being read from 75 | const type = (opts.type || path.extname(from).slice(1)).toLowerCase(); 76 | 77 | return { type, from }; 78 | }).reduce(async (customMedia, source) => { 79 | const { type, from } = await source; 80 | 81 | if (type === 'css' || type === 'pcss') { 82 | return Object.assign(await customMedia, await getCustomMediaFromCSSFile(from)); 83 | } 84 | 85 | if (type === 'js') { 86 | return Object.assign(await customMedia, await getCustomMediaFromJSFile(from)); 87 | } 88 | 89 | if (type === 'json') { 90 | return Object.assign(await customMedia, await getCustomMediaFromJSONFile(from)); 91 | } 92 | 93 | return Object.assign(await customMedia, getCustomMediaFromObject(await source)); 94 | }, {}); 95 | } 96 | 97 | /* Helper utilities 98 | /* ========================================================================== */ 99 | 100 | const readFile = from => new Promise((resolve, reject) => { 101 | fs.readFile(from, 'utf8', (error, result) => { 102 | if (error) { 103 | reject(error); 104 | } else { 105 | resolve(result); 106 | } 107 | }); 108 | }); 109 | 110 | const readJSON = async from => JSON.parse(await readFile(from)); 111 | -------------------------------------------------------------------------------- /lib/media-ast-from-string.js: -------------------------------------------------------------------------------- 1 | function parse(string, splitByAnd) { 2 | const array = []; 3 | let buffer = ''; 4 | let split = false; 5 | let func = 0; 6 | let i = -1; 7 | 8 | while (++i < string.length) { 9 | const char = string[i]; 10 | 11 | if (char === '(') { 12 | func += 1; 13 | } else if (char === ')') { 14 | if (func > 0) { 15 | func -= 1; 16 | } 17 | } else if (func === 0) { 18 | if (splitByAnd && andRegExp.test(buffer + char)) { 19 | split = true; 20 | } else if (!splitByAnd && char === ',') { 21 | split = true; 22 | } 23 | } 24 | 25 | if (split) { 26 | array.push(splitByAnd ? new MediaExpression(buffer + char) : new MediaQuery(buffer)); 27 | 28 | buffer = ''; 29 | split = false; 30 | } else { 31 | buffer += char 32 | } 33 | } 34 | 35 | if (buffer !== '') { 36 | array.push(splitByAnd ? new MediaExpression(buffer) : new MediaQuery(buffer)); 37 | } 38 | 39 | return array; 40 | } 41 | 42 | class MediaQueryList { 43 | constructor(string) { 44 | this.nodes = parse(string); 45 | } 46 | 47 | invert() { 48 | this.nodes.forEach(node => { 49 | node.invert(); 50 | }) 51 | 52 | return this; 53 | } 54 | 55 | clone() { 56 | return new MediaQueryList(String(this)); 57 | } 58 | 59 | toString() { 60 | return this.nodes.join(','); 61 | } 62 | } 63 | 64 | class MediaQuery { 65 | constructor(string) { 66 | const [, before, media, after ] = string.match(spaceWrapRegExp); 67 | const [, modifier = '', afterModifier = ' ', type = '', beforeAnd = '', and = '', beforeExpression = '', expression1 = '', expression2 = ''] = media.match(mediaRegExp) || []; 68 | const raws = { before, after, afterModifier, originalModifier: modifier || '', beforeAnd, and, beforeExpression }; 69 | const nodes = parse(expression1 || expression2, true); 70 | 71 | Object.assign(this, { 72 | modifier, 73 | type, 74 | raws, 75 | nodes 76 | }); 77 | } 78 | 79 | clone(overrides) { 80 | const instance = new MediaQuery(String(this)); 81 | 82 | Object.assign(instance, overrides); 83 | 84 | return instance; 85 | } 86 | 87 | invert() { 88 | this.modifier = this.modifier ? '' : this.raws.originalModifier; 89 | 90 | return this; 91 | } 92 | 93 | toString() { 94 | const { raws } = this; 95 | 96 | return `${raws.before}${this.modifier}${this.modifier ? `${raws.afterModifier}` : ''}${this.type}${raws.beforeAnd}${raws.and}${raws.beforeExpression}${this.nodes.join('')}${this.raws.after}`; 97 | } 98 | } 99 | 100 | class MediaExpression { 101 | constructor(string) { 102 | const [, value, after = '', and = '', afterAnd = '' ] = string.match(andRegExp) || [null, string]; 103 | const raws = { after, and, afterAnd }; 104 | 105 | Object.assign(this, { value, raws }); 106 | } 107 | 108 | clone(overrides) { 109 | const instance = new MediaExpression(String(this)); 110 | 111 | Object.assign(instance, overrides); 112 | 113 | return instance; 114 | } 115 | 116 | toString() { 117 | const { raws } = this; 118 | 119 | return `${this.value}${raws.after}${raws.and}${raws.afterAnd}`; 120 | } 121 | } 122 | 123 | const modifierRE = '(not|only)'; 124 | const typeRE = '(all|print|screen|speech)'; 125 | const noExpressionRE = '([\\W\\w]*)'; 126 | const expressionRE = '([\\W\\w]+)'; 127 | const noSpaceRE = '(\\s*)'; 128 | const spaceRE = '(\\s+)'; 129 | const andRE = '(?:(\\s+)(and))'; 130 | const andRegExp = new RegExp(`^${expressionRE}(?:${andRE}${spaceRE})$`, 'i'); 131 | const spaceWrapRegExp = new RegExp(`^${noSpaceRE}${noExpressionRE}${noSpaceRE}$`); 132 | const mediaRegExp = new RegExp(`^(?:${modifierRE}${spaceRE})?(?:${typeRE}(?:${andRE}${spaceRE}${expressionRE})?|${expressionRE})$`, 'i'); 133 | 134 | export default string => new MediaQueryList(string); 135 | -------------------------------------------------------------------------------- /lib/transform-atrules.js: -------------------------------------------------------------------------------- 1 | import transformMediaList from "./transform-media-list"; 2 | import mediaASTFromString from "./media-ast-from-string"; 3 | 4 | // transform custom pseudo selectors with custom selectors 5 | export default (atrule, { preserve }, { customMedia }) => { 6 | if (customPseudoRegExp.test(atrule.params)) { 7 | // prevent infinite loops when using 'preserve' option 8 | if (!atrule[visitedFlag]) { 9 | atrule[visitedFlag] = true; 10 | 11 | const mediaAST = mediaASTFromString(atrule.params); 12 | const params = String(transformMediaList(mediaAST, customMedia)); 13 | 14 | if (preserve) { 15 | // keep an original copy 16 | const node = atrule.cloneAfter(); 17 | node[visitedFlag] = true; 18 | } 19 | // replace the variable with the params from @custom-media rule 20 | // skip if the variable is undefined 21 | if (params != null) { 22 | atrule.params = params; 23 | } 24 | } 25 | } 26 | }; 27 | 28 | const visitedFlag = Symbol("customMediaVisited"); 29 | const customPseudoRegExp = /\(--[A-z][\w-]*\)/; 30 | -------------------------------------------------------------------------------- /lib/transform-media-list.js: -------------------------------------------------------------------------------- 1 | // return transformed medias, replacing custom pseudo medias with custom medias 2 | export default function transformMediaList(mediaList, customMedias) { 3 | let index = mediaList.nodes.length - 1; 4 | 5 | while (index >= 0) { 6 | const transformedMedias = transformMedia(mediaList.nodes[index], customMedias); 7 | 8 | if (transformedMedias.length) { 9 | mediaList.nodes.splice(index, 1, ...transformedMedias); 10 | } 11 | 12 | --index; 13 | } 14 | 15 | return mediaList; 16 | } 17 | 18 | // return custom pseudo medias replaced with custom medias 19 | function transformMedia(media, customMedias) { 20 | const transpiledMedias = []; 21 | 22 | for (const index in media.nodes) { 23 | const { value, nodes } = media.nodes[index]; 24 | const key = value.replace(customPseudoRegExp, '$1'); 25 | 26 | if (key in customMedias) { 27 | for (const replacementMedia of customMedias[key].nodes) { 28 | // use the first available modifier unless they cancel each other out 29 | const modifier = media.modifier !== replacementMedia.modifier 30 | ? media.modifier || replacementMedia.modifier 31 | : ''; 32 | const mediaClone = media.clone({ 33 | modifier, 34 | // conditionally use the raws from the first available modifier 35 | raws: !modifier || media.modifier 36 | ? { ...media.raws } 37 | : { ...replacementMedia.raws }, 38 | type: media.type || replacementMedia.type, 39 | }); 40 | 41 | // conditionally include more replacement raws when the type is present 42 | if (mediaClone.type === replacementMedia.type) { 43 | Object.assign(mediaClone.raws, { 44 | and: replacementMedia.raws.and, 45 | beforeAnd: replacementMedia.raws.beforeAnd, 46 | beforeExpression: replacementMedia.raws.beforeExpression 47 | }); 48 | } 49 | 50 | mediaClone.nodes.splice(index, 1, ...replacementMedia.clone().nodes.map(node => { 51 | // use raws and spacing from the current usage 52 | if (media.nodes[index].raws.and) { 53 | node.raws = { ...media.nodes[index].raws }; 54 | } 55 | 56 | node.spaces = { ...media.nodes[index].spaces }; 57 | 58 | return node; 59 | })); 60 | 61 | // remove the currently transformed key to prevent recursion 62 | const nextCustomMedia = getCustomMediasWithoutKey(customMedias, key); 63 | const retranspiledMedias = transformMedia(mediaClone, nextCustomMedia); 64 | 65 | if (retranspiledMedias.length) { 66 | transpiledMedias.push(...retranspiledMedias); 67 | } else { 68 | transpiledMedias.push(mediaClone); 69 | } 70 | } 71 | 72 | return transpiledMedias; 73 | } else if (nodes && nodes.length) { 74 | transformMediaList(media.nodes[index], customMedias); 75 | } 76 | } 77 | 78 | return transpiledMedias; 79 | } 80 | 81 | const customPseudoRegExp = /\((--[A-z][\w-]*)\)/; 82 | 83 | const getCustomMediasWithoutKey = (customMedias, key) => { 84 | const nextCustomMedias = Object.assign({}, customMedias); 85 | 86 | delete nextCustomMedias[key]; 87 | 88 | return nextCustomMedias; 89 | }; 90 | -------------------------------------------------------------------------------- /lib/write-custom-media-to-exports.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import path from 'path'; 3 | 4 | /* Write Custom Media from CSS File 5 | /* ========================================================================== */ 6 | 7 | async function writeCustomMediaToCssFile(to, customMedia) { 8 | const cssContent = Object.keys(customMedia).reduce((cssLines, name) => { 9 | cssLines.push(`@custom-media ${name} ${customMedia[name]};`); 10 | 11 | return cssLines; 12 | }, []).join('\n'); 13 | const css = `${cssContent}\n`; 14 | 15 | await writeFile(to, css); 16 | } 17 | 18 | /* Write Custom Media from JSON file 19 | /* ========================================================================== */ 20 | 21 | async function writeCustomMediaToJsonFile(to, customMedia) { 22 | const jsonContent = JSON.stringify({ 23 | 'custom-media': customMedia 24 | }, null, ' '); 25 | const json = `${jsonContent}\n`; 26 | 27 | await writeFile(to, json); 28 | } 29 | 30 | /* Write Custom Media from Common JS file 31 | /* ========================================================================== */ 32 | 33 | async function writeCustomMediaToCjsFile(to, customMedia) { 34 | const jsContents = Object.keys(customMedia).reduce((jsLines, name) => { 35 | jsLines.push(`\t\t'${escapeForJS(name)}': '${escapeForJS(customMedia[name])}'`); 36 | 37 | return jsLines; 38 | }, []).join(',\n'); 39 | const js = `module.exports = {\n\tcustomMedia: {\n${jsContents}\n\t}\n};\n`; 40 | 41 | await writeFile(to, js); 42 | } 43 | 44 | /* Write Custom Media from Module JS file 45 | /* ========================================================================== */ 46 | 47 | async function writeCustomMediaToMjsFile(to, customMedia) { 48 | const mjsContents = Object.keys(customMedia).reduce((mjsLines, name) => { 49 | mjsLines.push(`\t'${escapeForJS(name)}': '${escapeForJS(customMedia[name])}'`); 50 | 51 | return mjsLines; 52 | }, []).join(',\n'); 53 | const mjs = `export const customMedia = {\n${mjsContents}\n};\n`; 54 | 55 | await writeFile(to, mjs); 56 | } 57 | 58 | /* Write Custom Media to Exports 59 | /* ========================================================================== */ 60 | 61 | export default function writeCustomMediaToExports(customMedia, destinations) { 62 | return Promise.all(destinations.map(async destination => { 63 | if (destination instanceof Function) { 64 | await destination(defaultCustomMediaToJSON(customMedia)); 65 | } else { 66 | // read the destination as an object 67 | const opts = destination === Object(destination) ? destination : { to: String(destination) }; 68 | 69 | // transformer for custom media into a JSON-compatible object 70 | const toJSON = opts.toJSON || defaultCustomMediaToJSON; 71 | 72 | if ('customMedia' in opts) { 73 | // write directly to an object as customMedia 74 | opts.customMedia = toJSON(customMedia); 75 | } else if ('custom-media' in opts) { 76 | // write directly to an object as custom-media 77 | opts['custom-media'] = toJSON(customMedia); 78 | } else { 79 | // destination pathname 80 | const to = String(opts.to || ''); 81 | 82 | // type of file being written to 83 | const type = (opts.type || path.extname(to).slice(1)).toLowerCase(); 84 | 85 | // transformed custom media 86 | const customMediaJSON = toJSON(customMedia); 87 | 88 | if (type === 'css') { 89 | await writeCustomMediaToCssFile(to, customMediaJSON); 90 | } 91 | 92 | if (type === 'js') { 93 | await writeCustomMediaToCjsFile(to, customMediaJSON); 94 | } 95 | 96 | if (type === 'json') { 97 | await writeCustomMediaToJsonFile(to, customMediaJSON); 98 | } 99 | 100 | if (type === 'mjs') { 101 | await writeCustomMediaToMjsFile(to, customMediaJSON); 102 | } 103 | } 104 | } 105 | })); 106 | } 107 | 108 | /* Helper utilities 109 | /* ========================================================================== */ 110 | 111 | const defaultCustomMediaToJSON = customMedia => { 112 | return Object.keys(customMedia).reduce((customMediaJSON, key) => { 113 | customMediaJSON[key] = String(customMedia[key]); 114 | 115 | return customMediaJSON; 116 | }, {}); 117 | }; 118 | 119 | const writeFile = (to, text) => new Promise((resolve, reject) => { 120 | fs.writeFile(to, text, error => { 121 | if (error) { 122 | reject(error); 123 | } else { 124 | resolve(); 125 | } 126 | }); 127 | }); 128 | 129 | const escapeForJS = string => string.replace(/\\([\s\S])|(')/g, '\\$1$2').replace(/\n/g, '\\n').replace(/\r/g, '\\r'); 130 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "postcss-custom-media", 3 | "version": "8.0.0", 4 | "description": "Use Custom Media Queries in CSS", 5 | "author": "Jonathan Neal ", 6 | "contributors": [ 7 | "Maxime Thirouin" 8 | ], 9 | "license": "MIT", 10 | "repository": "postcss/postcss-custom-media", 11 | "homepage": "https://github.com/postcss/postcss-custom-media#readme", 12 | "bugs": "https://github.com/postcss/postcss-custom-media/issues", 13 | "main": "index.cjs.js", 14 | "module": "index.es.mjs", 15 | "files": [ 16 | "index.cjs.js", 17 | "index.es.mjs" 18 | ], 19 | "scripts": { 20 | "prepublishOnly": "npm test", 21 | "pretest": "rollup -c .rollup.js --silent", 22 | "test": "echo 'Running tests...'; npm run test:js && npm run test:tape", 23 | "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet", 24 | "test:tape": "postcss-tape" 25 | }, 26 | "engines": { 27 | "node": ">=10.0.0" 28 | }, 29 | "peerDependencies": { 30 | "postcss": "^8.1.0" 31 | }, 32 | "devDependencies": { 33 | "@babel/core": "^7.11.6", 34 | "@babel/plugin-syntax-dynamic-import": "^7.8.3", 35 | "@babel/preset-env": "^7.11.5", 36 | "@rollup/plugin-babel": "^5.2.1", 37 | "babel-eslint": "^10.1.0", 38 | "eslint": "^7.10.0", 39 | "postcss": "^8.1.0", 40 | "postcss-tape": "^6.0.0", 41 | "pre-commit": "^1.2.2", 42 | "rollup": "^2.28.2" 43 | }, 44 | "eslintConfig": { 45 | "env": { 46 | "browser": true, 47 | "es6": true, 48 | "node": true 49 | }, 50 | "extends": "eslint:recommended", 51 | "parser": "babel-eslint", 52 | "parserOptions": { 53 | "ecmaVersion": 2018, 54 | "impliedStrict": true, 55 | "sourceType": "module" 56 | } 57 | }, 58 | "keywords": [ 59 | "postcss", 60 | "css", 61 | "postcss-plugin", 62 | "custom", 63 | "media", 64 | "query", 65 | "queries", 66 | "w3c", 67 | "csswg", 68 | "atrule", 69 | "at-rule", 70 | "specification" 71 | ] 72 | } 73 | -------------------------------------------------------------------------------- /test/basic.css: -------------------------------------------------------------------------------- 1 | @custom-media --mq-a (max-width: 30em), (max-height: 30em); 2 | @custom-media --mq-b screen and (max-width: 30em); 3 | @custom-media --not-mq-a not all and (--mq-a); 4 | 5 | @media (--mq-a) { 6 | body { 7 | order: 1; 8 | } 9 | } 10 | 11 | @media (--mq-b) { 12 | body { 13 | order: 1; 14 | } 15 | } 16 | 17 | @media (--mq-a), (--mq-a) { 18 | body { 19 | order: 1; 20 | } 21 | } 22 | 23 | @media not all and (--mq-a) { 24 | body { 25 | order: 2; 26 | } 27 | } 28 | 29 | @media (--not-mq-a) { 30 | body { 31 | order: 1; 32 | } 33 | } 34 | 35 | @media not all and (--not-mq-a) { 36 | body { 37 | order: 2; 38 | } 39 | } 40 | 41 | @custom-media --circular-mq-a (--circular-mq-b); 42 | @custom-media --circular-mq-b (--circular-mq-a); 43 | 44 | @media (--circular-mq-a) { 45 | body { 46 | order: 3; 47 | } 48 | } 49 | 50 | @media (--circular-mq-b) { 51 | body { 52 | order: 4; 53 | } 54 | } 55 | 56 | @media (--unresolved-mq) { 57 | body { 58 | order: 5; 59 | } 60 | } 61 | 62 | @custom-media --min (min-width: 320px); 63 | @custom-media --max (max-width: 640px); 64 | 65 | @media (--min) and (--max) { 66 | body { 67 | order: 6; 68 | } 69 | } 70 | 71 | @custom-media --concat (min-width: 320px) and (max-width: 640px); 72 | 73 | @media (--concat) { 74 | body { 75 | order: 7; 76 | } 77 | } 78 | 79 | @media (--concat) and (min-aspect-ratio: 16/9) { 80 | body { 81 | order: 8; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /test/basic.expect.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 30em),(max-height: 30em) { 2 | body { 3 | order: 1; 4 | } 5 | } 6 | 7 | @media screen and (max-width: 30em) { 8 | body { 9 | order: 1; 10 | } 11 | } 12 | 13 | @media (max-width: 30em),(max-height: 30em), (max-width: 30em), (max-height: 30em) { 14 | body { 15 | order: 1; 16 | } 17 | } 18 | 19 | @media not all and (max-width: 30em),not all and (max-height: 30em) { 20 | body { 21 | order: 2; 22 | } 23 | } 24 | 25 | @media not all and (max-width: 30em),not all and (max-height: 30em) { 26 | body { 27 | order: 1; 28 | } 29 | } 30 | 31 | @media all and (max-width: 30em),all and (max-height: 30em) { 32 | body { 33 | order: 2; 34 | } 35 | } 36 | 37 | @media (--circular-mq-a) { 38 | body { 39 | order: 3; 40 | } 41 | } 42 | 43 | @media (--circular-mq-b) { 44 | body { 45 | order: 4; 46 | } 47 | } 48 | 49 | @media (--unresolved-mq) { 50 | body { 51 | order: 5; 52 | } 53 | } 54 | 55 | @media (min-width: 320px) and (max-width: 640px) { 56 | body { 57 | order: 6; 58 | } 59 | } 60 | 61 | @media (min-width: 320px) and (max-width: 640px) { 62 | body { 63 | order: 7; 64 | } 65 | } 66 | 67 | @media (min-width: 320px) and (max-width: 640px) and (min-aspect-ratio: 16/9) { 68 | body { 69 | order: 8; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /test/basic.import.expect.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csstools/postcss-custom-media/a9a0ce03d75915c9dfff24becd698a9649a7bb93/test/basic.import.expect.css -------------------------------------------------------------------------------- /test/basic.preserve.expect.css: -------------------------------------------------------------------------------- 1 | @custom-media --mq-a (max-width: 30em), (max-height: 30em); 2 | @custom-media --mq-b screen and (max-width: 30em); 3 | @custom-media --not-mq-a not all and (--mq-a); 4 | 5 | @media (max-width: 30em),(max-height: 30em) { 6 | body { 7 | order: 1; 8 | } 9 | } 10 | 11 | @media (--mq-a) { 12 | body { 13 | order: 1; 14 | } 15 | } 16 | 17 | @media screen and (max-width: 30em) { 18 | body { 19 | order: 1; 20 | } 21 | } 22 | 23 | @media (--mq-b) { 24 | body { 25 | order: 1; 26 | } 27 | } 28 | 29 | @media (max-width: 30em),(max-height: 30em), (max-width: 30em), (max-height: 30em) { 30 | body { 31 | order: 1; 32 | } 33 | } 34 | 35 | @media (--mq-a), (--mq-a) { 36 | body { 37 | order: 1; 38 | } 39 | } 40 | 41 | @media not all and (max-width: 30em),not all and (max-height: 30em) { 42 | body { 43 | order: 2; 44 | } 45 | } 46 | 47 | @media not all and (--mq-a) { 48 | body { 49 | order: 2; 50 | } 51 | } 52 | 53 | @media not all and (max-width: 30em),not all and (max-height: 30em) { 54 | body { 55 | order: 1; 56 | } 57 | } 58 | 59 | @media (--not-mq-a) { 60 | body { 61 | order: 1; 62 | } 63 | } 64 | 65 | @media all and (max-width: 30em),all and (max-height: 30em) { 66 | body { 67 | order: 2; 68 | } 69 | } 70 | 71 | @media not all and (--not-mq-a) { 72 | body { 73 | order: 2; 74 | } 75 | } 76 | 77 | @custom-media --circular-mq-a (--circular-mq-b); 78 | @custom-media --circular-mq-b (--circular-mq-a); 79 | 80 | @media (--circular-mq-a) { 81 | body { 82 | order: 3; 83 | } 84 | } 85 | 86 | @media (--circular-mq-a) { 87 | body { 88 | order: 3; 89 | } 90 | } 91 | 92 | @media (--circular-mq-b) { 93 | body { 94 | order: 4; 95 | } 96 | } 97 | 98 | @media (--circular-mq-b) { 99 | body { 100 | order: 4; 101 | } 102 | } 103 | 104 | @media (--unresolved-mq) { 105 | body { 106 | order: 5; 107 | } 108 | } 109 | 110 | @media (--unresolved-mq) { 111 | body { 112 | order: 5; 113 | } 114 | } 115 | 116 | @custom-media --min (min-width: 320px); 117 | @custom-media --max (max-width: 640px); 118 | 119 | @media (min-width: 320px) and (max-width: 640px) { 120 | body { 121 | order: 6; 122 | } 123 | } 124 | 125 | @media (--min) and (--max) { 126 | body { 127 | order: 6; 128 | } 129 | } 130 | 131 | @custom-media --concat (min-width: 320px) and (max-width: 640px); 132 | 133 | @media (min-width: 320px) and (max-width: 640px) { 134 | body { 135 | order: 7; 136 | } 137 | } 138 | 139 | @media (--concat) { 140 | body { 141 | order: 7; 142 | } 143 | } 144 | 145 | @media (min-width: 320px) and (max-width: 640px) and (min-aspect-ratio: 16/9) { 146 | body { 147 | order: 8; 148 | } 149 | } 150 | 151 | @media (--concat) and (min-aspect-ratio: 16/9) { 152 | body { 153 | order: 8; 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /test/export-media.css: -------------------------------------------------------------------------------- 1 | @custom-media --mq-a (max-width: 30em), (max-height: 30em); 2 | @custom-media --mq-b screen and (max-width: 30em); 3 | @custom-media --not-mq-a not all and (--mq-a); 4 | @custom-media --circular-mq-a (--circular-mq-b); 5 | @custom-media --circular-mq-b (--circular-mq-a); 6 | @custom-media --min (min-width: 320px); 7 | @custom-media --max (max-width: 640px); 8 | @custom-media --concat (min-width: 320px) and (max-width: 640px); 9 | -------------------------------------------------------------------------------- /test/export-media.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | customMedia: { 3 | '--mq-a': '(max-width: 30em), (max-height: 30em)', 4 | '--mq-b': 'screen and (max-width: 30em)', 5 | '--not-mq-a': 'not all and (--mq-a)', 6 | '--circular-mq-a': '(--circular-mq-b)', 7 | '--circular-mq-b': '(--circular-mq-a)', 8 | '--min': '(min-width: 320px)', 9 | '--max': '(max-width: 640px)', 10 | '--concat': '(min-width: 320px) and (max-width: 640px)' 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /test/export-media.json: -------------------------------------------------------------------------------- 1 | { 2 | "custom-media": { 3 | "--mq-a": "(max-width: 30em), (max-height: 30em)", 4 | "--mq-b": "screen and (max-width: 30em)", 5 | "--not-mq-a": "not all and (--mq-a)", 6 | "--circular-mq-a": "(--circular-mq-b)", 7 | "--circular-mq-b": "(--circular-mq-a)", 8 | "--min": "(min-width: 320px)", 9 | "--max": "(max-width: 640px)", 10 | "--concat": "(min-width: 320px) and (max-width: 640px)" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/export-media.mjs: -------------------------------------------------------------------------------- 1 | export const customMedia = { 2 | '--mq-a': '(max-width: 30em), (max-height: 30em)', 3 | '--mq-b': 'screen and (max-width: 30em)', 4 | '--not-mq-a': 'not all and (--mq-a)', 5 | '--circular-mq-a': '(--circular-mq-b)', 6 | '--circular-mq-b': '(--circular-mq-a)', 7 | '--min': '(min-width: 320px)', 8 | '--max': '(max-width: 640px)', 9 | '--concat': '(min-width: 320px) and (max-width: 640px)' 10 | }; 11 | -------------------------------------------------------------------------------- /test/import-css.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csstools/postcss-custom-media/a9a0ce03d75915c9dfff24becd698a9649a7bb93/test/import-css.css -------------------------------------------------------------------------------- /test/import-media.css: -------------------------------------------------------------------------------- 1 | @custom-media --mq-a (max-width: 30em), (max-height: 30em); 2 | @custom-media --not-mq-a not all and (--mq-a); 3 | -------------------------------------------------------------------------------- /test/import-media.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | customMedia: { 3 | '--mq-a': '(max-width: 30em), (max-height: 30em)', 4 | '--not-mq-a': 'not all and (--mq-a)' 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/import-media.json: -------------------------------------------------------------------------------- 1 | { 2 | "customMedia": { 3 | "--mq-a": "(max-width: 30em), (max-height: 30em)", 4 | "--not-mq-a": "not all and (--mq-a)" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/import.css: -------------------------------------------------------------------------------- 1 | @media (--mq-a) { 2 | body { 3 | order: 1; 4 | } 5 | } 6 | 7 | @media (--mq-a), (--mq-a) { 8 | body { 9 | order: 1; 10 | } 11 | } 12 | 13 | @media not all and (--mq-a) { 14 | body { 15 | order: 2; 16 | } 17 | } 18 | 19 | @media (--not-mq-a) { 20 | body { 21 | order: 1; 22 | } 23 | } 24 | 25 | @media not all and (--not-mq-a) { 26 | body { 27 | order: 2; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /test/import.empty.expect.css: -------------------------------------------------------------------------------- 1 | @media (--mq-a) { 2 | body { 3 | order: 1; 4 | } 5 | } 6 | 7 | @media (--mq-a), (--mq-a) { 8 | body { 9 | order: 1; 10 | } 11 | } 12 | 13 | @media not all and (--mq-a) { 14 | body { 15 | order: 2; 16 | } 17 | } 18 | 19 | @media (--not-mq-a) { 20 | body { 21 | order: 1; 22 | } 23 | } 24 | 25 | @media not all and (--not-mq-a) { 26 | body { 27 | order: 2; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /test/import.expect.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 30em),(max-height: 30em) { 2 | body { 3 | order: 1; 4 | } 5 | } 6 | 7 | @media (max-width: 30em),(max-height: 30em), (max-width: 30em), (max-height: 30em) { 8 | body { 9 | order: 1; 10 | } 11 | } 12 | 13 | @media not all and (max-width: 30em),not all and (max-height: 30em) { 14 | body { 15 | order: 2; 16 | } 17 | } 18 | 19 | @media not all and (max-width: 30em),not all and (max-height: 30em) { 20 | body { 21 | order: 1; 22 | } 23 | } 24 | 25 | @media all and (max-width: 30em),all and (max-height: 30em) { 26 | body { 27 | order: 2; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /test/import.plugin.expect.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 30em),(max-height: 30em) { 2 | body { 3 | order: 1; 4 | } 5 | } 6 | 7 | @media (max-width: 30em),(max-height: 30em), (max-width: 30em), (max-height: 30em) { 8 | body { 9 | order: 1; 10 | } 11 | } 12 | 13 | @media not all and (max-width: 30em),not all and (max-height: 30em) { 14 | body { 15 | order: 2; 16 | } 17 | } 18 | 19 | @media not all and (max-width: 30em),not all and (max-height: 30em) { 20 | body { 21 | order: 1; 22 | } 23 | } 24 | 25 | @media all and (max-width: 30em),all and (max-height: 30em) { 26 | body { 27 | order: 2; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": 13 | version "7.12.7" 14 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" 15 | integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== 16 | 17 | "@babel/core@^7.11.6": 18 | version "7.12.10" 19 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" 20 | integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== 21 | dependencies: 22 | "@babel/code-frame" "^7.10.4" 23 | "@babel/generator" "^7.12.10" 24 | "@babel/helper-module-transforms" "^7.12.1" 25 | "@babel/helpers" "^7.12.5" 26 | "@babel/parser" "^7.12.10" 27 | "@babel/template" "^7.12.7" 28 | "@babel/traverse" "^7.12.10" 29 | "@babel/types" "^7.12.10" 30 | convert-source-map "^1.7.0" 31 | debug "^4.1.0" 32 | gensync "^1.0.0-beta.1" 33 | json5 "^2.1.2" 34 | lodash "^4.17.19" 35 | semver "^5.4.1" 36 | source-map "^0.5.0" 37 | 38 | "@babel/generator@^7.12.10", "@babel/generator@^7.12.11": 39 | version "7.12.11" 40 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" 41 | integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== 42 | dependencies: 43 | "@babel/types" "^7.12.11" 44 | jsesc "^2.5.1" 45 | source-map "^0.5.0" 46 | 47 | "@babel/helper-annotate-as-pure@^7.10.4": 48 | version "7.12.10" 49 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" 50 | integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== 51 | dependencies: 52 | "@babel/types" "^7.12.10" 53 | 54 | "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": 55 | version "7.10.4" 56 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" 57 | integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== 58 | dependencies: 59 | "@babel/helper-explode-assignable-expression" "^7.10.4" 60 | "@babel/types" "^7.10.4" 61 | 62 | "@babel/helper-compilation-targets@^7.12.5": 63 | version "7.12.5" 64 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" 65 | integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== 66 | dependencies: 67 | "@babel/compat-data" "^7.12.5" 68 | "@babel/helper-validator-option" "^7.12.1" 69 | browserslist "^4.14.5" 70 | semver "^5.5.0" 71 | 72 | "@babel/helper-create-class-features-plugin@^7.12.1": 73 | version "7.12.1" 74 | resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" 75 | integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== 76 | dependencies: 77 | "@babel/helper-function-name" "^7.10.4" 78 | "@babel/helper-member-expression-to-functions" "^7.12.1" 79 | "@babel/helper-optimise-call-expression" "^7.10.4" 80 | "@babel/helper-replace-supers" "^7.12.1" 81 | "@babel/helper-split-export-declaration" "^7.10.4" 82 | 83 | "@babel/helper-create-regexp-features-plugin@^7.12.1": 84 | version "7.12.7" 85 | resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" 86 | integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== 87 | dependencies: 88 | "@babel/helper-annotate-as-pure" "^7.10.4" 89 | regexpu-core "^4.7.1" 90 | 91 | "@babel/helper-define-map@^7.10.4": 92 | version "7.10.5" 93 | resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" 94 | integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== 95 | dependencies: 96 | "@babel/helper-function-name" "^7.10.4" 97 | "@babel/types" "^7.10.5" 98 | lodash "^4.17.19" 99 | 100 | "@babel/helper-explode-assignable-expression@^7.10.4": 101 | version "7.12.1" 102 | resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" 103 | integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== 104 | dependencies: 105 | "@babel/types" "^7.12.1" 106 | 107 | "@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11": 108 | version "7.12.11" 109 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" 110 | integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== 111 | dependencies: 112 | "@babel/helper-get-function-arity" "^7.12.10" 113 | "@babel/template" "^7.12.7" 114 | "@babel/types" "^7.12.11" 115 | 116 | "@babel/helper-get-function-arity@^7.12.10": 117 | version "7.12.10" 118 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" 119 | integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== 120 | dependencies: 121 | "@babel/types" "^7.12.10" 122 | 123 | "@babel/helper-hoist-variables@^7.10.4": 124 | version "7.10.4" 125 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" 126 | integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== 127 | dependencies: 128 | "@babel/types" "^7.10.4" 129 | 130 | "@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7": 131 | version "7.12.7" 132 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" 133 | integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== 134 | dependencies: 135 | "@babel/types" "^7.12.7" 136 | 137 | "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": 138 | version "7.12.5" 139 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" 140 | integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== 141 | dependencies: 142 | "@babel/types" "^7.12.5" 143 | 144 | "@babel/helper-module-transforms@^7.12.1": 145 | version "7.12.1" 146 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" 147 | integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== 148 | dependencies: 149 | "@babel/helper-module-imports" "^7.12.1" 150 | "@babel/helper-replace-supers" "^7.12.1" 151 | "@babel/helper-simple-access" "^7.12.1" 152 | "@babel/helper-split-export-declaration" "^7.11.0" 153 | "@babel/helper-validator-identifier" "^7.10.4" 154 | "@babel/template" "^7.10.4" 155 | "@babel/traverse" "^7.12.1" 156 | "@babel/types" "^7.12.1" 157 | lodash "^4.17.19" 158 | 159 | "@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10": 160 | version "7.12.10" 161 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" 162 | integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== 163 | dependencies: 164 | "@babel/types" "^7.12.10" 165 | 166 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": 167 | version "7.10.4" 168 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" 169 | integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== 170 | 171 | "@babel/helper-remap-async-to-generator@^7.12.1": 172 | version "7.12.1" 173 | resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" 174 | integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== 175 | dependencies: 176 | "@babel/helper-annotate-as-pure" "^7.10.4" 177 | "@babel/helper-wrap-function" "^7.10.4" 178 | "@babel/types" "^7.12.1" 179 | 180 | "@babel/helper-replace-supers@^7.12.1": 181 | version "7.12.11" 182 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" 183 | integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== 184 | dependencies: 185 | "@babel/helper-member-expression-to-functions" "^7.12.7" 186 | "@babel/helper-optimise-call-expression" "^7.12.10" 187 | "@babel/traverse" "^7.12.10" 188 | "@babel/types" "^7.12.11" 189 | 190 | "@babel/helper-simple-access@^7.12.1": 191 | version "7.12.1" 192 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" 193 | integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== 194 | dependencies: 195 | "@babel/types" "^7.12.1" 196 | 197 | "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": 198 | version "7.12.1" 199 | resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" 200 | integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== 201 | dependencies: 202 | "@babel/types" "^7.12.1" 203 | 204 | "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": 205 | version "7.12.11" 206 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" 207 | integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== 208 | dependencies: 209 | "@babel/types" "^7.12.11" 210 | 211 | "@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": 212 | version "7.12.11" 213 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 214 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 215 | 216 | "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11": 217 | version "7.12.11" 218 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" 219 | integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== 220 | 221 | "@babel/helper-wrap-function@^7.10.4": 222 | version "7.12.3" 223 | resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" 224 | integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== 225 | dependencies: 226 | "@babel/helper-function-name" "^7.10.4" 227 | "@babel/template" "^7.10.4" 228 | "@babel/traverse" "^7.10.4" 229 | "@babel/types" "^7.10.4" 230 | 231 | "@babel/helpers@^7.12.5": 232 | version "7.12.5" 233 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" 234 | integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== 235 | dependencies: 236 | "@babel/template" "^7.10.4" 237 | "@babel/traverse" "^7.12.5" 238 | "@babel/types" "^7.12.5" 239 | 240 | "@babel/highlight@^7.10.4": 241 | version "7.10.4" 242 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 243 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 244 | dependencies: 245 | "@babel/helper-validator-identifier" "^7.10.4" 246 | chalk "^2.0.0" 247 | js-tokens "^4.0.0" 248 | 249 | "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0": 250 | version "7.12.11" 251 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" 252 | integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== 253 | 254 | "@babel/plugin-proposal-async-generator-functions@^7.12.1": 255 | version "7.12.12" 256 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566" 257 | integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A== 258 | dependencies: 259 | "@babel/helper-plugin-utils" "^7.10.4" 260 | "@babel/helper-remap-async-to-generator" "^7.12.1" 261 | "@babel/plugin-syntax-async-generators" "^7.8.0" 262 | 263 | "@babel/plugin-proposal-class-properties@^7.12.1": 264 | version "7.12.1" 265 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" 266 | integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== 267 | dependencies: 268 | "@babel/helper-create-class-features-plugin" "^7.12.1" 269 | "@babel/helper-plugin-utils" "^7.10.4" 270 | 271 | "@babel/plugin-proposal-dynamic-import@^7.12.1": 272 | version "7.12.1" 273 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" 274 | integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== 275 | dependencies: 276 | "@babel/helper-plugin-utils" "^7.10.4" 277 | "@babel/plugin-syntax-dynamic-import" "^7.8.0" 278 | 279 | "@babel/plugin-proposal-export-namespace-from@^7.12.1": 280 | version "7.12.1" 281 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" 282 | integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== 283 | dependencies: 284 | "@babel/helper-plugin-utils" "^7.10.4" 285 | "@babel/plugin-syntax-export-namespace-from" "^7.8.3" 286 | 287 | "@babel/plugin-proposal-json-strings@^7.12.1": 288 | version "7.12.1" 289 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" 290 | integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== 291 | dependencies: 292 | "@babel/helper-plugin-utils" "^7.10.4" 293 | "@babel/plugin-syntax-json-strings" "^7.8.0" 294 | 295 | "@babel/plugin-proposal-logical-assignment-operators@^7.12.1": 296 | version "7.12.1" 297 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" 298 | integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== 299 | dependencies: 300 | "@babel/helper-plugin-utils" "^7.10.4" 301 | "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" 302 | 303 | "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": 304 | version "7.12.1" 305 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" 306 | integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== 307 | dependencies: 308 | "@babel/helper-plugin-utils" "^7.10.4" 309 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" 310 | 311 | "@babel/plugin-proposal-numeric-separator@^7.12.7": 312 | version "7.12.7" 313 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" 314 | integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== 315 | dependencies: 316 | "@babel/helper-plugin-utils" "^7.10.4" 317 | "@babel/plugin-syntax-numeric-separator" "^7.10.4" 318 | 319 | "@babel/plugin-proposal-object-rest-spread@^7.12.1": 320 | version "7.12.1" 321 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" 322 | integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== 323 | dependencies: 324 | "@babel/helper-plugin-utils" "^7.10.4" 325 | "@babel/plugin-syntax-object-rest-spread" "^7.8.0" 326 | "@babel/plugin-transform-parameters" "^7.12.1" 327 | 328 | "@babel/plugin-proposal-optional-catch-binding@^7.12.1": 329 | version "7.12.1" 330 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" 331 | integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== 332 | dependencies: 333 | "@babel/helper-plugin-utils" "^7.10.4" 334 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" 335 | 336 | "@babel/plugin-proposal-optional-chaining@^7.12.7": 337 | version "7.12.7" 338 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" 339 | integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== 340 | dependencies: 341 | "@babel/helper-plugin-utils" "^7.10.4" 342 | "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" 343 | "@babel/plugin-syntax-optional-chaining" "^7.8.0" 344 | 345 | "@babel/plugin-proposal-private-methods@^7.12.1": 346 | version "7.12.1" 347 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" 348 | integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== 349 | dependencies: 350 | "@babel/helper-create-class-features-plugin" "^7.12.1" 351 | "@babel/helper-plugin-utils" "^7.10.4" 352 | 353 | "@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": 354 | version "7.12.1" 355 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" 356 | integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== 357 | dependencies: 358 | "@babel/helper-create-regexp-features-plugin" "^7.12.1" 359 | "@babel/helper-plugin-utils" "^7.10.4" 360 | 361 | "@babel/plugin-syntax-async-generators@^7.8.0": 362 | version "7.8.4" 363 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 364 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 365 | dependencies: 366 | "@babel/helper-plugin-utils" "^7.8.0" 367 | 368 | "@babel/plugin-syntax-class-properties@^7.12.1": 369 | version "7.12.1" 370 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" 371 | integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== 372 | dependencies: 373 | "@babel/helper-plugin-utils" "^7.10.4" 374 | 375 | "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": 376 | version "7.8.3" 377 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" 378 | integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== 379 | dependencies: 380 | "@babel/helper-plugin-utils" "^7.8.0" 381 | 382 | "@babel/plugin-syntax-export-namespace-from@^7.8.3": 383 | version "7.8.3" 384 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" 385 | integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== 386 | dependencies: 387 | "@babel/helper-plugin-utils" "^7.8.3" 388 | 389 | "@babel/plugin-syntax-json-strings@^7.8.0": 390 | version "7.8.3" 391 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 392 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 393 | dependencies: 394 | "@babel/helper-plugin-utils" "^7.8.0" 395 | 396 | "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": 397 | version "7.10.4" 398 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" 399 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== 400 | dependencies: 401 | "@babel/helper-plugin-utils" "^7.10.4" 402 | 403 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": 404 | version "7.8.3" 405 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 406 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 407 | dependencies: 408 | "@babel/helper-plugin-utils" "^7.8.0" 409 | 410 | "@babel/plugin-syntax-numeric-separator@^7.10.4": 411 | version "7.10.4" 412 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" 413 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== 414 | dependencies: 415 | "@babel/helper-plugin-utils" "^7.10.4" 416 | 417 | "@babel/plugin-syntax-object-rest-spread@^7.8.0": 418 | version "7.8.3" 419 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 420 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 421 | dependencies: 422 | "@babel/helper-plugin-utils" "^7.8.0" 423 | 424 | "@babel/plugin-syntax-optional-catch-binding@^7.8.0": 425 | version "7.8.3" 426 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 427 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 428 | dependencies: 429 | "@babel/helper-plugin-utils" "^7.8.0" 430 | 431 | "@babel/plugin-syntax-optional-chaining@^7.8.0": 432 | version "7.8.3" 433 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 434 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 435 | dependencies: 436 | "@babel/helper-plugin-utils" "^7.8.0" 437 | 438 | "@babel/plugin-syntax-top-level-await@^7.12.1": 439 | version "7.12.1" 440 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" 441 | integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== 442 | dependencies: 443 | "@babel/helper-plugin-utils" "^7.10.4" 444 | 445 | "@babel/plugin-transform-arrow-functions@^7.12.1": 446 | version "7.12.1" 447 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" 448 | integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== 449 | dependencies: 450 | "@babel/helper-plugin-utils" "^7.10.4" 451 | 452 | "@babel/plugin-transform-async-to-generator@^7.12.1": 453 | version "7.12.1" 454 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" 455 | integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== 456 | dependencies: 457 | "@babel/helper-module-imports" "^7.12.1" 458 | "@babel/helper-plugin-utils" "^7.10.4" 459 | "@babel/helper-remap-async-to-generator" "^7.12.1" 460 | 461 | "@babel/plugin-transform-block-scoped-functions@^7.12.1": 462 | version "7.12.1" 463 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" 464 | integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== 465 | dependencies: 466 | "@babel/helper-plugin-utils" "^7.10.4" 467 | 468 | "@babel/plugin-transform-block-scoping@^7.12.11": 469 | version "7.12.12" 470 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" 471 | integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== 472 | dependencies: 473 | "@babel/helper-plugin-utils" "^7.10.4" 474 | 475 | "@babel/plugin-transform-classes@^7.12.1": 476 | version "7.12.1" 477 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" 478 | integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== 479 | dependencies: 480 | "@babel/helper-annotate-as-pure" "^7.10.4" 481 | "@babel/helper-define-map" "^7.10.4" 482 | "@babel/helper-function-name" "^7.10.4" 483 | "@babel/helper-optimise-call-expression" "^7.10.4" 484 | "@babel/helper-plugin-utils" "^7.10.4" 485 | "@babel/helper-replace-supers" "^7.12.1" 486 | "@babel/helper-split-export-declaration" "^7.10.4" 487 | globals "^11.1.0" 488 | 489 | "@babel/plugin-transform-computed-properties@^7.12.1": 490 | version "7.12.1" 491 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" 492 | integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== 493 | dependencies: 494 | "@babel/helper-plugin-utils" "^7.10.4" 495 | 496 | "@babel/plugin-transform-destructuring@^7.12.1": 497 | version "7.12.1" 498 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" 499 | integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== 500 | dependencies: 501 | "@babel/helper-plugin-utils" "^7.10.4" 502 | 503 | "@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": 504 | version "7.12.1" 505 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" 506 | integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== 507 | dependencies: 508 | "@babel/helper-create-regexp-features-plugin" "^7.12.1" 509 | "@babel/helper-plugin-utils" "^7.10.4" 510 | 511 | "@babel/plugin-transform-duplicate-keys@^7.12.1": 512 | version "7.12.1" 513 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" 514 | integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== 515 | dependencies: 516 | "@babel/helper-plugin-utils" "^7.10.4" 517 | 518 | "@babel/plugin-transform-exponentiation-operator@^7.12.1": 519 | version "7.12.1" 520 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" 521 | integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== 522 | dependencies: 523 | "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" 524 | "@babel/helper-plugin-utils" "^7.10.4" 525 | 526 | "@babel/plugin-transform-for-of@^7.12.1": 527 | version "7.12.1" 528 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" 529 | integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== 530 | dependencies: 531 | "@babel/helper-plugin-utils" "^7.10.4" 532 | 533 | "@babel/plugin-transform-function-name@^7.12.1": 534 | version "7.12.1" 535 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" 536 | integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== 537 | dependencies: 538 | "@babel/helper-function-name" "^7.10.4" 539 | "@babel/helper-plugin-utils" "^7.10.4" 540 | 541 | "@babel/plugin-transform-literals@^7.12.1": 542 | version "7.12.1" 543 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" 544 | integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== 545 | dependencies: 546 | "@babel/helper-plugin-utils" "^7.10.4" 547 | 548 | "@babel/plugin-transform-member-expression-literals@^7.12.1": 549 | version "7.12.1" 550 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" 551 | integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== 552 | dependencies: 553 | "@babel/helper-plugin-utils" "^7.10.4" 554 | 555 | "@babel/plugin-transform-modules-amd@^7.12.1": 556 | version "7.12.1" 557 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" 558 | integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== 559 | dependencies: 560 | "@babel/helper-module-transforms" "^7.12.1" 561 | "@babel/helper-plugin-utils" "^7.10.4" 562 | babel-plugin-dynamic-import-node "^2.3.3" 563 | 564 | "@babel/plugin-transform-modules-commonjs@^7.12.1": 565 | version "7.12.1" 566 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" 567 | integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== 568 | dependencies: 569 | "@babel/helper-module-transforms" "^7.12.1" 570 | "@babel/helper-plugin-utils" "^7.10.4" 571 | "@babel/helper-simple-access" "^7.12.1" 572 | babel-plugin-dynamic-import-node "^2.3.3" 573 | 574 | "@babel/plugin-transform-modules-systemjs@^7.12.1": 575 | version "7.12.1" 576 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" 577 | integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== 578 | dependencies: 579 | "@babel/helper-hoist-variables" "^7.10.4" 580 | "@babel/helper-module-transforms" "^7.12.1" 581 | "@babel/helper-plugin-utils" "^7.10.4" 582 | "@babel/helper-validator-identifier" "^7.10.4" 583 | babel-plugin-dynamic-import-node "^2.3.3" 584 | 585 | "@babel/plugin-transform-modules-umd@^7.12.1": 586 | version "7.12.1" 587 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" 588 | integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== 589 | dependencies: 590 | "@babel/helper-module-transforms" "^7.12.1" 591 | "@babel/helper-plugin-utils" "^7.10.4" 592 | 593 | "@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": 594 | version "7.12.1" 595 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" 596 | integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== 597 | dependencies: 598 | "@babel/helper-create-regexp-features-plugin" "^7.12.1" 599 | 600 | "@babel/plugin-transform-new-target@^7.12.1": 601 | version "7.12.1" 602 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" 603 | integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== 604 | dependencies: 605 | "@babel/helper-plugin-utils" "^7.10.4" 606 | 607 | "@babel/plugin-transform-object-super@^7.12.1": 608 | version "7.12.1" 609 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" 610 | integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== 611 | dependencies: 612 | "@babel/helper-plugin-utils" "^7.10.4" 613 | "@babel/helper-replace-supers" "^7.12.1" 614 | 615 | "@babel/plugin-transform-parameters@^7.12.1": 616 | version "7.12.1" 617 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" 618 | integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== 619 | dependencies: 620 | "@babel/helper-plugin-utils" "^7.10.4" 621 | 622 | "@babel/plugin-transform-property-literals@^7.12.1": 623 | version "7.12.1" 624 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" 625 | integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== 626 | dependencies: 627 | "@babel/helper-plugin-utils" "^7.10.4" 628 | 629 | "@babel/plugin-transform-regenerator@^7.12.1": 630 | version "7.12.1" 631 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" 632 | integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== 633 | dependencies: 634 | regenerator-transform "^0.14.2" 635 | 636 | "@babel/plugin-transform-reserved-words@^7.12.1": 637 | version "7.12.1" 638 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" 639 | integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== 640 | dependencies: 641 | "@babel/helper-plugin-utils" "^7.10.4" 642 | 643 | "@babel/plugin-transform-shorthand-properties@^7.12.1": 644 | version "7.12.1" 645 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" 646 | integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== 647 | dependencies: 648 | "@babel/helper-plugin-utils" "^7.10.4" 649 | 650 | "@babel/plugin-transform-spread@^7.12.1": 651 | version "7.12.1" 652 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" 653 | integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== 654 | dependencies: 655 | "@babel/helper-plugin-utils" "^7.10.4" 656 | "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" 657 | 658 | "@babel/plugin-transform-sticky-regex@^7.12.7": 659 | version "7.12.7" 660 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" 661 | integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== 662 | dependencies: 663 | "@babel/helper-plugin-utils" "^7.10.4" 664 | 665 | "@babel/plugin-transform-template-literals@^7.12.1": 666 | version "7.12.1" 667 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" 668 | integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== 669 | dependencies: 670 | "@babel/helper-plugin-utils" "^7.10.4" 671 | 672 | "@babel/plugin-transform-typeof-symbol@^7.12.10": 673 | version "7.12.10" 674 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b" 675 | integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA== 676 | dependencies: 677 | "@babel/helper-plugin-utils" "^7.10.4" 678 | 679 | "@babel/plugin-transform-unicode-escapes@^7.12.1": 680 | version "7.12.1" 681 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" 682 | integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== 683 | dependencies: 684 | "@babel/helper-plugin-utils" "^7.10.4" 685 | 686 | "@babel/plugin-transform-unicode-regex@^7.12.1": 687 | version "7.12.1" 688 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" 689 | integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== 690 | dependencies: 691 | "@babel/helper-create-regexp-features-plugin" "^7.12.1" 692 | "@babel/helper-plugin-utils" "^7.10.4" 693 | 694 | "@babel/preset-env@^7.11.5": 695 | version "7.12.11" 696 | resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" 697 | integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== 698 | dependencies: 699 | "@babel/compat-data" "^7.12.7" 700 | "@babel/helper-compilation-targets" "^7.12.5" 701 | "@babel/helper-module-imports" "^7.12.5" 702 | "@babel/helper-plugin-utils" "^7.10.4" 703 | "@babel/helper-validator-option" "^7.12.11" 704 | "@babel/plugin-proposal-async-generator-functions" "^7.12.1" 705 | "@babel/plugin-proposal-class-properties" "^7.12.1" 706 | "@babel/plugin-proposal-dynamic-import" "^7.12.1" 707 | "@babel/plugin-proposal-export-namespace-from" "^7.12.1" 708 | "@babel/plugin-proposal-json-strings" "^7.12.1" 709 | "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" 710 | "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" 711 | "@babel/plugin-proposal-numeric-separator" "^7.12.7" 712 | "@babel/plugin-proposal-object-rest-spread" "^7.12.1" 713 | "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" 714 | "@babel/plugin-proposal-optional-chaining" "^7.12.7" 715 | "@babel/plugin-proposal-private-methods" "^7.12.1" 716 | "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" 717 | "@babel/plugin-syntax-async-generators" "^7.8.0" 718 | "@babel/plugin-syntax-class-properties" "^7.12.1" 719 | "@babel/plugin-syntax-dynamic-import" "^7.8.0" 720 | "@babel/plugin-syntax-export-namespace-from" "^7.8.3" 721 | "@babel/plugin-syntax-json-strings" "^7.8.0" 722 | "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" 723 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" 724 | "@babel/plugin-syntax-numeric-separator" "^7.10.4" 725 | "@babel/plugin-syntax-object-rest-spread" "^7.8.0" 726 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" 727 | "@babel/plugin-syntax-optional-chaining" "^7.8.0" 728 | "@babel/plugin-syntax-top-level-await" "^7.12.1" 729 | "@babel/plugin-transform-arrow-functions" "^7.12.1" 730 | "@babel/plugin-transform-async-to-generator" "^7.12.1" 731 | "@babel/plugin-transform-block-scoped-functions" "^7.12.1" 732 | "@babel/plugin-transform-block-scoping" "^7.12.11" 733 | "@babel/plugin-transform-classes" "^7.12.1" 734 | "@babel/plugin-transform-computed-properties" "^7.12.1" 735 | "@babel/plugin-transform-destructuring" "^7.12.1" 736 | "@babel/plugin-transform-dotall-regex" "^7.12.1" 737 | "@babel/plugin-transform-duplicate-keys" "^7.12.1" 738 | "@babel/plugin-transform-exponentiation-operator" "^7.12.1" 739 | "@babel/plugin-transform-for-of" "^7.12.1" 740 | "@babel/plugin-transform-function-name" "^7.12.1" 741 | "@babel/plugin-transform-literals" "^7.12.1" 742 | "@babel/plugin-transform-member-expression-literals" "^7.12.1" 743 | "@babel/plugin-transform-modules-amd" "^7.12.1" 744 | "@babel/plugin-transform-modules-commonjs" "^7.12.1" 745 | "@babel/plugin-transform-modules-systemjs" "^7.12.1" 746 | "@babel/plugin-transform-modules-umd" "^7.12.1" 747 | "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" 748 | "@babel/plugin-transform-new-target" "^7.12.1" 749 | "@babel/plugin-transform-object-super" "^7.12.1" 750 | "@babel/plugin-transform-parameters" "^7.12.1" 751 | "@babel/plugin-transform-property-literals" "^7.12.1" 752 | "@babel/plugin-transform-regenerator" "^7.12.1" 753 | "@babel/plugin-transform-reserved-words" "^7.12.1" 754 | "@babel/plugin-transform-shorthand-properties" "^7.12.1" 755 | "@babel/plugin-transform-spread" "^7.12.1" 756 | "@babel/plugin-transform-sticky-regex" "^7.12.7" 757 | "@babel/plugin-transform-template-literals" "^7.12.1" 758 | "@babel/plugin-transform-typeof-symbol" "^7.12.10" 759 | "@babel/plugin-transform-unicode-escapes" "^7.12.1" 760 | "@babel/plugin-transform-unicode-regex" "^7.12.1" 761 | "@babel/preset-modules" "^0.1.3" 762 | "@babel/types" "^7.12.11" 763 | core-js-compat "^3.8.0" 764 | semver "^5.5.0" 765 | 766 | "@babel/preset-modules@^0.1.3": 767 | version "0.1.4" 768 | resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" 769 | integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== 770 | dependencies: 771 | "@babel/helper-plugin-utils" "^7.0.0" 772 | "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" 773 | "@babel/plugin-transform-dotall-regex" "^7.4.4" 774 | "@babel/types" "^7.4.4" 775 | esutils "^2.0.2" 776 | 777 | "@babel/runtime@^7.8.4": 778 | version "7.12.5" 779 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" 780 | integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== 781 | dependencies: 782 | regenerator-runtime "^0.13.4" 783 | 784 | "@babel/template@^7.10.4", "@babel/template@^7.12.7": 785 | version "7.12.7" 786 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" 787 | integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== 788 | dependencies: 789 | "@babel/code-frame" "^7.10.4" 790 | "@babel/parser" "^7.12.7" 791 | "@babel/types" "^7.12.7" 792 | 793 | "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0": 794 | version "7.12.12" 795 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" 796 | integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== 797 | dependencies: 798 | "@babel/code-frame" "^7.12.11" 799 | "@babel/generator" "^7.12.11" 800 | "@babel/helper-function-name" "^7.12.11" 801 | "@babel/helper-split-export-declaration" "^7.12.11" 802 | "@babel/parser" "^7.12.11" 803 | "@babel/types" "^7.12.12" 804 | debug "^4.1.0" 805 | globals "^11.1.0" 806 | lodash "^4.17.19" 807 | 808 | "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4", "@babel/types@^7.7.0": 809 | version "7.12.12" 810 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" 811 | integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== 812 | dependencies: 813 | "@babel/helper-validator-identifier" "^7.12.11" 814 | lodash "^4.17.19" 815 | to-fast-properties "^2.0.0" 816 | 817 | "@eslint/eslintrc@^0.2.2": 818 | version "0.2.2" 819 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" 820 | integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== 821 | dependencies: 822 | ajv "^6.12.4" 823 | debug "^4.1.1" 824 | espree "^7.3.0" 825 | globals "^12.1.0" 826 | ignore "^4.0.6" 827 | import-fresh "^3.2.1" 828 | js-yaml "^3.13.1" 829 | lodash "^4.17.19" 830 | minimatch "^3.0.4" 831 | strip-json-comments "^3.1.1" 832 | 833 | "@rollup/plugin-babel@^5.2.1": 834 | version "5.2.2" 835 | resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.2.2.tgz#e5623a01dd8e37e004ba87f2de218c611727d9b2" 836 | integrity sha512-MjmH7GvFT4TW8xFdIeFS3wqIX646y5tACdxkTO+khbHvS3ZcVJL6vkAHLw2wqPmkhwCfWHoNsp15VYNwW6JEJA== 837 | dependencies: 838 | "@babel/helper-module-imports" "^7.10.4" 839 | "@rollup/pluginutils" "^3.1.0" 840 | 841 | "@rollup/pluginutils@^3.1.0": 842 | version "3.1.0" 843 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" 844 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== 845 | dependencies: 846 | "@types/estree" "0.0.39" 847 | estree-walker "^1.0.1" 848 | picomatch "^2.2.2" 849 | 850 | "@types/estree@0.0.39": 851 | version "0.0.39" 852 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 853 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 854 | 855 | acorn-jsx@^5.3.1: 856 | version "5.3.1" 857 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 858 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 859 | 860 | acorn@^7.4.0: 861 | version "7.4.1" 862 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 863 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 864 | 865 | ajv@^6.10.0, ajv@^6.12.4: 866 | version "6.12.6" 867 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 868 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 869 | dependencies: 870 | fast-deep-equal "^3.1.1" 871 | fast-json-stable-stringify "^2.0.0" 872 | json-schema-traverse "^0.4.1" 873 | uri-js "^4.2.2" 874 | 875 | ajv@^7.0.2: 876 | version "7.0.3" 877 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" 878 | integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== 879 | dependencies: 880 | fast-deep-equal "^3.1.1" 881 | json-schema-traverse "^1.0.0" 882 | require-from-string "^2.0.2" 883 | uri-js "^4.2.2" 884 | 885 | ansi-colors@^4.1.1: 886 | version "4.1.1" 887 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 888 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 889 | 890 | ansi-regex@^5.0.0: 891 | version "5.0.0" 892 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 893 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 894 | 895 | ansi-styles@^3.2.1: 896 | version "3.2.1" 897 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 898 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 899 | dependencies: 900 | color-convert "^1.9.0" 901 | 902 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 903 | version "4.3.0" 904 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 905 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 906 | dependencies: 907 | color-convert "^2.0.1" 908 | 909 | argparse@^1.0.7: 910 | version "1.0.10" 911 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 912 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 913 | dependencies: 914 | sprintf-js "~1.0.2" 915 | 916 | astral-regex@^2.0.0: 917 | version "2.0.0" 918 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 919 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 920 | 921 | babel-eslint@^10.1.0: 922 | version "10.1.0" 923 | resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" 924 | integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== 925 | dependencies: 926 | "@babel/code-frame" "^7.0.0" 927 | "@babel/parser" "^7.7.0" 928 | "@babel/traverse" "^7.7.0" 929 | "@babel/types" "^7.7.0" 930 | eslint-visitor-keys "^1.0.0" 931 | resolve "^1.12.0" 932 | 933 | babel-plugin-dynamic-import-node@^2.3.3: 934 | version "2.3.3" 935 | resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" 936 | integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== 937 | dependencies: 938 | object.assign "^4.1.0" 939 | 940 | balanced-match@^1.0.0: 941 | version "1.0.0" 942 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 943 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 944 | 945 | brace-expansion@^1.1.7: 946 | version "1.1.11" 947 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 948 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 949 | dependencies: 950 | balanced-match "^1.0.0" 951 | concat-map "0.0.1" 952 | 953 | browserslist@^4.14.5, browserslist@^4.16.0: 954 | version "4.16.1" 955 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" 956 | integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== 957 | dependencies: 958 | caniuse-lite "^1.0.30001173" 959 | colorette "^1.2.1" 960 | electron-to-chromium "^1.3.634" 961 | escalade "^3.1.1" 962 | node-releases "^1.1.69" 963 | 964 | buffer-from@^1.0.0: 965 | version "1.1.1" 966 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 967 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 968 | 969 | call-bind@^1.0.0: 970 | version "1.0.2" 971 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 972 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 973 | dependencies: 974 | function-bind "^1.1.1" 975 | get-intrinsic "^1.0.2" 976 | 977 | callsites@^3.0.0: 978 | version "3.1.0" 979 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 980 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 981 | 982 | caniuse-lite@^1.0.30001173: 983 | version "1.0.30001174" 984 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001174.tgz#0f2aca2153fd88ceb07a2bb982fc2acb787623c4" 985 | integrity sha512-tqClL/4ThQq6cfFXH3oJL4rifFBeM6gTkphjao5kgwMaW9yn0tKgQLAEfKzDwj6HQWCB/aWo8kTFlSvIN8geEA== 986 | 987 | chalk@^2.0.0: 988 | version "2.4.2" 989 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 990 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 991 | dependencies: 992 | ansi-styles "^3.2.1" 993 | escape-string-regexp "^1.0.5" 994 | supports-color "^5.3.0" 995 | 996 | chalk@^4.0.0: 997 | version "4.1.0" 998 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 999 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 1000 | dependencies: 1001 | ansi-styles "^4.1.0" 1002 | supports-color "^7.1.0" 1003 | 1004 | color-convert@^1.9.0: 1005 | version "1.9.3" 1006 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 1007 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1008 | dependencies: 1009 | color-name "1.1.3" 1010 | 1011 | color-convert@^2.0.1: 1012 | version "2.0.1" 1013 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1014 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1015 | dependencies: 1016 | color-name "~1.1.4" 1017 | 1018 | color-name@1.1.3: 1019 | version "1.1.3" 1020 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1021 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 1022 | 1023 | color-name@~1.1.4: 1024 | version "1.1.4" 1025 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1026 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1027 | 1028 | colorette@^1.2.1: 1029 | version "1.2.1" 1030 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" 1031 | integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== 1032 | 1033 | concat-map@0.0.1: 1034 | version "0.0.1" 1035 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1036 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 1037 | 1038 | concat-stream@^1.4.7: 1039 | version "1.6.2" 1040 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 1041 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 1042 | dependencies: 1043 | buffer-from "^1.0.0" 1044 | inherits "^2.0.3" 1045 | readable-stream "^2.2.2" 1046 | typedarray "^0.0.6" 1047 | 1048 | convert-source-map@^1.7.0: 1049 | version "1.7.0" 1050 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 1051 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 1052 | dependencies: 1053 | safe-buffer "~5.1.1" 1054 | 1055 | core-js-compat@^3.8.0: 1056 | version "3.8.2" 1057 | resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.2.tgz#3717f51f6c3d2ebba8cbf27619b57160029d1d4c" 1058 | integrity sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ== 1059 | dependencies: 1060 | browserslist "^4.16.0" 1061 | semver "7.0.0" 1062 | 1063 | core-util-is@~1.0.0: 1064 | version "1.0.2" 1065 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1066 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 1067 | 1068 | cross-spawn@^5.0.1: 1069 | version "5.1.0" 1070 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 1071 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 1072 | dependencies: 1073 | lru-cache "^4.0.1" 1074 | shebang-command "^1.2.0" 1075 | which "^1.2.9" 1076 | 1077 | cross-spawn@^7.0.2: 1078 | version "7.0.3" 1079 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1080 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 1081 | dependencies: 1082 | path-key "^3.1.0" 1083 | shebang-command "^2.0.0" 1084 | which "^2.0.1" 1085 | 1086 | debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: 1087 | version "4.3.1" 1088 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 1089 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 1090 | dependencies: 1091 | ms "2.1.2" 1092 | 1093 | deep-is@^0.1.3: 1094 | version "0.1.3" 1095 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 1096 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 1097 | 1098 | define-properties@^1.1.3: 1099 | version "1.1.3" 1100 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 1101 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 1102 | dependencies: 1103 | object-keys "^1.0.12" 1104 | 1105 | doctrine@^3.0.0: 1106 | version "3.0.0" 1107 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 1108 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 1109 | dependencies: 1110 | esutils "^2.0.2" 1111 | 1112 | electron-to-chromium@^1.3.634: 1113 | version "1.3.636" 1114 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.636.tgz#6980bd90813a9fb744e43f5e848f16cea4930058" 1115 | integrity sha512-Adcvng33sd3gTjNIDNXGD1G4H6qCImIy2euUJAQHtLNplEKU5WEz5KRJxupRNIIT8sD5oFZLTKBWAf12Bsz24A== 1116 | 1117 | emoji-regex@^8.0.0: 1118 | version "8.0.0" 1119 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1120 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1121 | 1122 | enquirer@^2.3.5: 1123 | version "2.3.6" 1124 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 1125 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 1126 | dependencies: 1127 | ansi-colors "^4.1.1" 1128 | 1129 | escalade@^3.1.1: 1130 | version "3.1.1" 1131 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1132 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1133 | 1134 | escape-string-regexp@^1.0.5: 1135 | version "1.0.5" 1136 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1137 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1138 | 1139 | eslint-scope@^5.1.1: 1140 | version "5.1.1" 1141 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 1142 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 1143 | dependencies: 1144 | esrecurse "^4.3.0" 1145 | estraverse "^4.1.1" 1146 | 1147 | eslint-utils@^2.1.0: 1148 | version "2.1.0" 1149 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 1150 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 1151 | dependencies: 1152 | eslint-visitor-keys "^1.1.0" 1153 | 1154 | eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 1155 | version "1.3.0" 1156 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 1157 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 1158 | 1159 | eslint-visitor-keys@^2.0.0: 1160 | version "2.0.0" 1161 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 1162 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 1163 | 1164 | eslint@^7.10.0: 1165 | version "7.17.0" 1166 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" 1167 | integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ== 1168 | dependencies: 1169 | "@babel/code-frame" "^7.0.0" 1170 | "@eslint/eslintrc" "^0.2.2" 1171 | ajv "^6.10.0" 1172 | chalk "^4.0.0" 1173 | cross-spawn "^7.0.2" 1174 | debug "^4.0.1" 1175 | doctrine "^3.0.0" 1176 | enquirer "^2.3.5" 1177 | eslint-scope "^5.1.1" 1178 | eslint-utils "^2.1.0" 1179 | eslint-visitor-keys "^2.0.0" 1180 | espree "^7.3.1" 1181 | esquery "^1.2.0" 1182 | esutils "^2.0.2" 1183 | file-entry-cache "^6.0.0" 1184 | functional-red-black-tree "^1.0.1" 1185 | glob-parent "^5.0.0" 1186 | globals "^12.1.0" 1187 | ignore "^4.0.6" 1188 | import-fresh "^3.0.0" 1189 | imurmurhash "^0.1.4" 1190 | is-glob "^4.0.0" 1191 | js-yaml "^3.13.1" 1192 | json-stable-stringify-without-jsonify "^1.0.1" 1193 | levn "^0.4.1" 1194 | lodash "^4.17.19" 1195 | minimatch "^3.0.4" 1196 | natural-compare "^1.4.0" 1197 | optionator "^0.9.1" 1198 | progress "^2.0.0" 1199 | regexpp "^3.1.0" 1200 | semver "^7.2.1" 1201 | strip-ansi "^6.0.0" 1202 | strip-json-comments "^3.1.0" 1203 | table "^6.0.4" 1204 | text-table "^0.2.0" 1205 | v8-compile-cache "^2.0.3" 1206 | 1207 | espree@^7.3.0, espree@^7.3.1: 1208 | version "7.3.1" 1209 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 1210 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 1211 | dependencies: 1212 | acorn "^7.4.0" 1213 | acorn-jsx "^5.3.1" 1214 | eslint-visitor-keys "^1.3.0" 1215 | 1216 | esprima@^4.0.0: 1217 | version "4.0.1" 1218 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1219 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1220 | 1221 | esquery@^1.2.0: 1222 | version "1.3.1" 1223 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 1224 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 1225 | dependencies: 1226 | estraverse "^5.1.0" 1227 | 1228 | esrecurse@^4.3.0: 1229 | version "4.3.0" 1230 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1231 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1232 | dependencies: 1233 | estraverse "^5.2.0" 1234 | 1235 | estraverse@^4.1.1: 1236 | version "4.3.0" 1237 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1238 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1239 | 1240 | estraverse@^5.1.0, estraverse@^5.2.0: 1241 | version "5.2.0" 1242 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 1243 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 1244 | 1245 | estree-walker@^1.0.1: 1246 | version "1.0.1" 1247 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" 1248 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== 1249 | 1250 | esutils@^2.0.2: 1251 | version "2.0.3" 1252 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1253 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1254 | 1255 | fast-deep-equal@^3.1.1: 1256 | version "3.1.3" 1257 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1258 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1259 | 1260 | fast-json-stable-stringify@^2.0.0: 1261 | version "2.1.0" 1262 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1263 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1264 | 1265 | fast-levenshtein@^2.0.6: 1266 | version "2.0.6" 1267 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1268 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1269 | 1270 | file-entry-cache@^6.0.0: 1271 | version "6.0.0" 1272 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" 1273 | integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== 1274 | dependencies: 1275 | flat-cache "^3.0.4" 1276 | 1277 | flat-cache@^3.0.4: 1278 | version "3.0.4" 1279 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 1280 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 1281 | dependencies: 1282 | flatted "^3.1.0" 1283 | rimraf "^3.0.2" 1284 | 1285 | flatted@^3.1.0: 1286 | version "3.1.0" 1287 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" 1288 | integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== 1289 | 1290 | fs.realpath@^1.0.0: 1291 | version "1.0.0" 1292 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1293 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1294 | 1295 | fsevents@~2.1.2: 1296 | version "2.1.3" 1297 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 1298 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 1299 | 1300 | function-bind@^1.1.1: 1301 | version "1.1.1" 1302 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1303 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1304 | 1305 | functional-red-black-tree@^1.0.1: 1306 | version "1.0.1" 1307 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1308 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 1309 | 1310 | gensync@^1.0.0-beta.1: 1311 | version "1.0.0-beta.2" 1312 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1313 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1314 | 1315 | get-intrinsic@^1.0.2: 1316 | version "1.0.2" 1317 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" 1318 | integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== 1319 | dependencies: 1320 | function-bind "^1.1.1" 1321 | has "^1.0.3" 1322 | has-symbols "^1.0.1" 1323 | 1324 | glob-parent@^5.0.0: 1325 | version "5.1.1" 1326 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 1327 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 1328 | dependencies: 1329 | is-glob "^4.0.1" 1330 | 1331 | glob@^7.1.3: 1332 | version "7.1.6" 1333 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1334 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 1335 | dependencies: 1336 | fs.realpath "^1.0.0" 1337 | inflight "^1.0.4" 1338 | inherits "2" 1339 | minimatch "^3.0.4" 1340 | once "^1.3.0" 1341 | path-is-absolute "^1.0.0" 1342 | 1343 | globals@^11.1.0: 1344 | version "11.12.0" 1345 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1346 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1347 | 1348 | globals@^12.1.0: 1349 | version "12.4.0" 1350 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 1351 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 1352 | dependencies: 1353 | type-fest "^0.8.1" 1354 | 1355 | has-flag@^3.0.0: 1356 | version "3.0.0" 1357 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1358 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1359 | 1360 | has-flag@^4.0.0: 1361 | version "4.0.0" 1362 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1363 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1364 | 1365 | has-symbols@^1.0.1: 1366 | version "1.0.1" 1367 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1368 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1369 | 1370 | has@^1.0.3: 1371 | version "1.0.3" 1372 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1373 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1374 | dependencies: 1375 | function-bind "^1.1.1" 1376 | 1377 | ignore@^4.0.6: 1378 | version "4.0.6" 1379 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1380 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1381 | 1382 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1383 | version "3.3.0" 1384 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1385 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1386 | dependencies: 1387 | parent-module "^1.0.0" 1388 | resolve-from "^4.0.0" 1389 | 1390 | imurmurhash@^0.1.4: 1391 | version "0.1.4" 1392 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1393 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1394 | 1395 | inflight@^1.0.4: 1396 | version "1.0.6" 1397 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1398 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1399 | dependencies: 1400 | once "^1.3.0" 1401 | wrappy "1" 1402 | 1403 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 1404 | version "2.0.4" 1405 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1406 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1407 | 1408 | is-core-module@^2.1.0: 1409 | version "2.2.0" 1410 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" 1411 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== 1412 | dependencies: 1413 | has "^1.0.3" 1414 | 1415 | is-extglob@^2.1.1: 1416 | version "2.1.1" 1417 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1418 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1419 | 1420 | is-fullwidth-code-point@^3.0.0: 1421 | version "3.0.0" 1422 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1423 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1424 | 1425 | is-glob@^4.0.0, is-glob@^4.0.1: 1426 | version "4.0.1" 1427 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1428 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1429 | dependencies: 1430 | is-extglob "^2.1.1" 1431 | 1432 | isarray@~1.0.0: 1433 | version "1.0.0" 1434 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1435 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1436 | 1437 | isexe@^2.0.0: 1438 | version "2.0.0" 1439 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1440 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1441 | 1442 | js-tokens@^4.0.0: 1443 | version "4.0.0" 1444 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1445 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1446 | 1447 | js-yaml@^3.13.1: 1448 | version "3.14.1" 1449 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 1450 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1451 | dependencies: 1452 | argparse "^1.0.7" 1453 | esprima "^4.0.0" 1454 | 1455 | jsesc@^2.5.1: 1456 | version "2.5.2" 1457 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1458 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1459 | 1460 | jsesc@~0.5.0: 1461 | version "0.5.0" 1462 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1463 | integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 1464 | 1465 | json-schema-traverse@^0.4.1: 1466 | version "0.4.1" 1467 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1468 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1469 | 1470 | json-schema-traverse@^1.0.0: 1471 | version "1.0.0" 1472 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 1473 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 1474 | 1475 | json-stable-stringify-without-jsonify@^1.0.1: 1476 | version "1.0.1" 1477 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1478 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1479 | 1480 | json5@^2.1.2: 1481 | version "2.1.3" 1482 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" 1483 | integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== 1484 | dependencies: 1485 | minimist "^1.2.5" 1486 | 1487 | levn@^0.4.1: 1488 | version "0.4.1" 1489 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1490 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1491 | dependencies: 1492 | prelude-ls "^1.2.1" 1493 | type-check "~0.4.0" 1494 | 1495 | lodash@^4.17.19, lodash@^4.17.20: 1496 | version "4.17.20" 1497 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 1498 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 1499 | 1500 | lru-cache@^4.0.1: 1501 | version "4.1.5" 1502 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1503 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1504 | dependencies: 1505 | pseudomap "^1.0.2" 1506 | yallist "^2.1.2" 1507 | 1508 | lru-cache@^6.0.0: 1509 | version "6.0.0" 1510 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1511 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1512 | dependencies: 1513 | yallist "^4.0.0" 1514 | 1515 | minimatch@^3.0.4: 1516 | version "3.0.4" 1517 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1518 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1519 | dependencies: 1520 | brace-expansion "^1.1.7" 1521 | 1522 | minimist@^1.2.5: 1523 | version "1.2.5" 1524 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1525 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1526 | 1527 | ms@2.1.2: 1528 | version "2.1.2" 1529 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1530 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1531 | 1532 | nanoid@^3.1.20: 1533 | version "3.1.20" 1534 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" 1535 | integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== 1536 | 1537 | natural-compare@^1.4.0: 1538 | version "1.4.0" 1539 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1540 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1541 | 1542 | node-releases@^1.1.69: 1543 | version "1.1.69" 1544 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6" 1545 | integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== 1546 | 1547 | object-keys@^1.0.12, object-keys@^1.1.1: 1548 | version "1.1.1" 1549 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1550 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1551 | 1552 | object.assign@^4.1.0: 1553 | version "4.1.2" 1554 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1555 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1556 | dependencies: 1557 | call-bind "^1.0.0" 1558 | define-properties "^1.1.3" 1559 | has-symbols "^1.0.1" 1560 | object-keys "^1.1.1" 1561 | 1562 | once@^1.3.0: 1563 | version "1.4.0" 1564 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1565 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1566 | dependencies: 1567 | wrappy "1" 1568 | 1569 | optionator@^0.9.1: 1570 | version "0.9.1" 1571 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1572 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1573 | dependencies: 1574 | deep-is "^0.1.3" 1575 | fast-levenshtein "^2.0.6" 1576 | levn "^0.4.1" 1577 | prelude-ls "^1.2.1" 1578 | type-check "^0.4.0" 1579 | word-wrap "^1.2.3" 1580 | 1581 | os-shim@^0.1.2: 1582 | version "0.1.3" 1583 | resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" 1584 | integrity sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc= 1585 | 1586 | parent-module@^1.0.0: 1587 | version "1.0.1" 1588 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1589 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1590 | dependencies: 1591 | callsites "^3.0.0" 1592 | 1593 | path-is-absolute@^1.0.0: 1594 | version "1.0.1" 1595 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1596 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1597 | 1598 | path-key@^3.1.0: 1599 | version "3.1.1" 1600 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1601 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1602 | 1603 | path-parse@^1.0.6: 1604 | version "1.0.6" 1605 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1606 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1607 | 1608 | picomatch@^2.2.2: 1609 | version "2.2.2" 1610 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1611 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1612 | 1613 | postcss-tape@^6.0.0: 1614 | version "6.0.0" 1615 | resolved "https://registry.yarnpkg.com/postcss-tape/-/postcss-tape-6.0.0.tgz#7d351d507bebdff95ecbda0802dc82e394eeab83" 1616 | integrity sha512-gfwBh9NPzeSSTWwNnkhtPAtTGSr70/3zLyzIdjB54LwaKBe//QjlmX7PBsUN3EVRNIBhghAESQ+ugkUjLiCQVw== 1617 | 1618 | postcss@^8.1.0: 1619 | version "8.2.4" 1620 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04" 1621 | integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== 1622 | dependencies: 1623 | colorette "^1.2.1" 1624 | nanoid "^3.1.20" 1625 | source-map "^0.6.1" 1626 | 1627 | pre-commit@^1.2.2: 1628 | version "1.2.2" 1629 | resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" 1630 | integrity sha1-287g7p3nI15X95xW186UZBpp7sY= 1631 | dependencies: 1632 | cross-spawn "^5.0.1" 1633 | spawn-sync "^1.0.15" 1634 | which "1.2.x" 1635 | 1636 | prelude-ls@^1.2.1: 1637 | version "1.2.1" 1638 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1639 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1640 | 1641 | process-nextick-args@~2.0.0: 1642 | version "2.0.1" 1643 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1644 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1645 | 1646 | progress@^2.0.0: 1647 | version "2.0.3" 1648 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1649 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1650 | 1651 | pseudomap@^1.0.2: 1652 | version "1.0.2" 1653 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1654 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1655 | 1656 | punycode@^2.1.0: 1657 | version "2.1.1" 1658 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1659 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1660 | 1661 | readable-stream@^2.2.2: 1662 | version "2.3.7" 1663 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1664 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1665 | dependencies: 1666 | core-util-is "~1.0.0" 1667 | inherits "~2.0.3" 1668 | isarray "~1.0.0" 1669 | process-nextick-args "~2.0.0" 1670 | safe-buffer "~5.1.1" 1671 | string_decoder "~1.1.1" 1672 | util-deprecate "~1.0.1" 1673 | 1674 | regenerate-unicode-properties@^8.2.0: 1675 | version "8.2.0" 1676 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" 1677 | integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== 1678 | dependencies: 1679 | regenerate "^1.4.0" 1680 | 1681 | regenerate@^1.4.0: 1682 | version "1.4.2" 1683 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" 1684 | integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== 1685 | 1686 | regenerator-runtime@^0.13.4: 1687 | version "0.13.7" 1688 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" 1689 | integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== 1690 | 1691 | regenerator-transform@^0.14.2: 1692 | version "0.14.5" 1693 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" 1694 | integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== 1695 | dependencies: 1696 | "@babel/runtime" "^7.8.4" 1697 | 1698 | regexpp@^3.1.0: 1699 | version "3.1.0" 1700 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1701 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1702 | 1703 | regexpu-core@^4.7.1: 1704 | version "4.7.1" 1705 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" 1706 | integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== 1707 | dependencies: 1708 | regenerate "^1.4.0" 1709 | regenerate-unicode-properties "^8.2.0" 1710 | regjsgen "^0.5.1" 1711 | regjsparser "^0.6.4" 1712 | unicode-match-property-ecmascript "^1.0.4" 1713 | unicode-match-property-value-ecmascript "^1.2.0" 1714 | 1715 | regjsgen@^0.5.1: 1716 | version "0.5.2" 1717 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" 1718 | integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== 1719 | 1720 | regjsparser@^0.6.4: 1721 | version "0.6.6" 1722 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a" 1723 | integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ== 1724 | dependencies: 1725 | jsesc "~0.5.0" 1726 | 1727 | require-from-string@^2.0.2: 1728 | version "2.0.2" 1729 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1730 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1731 | 1732 | resolve-from@^4.0.0: 1733 | version "4.0.0" 1734 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1735 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1736 | 1737 | resolve@^1.12.0: 1738 | version "1.19.0" 1739 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" 1740 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== 1741 | dependencies: 1742 | is-core-module "^2.1.0" 1743 | path-parse "^1.0.6" 1744 | 1745 | rimraf@^3.0.2: 1746 | version "3.0.2" 1747 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1748 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1749 | dependencies: 1750 | glob "^7.1.3" 1751 | 1752 | rollup@^2.28.2: 1753 | version "2.36.1" 1754 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.36.1.tgz#2174f0c25c7b400d57b05628d0e732c7ae8d2178" 1755 | integrity sha512-eAfqho8dyzuVvrGqpR0ITgEdq0zG2QJeWYh+HeuTbpcaXk8vNFc48B7bJa1xYosTCKx0CuW+447oQOW8HgBIZQ== 1756 | optionalDependencies: 1757 | fsevents "~2.1.2" 1758 | 1759 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1760 | version "5.1.2" 1761 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1762 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1763 | 1764 | semver@7.0.0: 1765 | version "7.0.0" 1766 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 1767 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 1768 | 1769 | semver@^5.4.1, semver@^5.5.0: 1770 | version "5.7.1" 1771 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1772 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1773 | 1774 | semver@^7.2.1: 1775 | version "7.3.4" 1776 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" 1777 | integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== 1778 | dependencies: 1779 | lru-cache "^6.0.0" 1780 | 1781 | shebang-command@^1.2.0: 1782 | version "1.2.0" 1783 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1784 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1785 | dependencies: 1786 | shebang-regex "^1.0.0" 1787 | 1788 | shebang-command@^2.0.0: 1789 | version "2.0.0" 1790 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1791 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1792 | dependencies: 1793 | shebang-regex "^3.0.0" 1794 | 1795 | shebang-regex@^1.0.0: 1796 | version "1.0.0" 1797 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1798 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1799 | 1800 | shebang-regex@^3.0.0: 1801 | version "3.0.0" 1802 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1803 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1804 | 1805 | slice-ansi@^4.0.0: 1806 | version "4.0.0" 1807 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1808 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1809 | dependencies: 1810 | ansi-styles "^4.0.0" 1811 | astral-regex "^2.0.0" 1812 | is-fullwidth-code-point "^3.0.0" 1813 | 1814 | source-map@^0.5.0: 1815 | version "0.5.7" 1816 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1817 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1818 | 1819 | source-map@^0.6.1: 1820 | version "0.6.1" 1821 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1822 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1823 | 1824 | spawn-sync@^1.0.15: 1825 | version "1.0.15" 1826 | resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" 1827 | integrity sha1-sAeZVX63+wyDdsKdROih6mfldHY= 1828 | dependencies: 1829 | concat-stream "^1.4.7" 1830 | os-shim "^0.1.2" 1831 | 1832 | sprintf-js@~1.0.2: 1833 | version "1.0.3" 1834 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1835 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1836 | 1837 | string-width@^4.2.0: 1838 | version "4.2.0" 1839 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1840 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1841 | dependencies: 1842 | emoji-regex "^8.0.0" 1843 | is-fullwidth-code-point "^3.0.0" 1844 | strip-ansi "^6.0.0" 1845 | 1846 | string_decoder@~1.1.1: 1847 | version "1.1.1" 1848 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1849 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1850 | dependencies: 1851 | safe-buffer "~5.1.0" 1852 | 1853 | strip-ansi@^6.0.0: 1854 | version "6.0.0" 1855 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1856 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1857 | dependencies: 1858 | ansi-regex "^5.0.0" 1859 | 1860 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1861 | version "3.1.1" 1862 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1863 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1864 | 1865 | supports-color@^5.3.0: 1866 | version "5.5.0" 1867 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1868 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1869 | dependencies: 1870 | has-flag "^3.0.0" 1871 | 1872 | supports-color@^7.1.0: 1873 | version "7.2.0" 1874 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1875 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1876 | dependencies: 1877 | has-flag "^4.0.0" 1878 | 1879 | table@^6.0.4: 1880 | version "6.0.7" 1881 | resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" 1882 | integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== 1883 | dependencies: 1884 | ajv "^7.0.2" 1885 | lodash "^4.17.20" 1886 | slice-ansi "^4.0.0" 1887 | string-width "^4.2.0" 1888 | 1889 | text-table@^0.2.0: 1890 | version "0.2.0" 1891 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1892 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1893 | 1894 | to-fast-properties@^2.0.0: 1895 | version "2.0.0" 1896 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1897 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1898 | 1899 | type-check@^0.4.0, type-check@~0.4.0: 1900 | version "0.4.0" 1901 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1902 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1903 | dependencies: 1904 | prelude-ls "^1.2.1" 1905 | 1906 | type-fest@^0.8.1: 1907 | version "0.8.1" 1908 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1909 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1910 | 1911 | typedarray@^0.0.6: 1912 | version "0.0.6" 1913 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1914 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 1915 | 1916 | unicode-canonical-property-names-ecmascript@^1.0.4: 1917 | version "1.0.4" 1918 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" 1919 | integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== 1920 | 1921 | unicode-match-property-ecmascript@^1.0.4: 1922 | version "1.0.4" 1923 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" 1924 | integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== 1925 | dependencies: 1926 | unicode-canonical-property-names-ecmascript "^1.0.4" 1927 | unicode-property-aliases-ecmascript "^1.0.4" 1928 | 1929 | unicode-match-property-value-ecmascript@^1.2.0: 1930 | version "1.2.0" 1931 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" 1932 | integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== 1933 | 1934 | unicode-property-aliases-ecmascript@^1.0.4: 1935 | version "1.1.0" 1936 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" 1937 | integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== 1938 | 1939 | uri-js@^4.2.2: 1940 | version "4.4.1" 1941 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1942 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1943 | dependencies: 1944 | punycode "^2.1.0" 1945 | 1946 | util-deprecate@~1.0.1: 1947 | version "1.0.2" 1948 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1949 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1950 | 1951 | v8-compile-cache@^2.0.3: 1952 | version "2.2.0" 1953 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" 1954 | integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== 1955 | 1956 | which@1.2.x: 1957 | version "1.2.14" 1958 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" 1959 | integrity sha1-mofEN48D6CfOyvGs31bHNsAcFOU= 1960 | dependencies: 1961 | isexe "^2.0.0" 1962 | 1963 | which@^1.2.9: 1964 | version "1.3.1" 1965 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1966 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1967 | dependencies: 1968 | isexe "^2.0.0" 1969 | 1970 | which@^2.0.1: 1971 | version "2.0.2" 1972 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1973 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1974 | dependencies: 1975 | isexe "^2.0.0" 1976 | 1977 | word-wrap@^1.2.3: 1978 | version "1.2.3" 1979 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1980 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1981 | 1982 | wrappy@1: 1983 | version "1.0.2" 1984 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1985 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1986 | 1987 | yallist@^2.1.2: 1988 | version "2.1.2" 1989 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1990 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 1991 | 1992 | yallist@^4.0.0: 1993 | version "4.0.0" 1994 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1995 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1996 | --------------------------------------------------------------------------------