├── .eslintrc.js ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── example.html ├── package.json ├── src ├── index.js └── react.js └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | commonjs: true, 5 | }, 6 | parserOptions: { 7 | ecmaVersion: 5, 8 | }, 9 | extends: 'eslint:recommended', 10 | rules: { 11 | 'func-names': ['error', 'always'], 12 | }, 13 | overrides: [ 14 | { 15 | files: ['src/react.js'], 16 | parserOptions: { 17 | ecmaVersion: 12, 18 | }, 19 | }, 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: [push, pull_request] 3 | jobs: 4 | checks: 5 | runs-on: ubuntu-latest 6 | strategy: 7 | matrix: 8 | node-version: [14.x] 9 | steps: 10 | - uses: actions/checkout@v2 11 | - name: Use Node.js ${{ matrix.node-version }} 12 | uses: actions/setup-node@v1 13 | with: 14 | node-version: ${{ matrix.node-version }} 15 | - run: yarn --frozen-lockfile 16 | - run: yarn test 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 1.1.1 4 | 5 | Fixed: 6 | 7 | - Fixed an issue where React-component would initialize the datepicker twice 8 | 9 | ## 1.1.0 10 | 11 | Added: 12 | 13 | - `initialValue` option for convenience 14 | 15 | Fixed: 16 | 17 | - Added eslint to enforce ES5 syntax in `src/index.js` 18 | 19 | ## 1.0.2 20 | 21 | This is the first public release of NativeDatepicker. 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2020 Martti Laine 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 4 | 5 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # native-datepicker 2 | 3 | > Styleable datepicker utilizing the native `` 4 | 5 | [![native-datepicker on npm](https://img.shields.io/badge/npm-native--datepicker-blue)](https://www.npmjs.com/package/native-datepicker) 6 | [![codeclown/native-datepicker on GitHub](https://img.shields.io/badge/github-codeclown%2Fnative--datepicker-lightgrey)](https://github.com/codeclown/native-datepicker) 7 | 8 | Features: 9 | 10 | - Light-weight, no dependencies 11 | - Includes optional React-component 12 | - Supports datetime strings (only replaces date-portion upon change) 13 | - Simple styling, with BEM classes 14 | 15 | Example/demo: 16 | 17 | - [https://codeclown.github.io/native-datepicker/example.html](https://codeclown.github.io/native-datepicker/example.html) 18 | 19 | ## Browser support 20 | 21 | Supported: 22 | 23 | - Chrome 24 | - Firefox 25 | - Edge 26 | - Safari iOS 27 | 28 | Not supported (datepicker is hidden): 29 | 30 | - Safari MacOS 31 | - IE 32 | 33 | ## Usage 34 | 35 | ### Vanilla JS 36 | 37 | ```js 38 | const NativeDatepicker = require('native-datepicker'); 39 | const picker = new NativeDatepicker({ 40 | onChange: (newValue) => { 41 | console.log(newValue); 42 | }, 43 | }); 44 | someElement.appendChild(picker.element); 45 | ``` 46 | 47 | See [API](#api). 48 | 49 | See also [`example.html` (source)](./example.html). 50 | 51 | ### React 52 | 53 | ```jsx 54 | const NativeDatepicker = require('native-datepicker/src/react'); 55 | const SomeComponent = () => { 56 | const [date, setDate] = useState('2020-11-01'); 57 | return ( 58 | setDate(newValue)} /> 59 | ); 60 | }; 61 | ``` 62 | 63 | See [React API](#react-api). 64 | 65 | ## API 66 | 67 | ### `class NativeDatepicker` 68 | 69 | #### `constructor(options)` 70 | 71 | `options` is an object with the following properties: 72 | 73 | ##### `options.onChange` 74 | 75 | type: `function` default: `(value) => {}` 76 | 77 | Callback function which is called when the user selects a new date. 78 | 79 | Receives the new value as string (e.g. `"2020-11-01"` or `"2020-11-01 13:15:00"`; just the date-portion of the original value is replaced). 80 | 81 | ##### `options.initialValue` 82 | 83 | type: `string` default: `""` 84 | 85 | Set the initial date input value. 86 | 87 | These are equivalent: 88 | 89 | ```js 90 | const datepicker = new NativeDatepicker({ 91 | initialValue: '2020-11-09 12:43:00', 92 | }); 93 | // or 94 | const datepicker = new NativeDatepicker(); 95 | datepicker.setValue('2020-11-09 12:43:00'); 96 | ``` 97 | 98 | ##### `options.existingElement` 99 | 100 | type: `DOMElement` default: `null` 101 | 102 | If set, existing element will be used instead of creating a new `span` element. 103 | 104 | ##### `options.win` 105 | 106 | type: `Window` default: `window` 107 | 108 | For the rare use case (e.g. using inside a child iframe) when setting `window` is necessary. 109 | 110 | #### `setValue(dateString)` 111 | 112 | Set the value of the datepicker. 113 | 114 | `dateString` should be a string containing a date in `YYYY-MM-DD` format. For example, all of these are valid: 115 | 116 | - `"2020-11-01"` 117 | - `"2020-11-01 13:15:00"` 118 | - `"2020-11-01T13:15:00"` 119 | 120 | Upon changes, NativeDatepicker will replace the date-portion of the string and return the result. 121 | 122 | #### `element` 123 | 124 | Contains a reference to the datepicker element. 125 | 126 | ## React API 127 | 128 | ### `NativeDatepicker` component 129 | 130 | Props: 131 | 132 | ```jsx 133 | {}} 136 | className="customClassName" 137 | > 138 | {optionalChildren} 139 | 140 | ``` 141 | 142 | #### `props.value` 143 | 144 | type: `string` default: `""` 145 | 146 | Initial value. Examples: 147 | 148 | - `value="2020-11-01"` 149 | - `value="2020-11-01 13:15:00"` 150 | - `value="2020-11-01T13:15:00"` 151 | 152 | #### `props.onChange` 153 | 154 | type: `function` default: `(value) => {}` 155 | 156 | Callback function which is called when the user selects a new date. 157 | 158 | Receives the new value as string (e.g. `"2020-11-01"` or `"2020-11-01 13:15:00"`; just the date-portion of the original value is replaced). 159 | 160 | #### `props.className` 161 | 162 | type: `string` default: `""` 163 | 164 | Custom className for the created element. 165 | 166 | Example with `className="CustomClass"`: 167 | 168 | ```html 169 | 170 | 171 | 172 | ``` 173 | 174 | #### `optionalChildren` 175 | 176 | If `children` are given, they are inserted into the resulting DOM. This can be used for any styling needs. 177 | 178 | Example: 179 | 180 | ```html 181 | 182 | 183 | 184 | 185 | ``` 186 | 187 | ## Styling / DOM structure 188 | 189 | The following DOM is created for each datepicker: 190 | 191 | ```html 192 | 193 | 194 | 195 | ``` 196 | 197 | The recommended way to style the datepicker is to apply styles (e.g. width/height and a background-image) to the topmost element. Example: 198 | 199 | ```css 200 | .NativeDatepicker { 201 | width: 16px; 202 | height: 16px; 203 | background: transparent url(...) no-repeat center center; 204 | } 205 | ``` 206 | 207 | Note: under normal circumstances you should not add any styles to `.NativeDatepicker__input`! 208 | 209 | ## Development 210 | 211 | Source files reside in `src/`. Note that `src/index.js` is not precompiled in any way; it should remain valid ES5 (no worries, though; this is checked by eslint). 212 | 213 | ## Release process (for maintainers) 214 | 215 | Keep [`CHANGELOG.md`](./CHANGELOG.md) up-to-date. Run: 216 | 217 | ```bash 218 | yarn test 219 | # will ask for updated version number 220 | yarn publish 221 | # remember to push commits and tags to remote 222 | git push --follow-tags 223 | ``` 224 | 225 | ## License 226 | 227 | [ISC](./LICENSE) 228 | -------------------------------------------------------------------------------- /example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NativeDatepicker example 6 | 14 | 15 | 16 | 17 | 18 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "native-datepicker", 3 | "version": "1.1.1", 4 | "main": "src/index.js", 5 | "repository": "https://github.com/codeclown/native-datepicker", 6 | "author": "Martti Laine ", 7 | "license": "ISC", 8 | "devDependencies": { 9 | "eslint": "^7.13.0" 10 | }, 11 | "scripts": { 12 | "test": "eslint src" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | /* global define */ 2 | (function nativeDatepickerFactory1(factory) { 3 | if (typeof exports === 'object' && typeof module === 'object') { 4 | module.exports = factory(); 5 | } else if (typeof define === 'function' && define.amd) { 6 | define(factory); 7 | } else { 8 | window['NativeDatepicker'] = factory(); 9 | } 10 | })(function nativeDatepickerFactory2() { 11 | var classNames = { 12 | wrapper: 'NativeDatepicker', 13 | input: 'NativeDatepicker__input', 14 | }; 15 | 16 | var dateRegex = /\d{4}-\d{2}-\d{2}/; 17 | 18 | function NativeDatepicker(options) { 19 | this.options = Object.assign( 20 | { 21 | win: typeof window !== 'undefined' ? window : undefined, 22 | existingElement: null, 23 | onChange: function defaultOnChange() {}, 24 | initialValue: '', 25 | }, 26 | options 27 | ); 28 | 29 | this.addStylesheet(); 30 | this.buildDom(); 31 | this.setValue(this.options.initialValue); 32 | } 33 | 34 | NativeDatepicker.prototype.setValue = function setValue(fullString) { 35 | var match = fullString.match(dateRegex); 36 | if (match) { 37 | this.fullValue = fullString; 38 | this.dateValue = match[0]; 39 | this.dateInputElement.value = match[0]; 40 | } 41 | }; 42 | 43 | NativeDatepicker.prototype.buildDom = function buildDom() { 44 | // DOM structure: 45 | // 46 | // 47 | // 48 | 49 | var element = 50 | this.options.existingElement || 51 | this.options.win.document.createElement('span'); 52 | element.classList.add(classNames.wrapper); 53 | this.element = element; 54 | 55 | if (!this.isSupported()) { 56 | // Not via CSS class because we don't want to mess with 57 | // CSS-set display values, to not mess up user styles 58 | element.style.display = 'none'; 59 | } 60 | 61 | var dateInputElement = this.options.win.document.createElement('input'); 62 | dateInputElement.type = 'date'; 63 | dateInputElement.classList.add(classNames.input); 64 | element.appendChild(dateInputElement); 65 | this.dateInputElement = dateInputElement; 66 | 67 | var self = this; 68 | dateInputElement.addEventListener( 69 | 'change', 70 | function onNativeDatepickerChange() { 71 | var newValue = self.fullValue.replace( 72 | dateRegex, 73 | dateInputElement.value 74 | ); 75 | // Regex didn't match, fallback to setting the entire value 76 | if (!newValue.includes(dateInputElement.value)) { 77 | newValue = dateInputElement.value; 78 | } 79 | dateInputElement.value = self.dateValue; 80 | self.options.onChange(newValue); 81 | } 82 | ); 83 | }; 84 | 85 | NativeDatepicker.prototype.addStylesheet = function addStylesheet() { 86 | var styleId = 'NativeDatepickerStyles'; 87 | if (!this.options.win.document.querySelector('style#' + styleId)) { 88 | var style = this.options.win.document.createElement('style'); 89 | style.id = styleId; 90 | style.textContent = 91 | '.' + 92 | classNames.wrapper + 93 | ' {' + 94 | ' display: inline-block;' + 95 | ' position: relative;' + 96 | '}' + 97 | '.' + 98 | classNames.input + 99 | ' {' + 100 | ' position: absolute;' + 101 | ' left: 0;' + 102 | ' top: 0;' + 103 | ' width: 100%;' + 104 | ' height: 100%;' + 105 | ' opacity: 0;' + 106 | ' cursor: pointer;' + 107 | ' box-sizing: border-box;' + 108 | '}' + 109 | '.' + 110 | classNames.input + 111 | '::-webkit-calendar-picker-indicator {' + 112 | ' position: absolute;' + 113 | ' left: 0;' + 114 | ' top: 0;' + 115 | ' width: 100%;' + 116 | ' height: 100%;' + 117 | ' margin: 0;' + 118 | ' padding: 0;' + 119 | ' cursor: pointer;' + 120 | '}'; 121 | this.options.win.document.head.appendChild(style); 122 | } 123 | }; 124 | 125 | NativeDatepicker.prototype.isSupported = function isSupported() { 126 | var input = this.options.win.document.createElement('input'); 127 | input.type = 'date'; 128 | input.value = 'invalid date value'; 129 | return input.value !== 'invalid date value'; 130 | }; 131 | 132 | return NativeDatepicker; 133 | }); 134 | -------------------------------------------------------------------------------- /src/react.js: -------------------------------------------------------------------------------- 1 | const { createElement: h, useRef, useEffect, useState } = require('react'); 2 | const NativeDatepickerClass = require('./index'); 3 | 4 | const NativeDatepicker = ({ 5 | value = '', 6 | onChange = () => {}, 7 | className = '', 8 | children, 9 | }) => { 10 | const spanRef = useRef(null); 11 | const [datepicker, setDatepicker] = useState(); 12 | useEffect(() => { 13 | if (spanRef.current && !datepicker) { 14 | const picker = new NativeDatepickerClass({ 15 | existingElement: spanRef.current, 16 | initialValue: value, 17 | onChange, 18 | }); 19 | setDatepicker(picker); 20 | } 21 | }, [spanRef.current, datepicker]); 22 | useEffect(() => { 23 | if (datepicker) { 24 | datepicker.setValue(value); 25 | } 26 | }, [datepicker, value]); 27 | return h( 28 | 'span', 29 | { 30 | ref: spanRef, 31 | className, 32 | }, 33 | children 34 | ); 35 | }; 36 | 37 | module.exports = NativeDatepicker; 38 | -------------------------------------------------------------------------------- /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": 6 | version "7.10.4" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" 8 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.10.4": 13 | version "7.10.4" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" 15 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.10.4" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.10.4" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.2.1": 27 | version "0.2.1" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" 29 | integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^12.1.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | lodash "^4.17.19" 39 | minimatch "^3.0.4" 40 | strip-json-comments "^3.1.1" 41 | 42 | acorn-jsx@^5.2.0: 43 | version "5.3.1" 44 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 45 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 46 | 47 | acorn@^7.4.0: 48 | version "7.4.1" 49 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 50 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 51 | 52 | ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: 53 | version "6.12.6" 54 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 55 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 56 | dependencies: 57 | fast-deep-equal "^3.1.1" 58 | fast-json-stable-stringify "^2.0.0" 59 | json-schema-traverse "^0.4.1" 60 | uri-js "^4.2.2" 61 | 62 | ansi-colors@^4.1.1: 63 | version "4.1.1" 64 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 65 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 66 | 67 | ansi-regex@^4.1.0: 68 | version "4.1.0" 69 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 70 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 71 | 72 | ansi-regex@^5.0.0: 73 | version "5.0.0" 74 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 75 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 76 | 77 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 78 | version "3.2.1" 79 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 80 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 81 | dependencies: 82 | color-convert "^1.9.0" 83 | 84 | ansi-styles@^4.1.0: 85 | version "4.3.0" 86 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 87 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 88 | dependencies: 89 | color-convert "^2.0.1" 90 | 91 | argparse@^1.0.7: 92 | version "1.0.10" 93 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 94 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 95 | dependencies: 96 | sprintf-js "~1.0.2" 97 | 98 | astral-regex@^1.0.0: 99 | version "1.0.0" 100 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 101 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 102 | 103 | balanced-match@^1.0.0: 104 | version "1.0.0" 105 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 106 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 107 | 108 | brace-expansion@^1.1.7: 109 | version "1.1.11" 110 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 111 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 112 | dependencies: 113 | balanced-match "^1.0.0" 114 | concat-map "0.0.1" 115 | 116 | callsites@^3.0.0: 117 | version "3.1.0" 118 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 119 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 120 | 121 | chalk@^2.0.0: 122 | version "2.4.2" 123 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 124 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 125 | dependencies: 126 | ansi-styles "^3.2.1" 127 | escape-string-regexp "^1.0.5" 128 | supports-color "^5.3.0" 129 | 130 | chalk@^4.0.0: 131 | version "4.1.0" 132 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 133 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 134 | dependencies: 135 | ansi-styles "^4.1.0" 136 | supports-color "^7.1.0" 137 | 138 | color-convert@^1.9.0: 139 | version "1.9.3" 140 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 141 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 142 | dependencies: 143 | color-name "1.1.3" 144 | 145 | color-convert@^2.0.1: 146 | version "2.0.1" 147 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 148 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 149 | dependencies: 150 | color-name "~1.1.4" 151 | 152 | color-name@1.1.3: 153 | version "1.1.3" 154 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 155 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 156 | 157 | color-name@~1.1.4: 158 | version "1.1.4" 159 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 160 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 161 | 162 | concat-map@0.0.1: 163 | version "0.0.1" 164 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 165 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 166 | 167 | cross-spawn@^7.0.2: 168 | version "7.0.3" 169 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 170 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 171 | dependencies: 172 | path-key "^3.1.0" 173 | shebang-command "^2.0.0" 174 | which "^2.0.1" 175 | 176 | debug@^4.0.1, debug@^4.1.1: 177 | version "4.2.0" 178 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" 179 | integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== 180 | dependencies: 181 | ms "2.1.2" 182 | 183 | deep-is@^0.1.3: 184 | version "0.1.3" 185 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 186 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 187 | 188 | doctrine@^3.0.0: 189 | version "3.0.0" 190 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 191 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 192 | dependencies: 193 | esutils "^2.0.2" 194 | 195 | emoji-regex@^7.0.1: 196 | version "7.0.3" 197 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 198 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 199 | 200 | enquirer@^2.3.5: 201 | version "2.3.6" 202 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 203 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 204 | dependencies: 205 | ansi-colors "^4.1.1" 206 | 207 | escape-string-regexp@^1.0.5: 208 | version "1.0.5" 209 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 210 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 211 | 212 | eslint-scope@^5.1.1: 213 | version "5.1.1" 214 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 215 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 216 | dependencies: 217 | esrecurse "^4.3.0" 218 | estraverse "^4.1.1" 219 | 220 | eslint-utils@^2.1.0: 221 | version "2.1.0" 222 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 223 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 224 | dependencies: 225 | eslint-visitor-keys "^1.1.0" 226 | 227 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 228 | version "1.3.0" 229 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 230 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 231 | 232 | eslint-visitor-keys@^2.0.0: 233 | version "2.0.0" 234 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 235 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 236 | 237 | eslint@^7.13.0: 238 | version "7.13.0" 239 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.13.0.tgz#7f180126c0dcdef327bfb54b211d7802decc08da" 240 | integrity sha512-uCORMuOO8tUzJmsdRtrvcGq5qposf7Rw0LwkTJkoDbOycVQtQjmnhZSuLQnozLE4TmAzlMVV45eCHmQ1OpDKUQ== 241 | dependencies: 242 | "@babel/code-frame" "^7.0.0" 243 | "@eslint/eslintrc" "^0.2.1" 244 | ajv "^6.10.0" 245 | chalk "^4.0.0" 246 | cross-spawn "^7.0.2" 247 | debug "^4.0.1" 248 | doctrine "^3.0.0" 249 | enquirer "^2.3.5" 250 | eslint-scope "^5.1.1" 251 | eslint-utils "^2.1.0" 252 | eslint-visitor-keys "^2.0.0" 253 | espree "^7.3.0" 254 | esquery "^1.2.0" 255 | esutils "^2.0.2" 256 | file-entry-cache "^5.0.1" 257 | functional-red-black-tree "^1.0.1" 258 | glob-parent "^5.0.0" 259 | globals "^12.1.0" 260 | ignore "^4.0.6" 261 | import-fresh "^3.0.0" 262 | imurmurhash "^0.1.4" 263 | is-glob "^4.0.0" 264 | js-yaml "^3.13.1" 265 | json-stable-stringify-without-jsonify "^1.0.1" 266 | levn "^0.4.1" 267 | lodash "^4.17.19" 268 | minimatch "^3.0.4" 269 | natural-compare "^1.4.0" 270 | optionator "^0.9.1" 271 | progress "^2.0.0" 272 | regexpp "^3.1.0" 273 | semver "^7.2.1" 274 | strip-ansi "^6.0.0" 275 | strip-json-comments "^3.1.0" 276 | table "^5.2.3" 277 | text-table "^0.2.0" 278 | v8-compile-cache "^2.0.3" 279 | 280 | espree@^7.3.0: 281 | version "7.3.0" 282 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" 283 | integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== 284 | dependencies: 285 | acorn "^7.4.0" 286 | acorn-jsx "^5.2.0" 287 | eslint-visitor-keys "^1.3.0" 288 | 289 | esprima@^4.0.0: 290 | version "4.0.1" 291 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 292 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 293 | 294 | esquery@^1.2.0: 295 | version "1.3.1" 296 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 297 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 298 | dependencies: 299 | estraverse "^5.1.0" 300 | 301 | esrecurse@^4.3.0: 302 | version "4.3.0" 303 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 304 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 305 | dependencies: 306 | estraverse "^5.2.0" 307 | 308 | estraverse@^4.1.1: 309 | version "4.3.0" 310 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 311 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 312 | 313 | estraverse@^5.1.0, estraverse@^5.2.0: 314 | version "5.2.0" 315 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 316 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 317 | 318 | esutils@^2.0.2: 319 | version "2.0.3" 320 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 321 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 322 | 323 | fast-deep-equal@^3.1.1: 324 | version "3.1.3" 325 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 326 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 327 | 328 | fast-json-stable-stringify@^2.0.0: 329 | version "2.1.0" 330 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 331 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 332 | 333 | fast-levenshtein@^2.0.6: 334 | version "2.0.6" 335 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 336 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 337 | 338 | file-entry-cache@^5.0.1: 339 | version "5.0.1" 340 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 341 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 342 | dependencies: 343 | flat-cache "^2.0.1" 344 | 345 | flat-cache@^2.0.1: 346 | version "2.0.1" 347 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 348 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 349 | dependencies: 350 | flatted "^2.0.0" 351 | rimraf "2.6.3" 352 | write "1.0.3" 353 | 354 | flatted@^2.0.0: 355 | version "2.0.2" 356 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" 357 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== 358 | 359 | fs.realpath@^1.0.0: 360 | version "1.0.0" 361 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 362 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 363 | 364 | functional-red-black-tree@^1.0.1: 365 | version "1.0.1" 366 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 367 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 368 | 369 | glob-parent@^5.0.0: 370 | version "5.1.1" 371 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 372 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 373 | dependencies: 374 | is-glob "^4.0.1" 375 | 376 | glob@^7.1.3: 377 | version "7.1.6" 378 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 379 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 380 | dependencies: 381 | fs.realpath "^1.0.0" 382 | inflight "^1.0.4" 383 | inherits "2" 384 | minimatch "^3.0.4" 385 | once "^1.3.0" 386 | path-is-absolute "^1.0.0" 387 | 388 | globals@^12.1.0: 389 | version "12.4.0" 390 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 391 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 392 | dependencies: 393 | type-fest "^0.8.1" 394 | 395 | has-flag@^3.0.0: 396 | version "3.0.0" 397 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 398 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 399 | 400 | has-flag@^4.0.0: 401 | version "4.0.0" 402 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 403 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 404 | 405 | ignore@^4.0.6: 406 | version "4.0.6" 407 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 408 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 409 | 410 | import-fresh@^3.0.0, import-fresh@^3.2.1: 411 | version "3.2.2" 412 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" 413 | integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== 414 | dependencies: 415 | parent-module "^1.0.0" 416 | resolve-from "^4.0.0" 417 | 418 | imurmurhash@^0.1.4: 419 | version "0.1.4" 420 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 421 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 422 | 423 | inflight@^1.0.4: 424 | version "1.0.6" 425 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 426 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 427 | dependencies: 428 | once "^1.3.0" 429 | wrappy "1" 430 | 431 | inherits@2: 432 | version "2.0.4" 433 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 434 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 435 | 436 | is-extglob@^2.1.1: 437 | version "2.1.1" 438 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 439 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 440 | 441 | is-fullwidth-code-point@^2.0.0: 442 | version "2.0.0" 443 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 444 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 445 | 446 | is-glob@^4.0.0, is-glob@^4.0.1: 447 | version "4.0.1" 448 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 449 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 450 | dependencies: 451 | is-extglob "^2.1.1" 452 | 453 | isexe@^2.0.0: 454 | version "2.0.0" 455 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 456 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 457 | 458 | js-tokens@^4.0.0: 459 | version "4.0.0" 460 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 461 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 462 | 463 | js-yaml@^3.13.1: 464 | version "3.14.0" 465 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 466 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 467 | dependencies: 468 | argparse "^1.0.7" 469 | esprima "^4.0.0" 470 | 471 | json-schema-traverse@^0.4.1: 472 | version "0.4.1" 473 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 474 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 475 | 476 | json-stable-stringify-without-jsonify@^1.0.1: 477 | version "1.0.1" 478 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 479 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 480 | 481 | levn@^0.4.1: 482 | version "0.4.1" 483 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 484 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 485 | dependencies: 486 | prelude-ls "^1.2.1" 487 | type-check "~0.4.0" 488 | 489 | lodash@^4.17.14, lodash@^4.17.19: 490 | version "4.17.20" 491 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 492 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 493 | 494 | minimatch@^3.0.4: 495 | version "3.0.4" 496 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 497 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 498 | dependencies: 499 | brace-expansion "^1.1.7" 500 | 501 | minimist@^1.2.5: 502 | version "1.2.5" 503 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 504 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 505 | 506 | mkdirp@^0.5.1: 507 | version "0.5.5" 508 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 509 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 510 | dependencies: 511 | minimist "^1.2.5" 512 | 513 | ms@2.1.2: 514 | version "2.1.2" 515 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 516 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 517 | 518 | natural-compare@^1.4.0: 519 | version "1.4.0" 520 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 521 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 522 | 523 | once@^1.3.0: 524 | version "1.4.0" 525 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 526 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 527 | dependencies: 528 | wrappy "1" 529 | 530 | optionator@^0.9.1: 531 | version "0.9.1" 532 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 533 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 534 | dependencies: 535 | deep-is "^0.1.3" 536 | fast-levenshtein "^2.0.6" 537 | levn "^0.4.1" 538 | prelude-ls "^1.2.1" 539 | type-check "^0.4.0" 540 | word-wrap "^1.2.3" 541 | 542 | parent-module@^1.0.0: 543 | version "1.0.1" 544 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 545 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 546 | dependencies: 547 | callsites "^3.0.0" 548 | 549 | path-is-absolute@^1.0.0: 550 | version "1.0.1" 551 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 552 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 553 | 554 | path-key@^3.1.0: 555 | version "3.1.1" 556 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 557 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 558 | 559 | prelude-ls@^1.2.1: 560 | version "1.2.1" 561 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 562 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 563 | 564 | progress@^2.0.0: 565 | version "2.0.3" 566 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 567 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 568 | 569 | punycode@^2.1.0: 570 | version "2.1.1" 571 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 572 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 573 | 574 | regexpp@^3.1.0: 575 | version "3.1.0" 576 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 577 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 578 | 579 | resolve-from@^4.0.0: 580 | version "4.0.0" 581 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 582 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 583 | 584 | rimraf@2.6.3: 585 | version "2.6.3" 586 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 587 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 588 | dependencies: 589 | glob "^7.1.3" 590 | 591 | semver@^7.2.1: 592 | version "7.3.2" 593 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 594 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 595 | 596 | shebang-command@^2.0.0: 597 | version "2.0.0" 598 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 599 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 600 | dependencies: 601 | shebang-regex "^3.0.0" 602 | 603 | shebang-regex@^3.0.0: 604 | version "3.0.0" 605 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 606 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 607 | 608 | slice-ansi@^2.1.0: 609 | version "2.1.0" 610 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 611 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 612 | dependencies: 613 | ansi-styles "^3.2.0" 614 | astral-regex "^1.0.0" 615 | is-fullwidth-code-point "^2.0.0" 616 | 617 | sprintf-js@~1.0.2: 618 | version "1.0.3" 619 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 620 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 621 | 622 | string-width@^3.0.0: 623 | version "3.1.0" 624 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 625 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 626 | dependencies: 627 | emoji-regex "^7.0.1" 628 | is-fullwidth-code-point "^2.0.0" 629 | strip-ansi "^5.1.0" 630 | 631 | strip-ansi@^5.1.0: 632 | version "5.2.0" 633 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 634 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 635 | dependencies: 636 | ansi-regex "^4.1.0" 637 | 638 | strip-ansi@^6.0.0: 639 | version "6.0.0" 640 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 641 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 642 | dependencies: 643 | ansi-regex "^5.0.0" 644 | 645 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 646 | version "3.1.1" 647 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 648 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 649 | 650 | supports-color@^5.3.0: 651 | version "5.5.0" 652 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 653 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 654 | dependencies: 655 | has-flag "^3.0.0" 656 | 657 | supports-color@^7.1.0: 658 | version "7.2.0" 659 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 660 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 661 | dependencies: 662 | has-flag "^4.0.0" 663 | 664 | table@^5.2.3: 665 | version "5.4.6" 666 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 667 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 668 | dependencies: 669 | ajv "^6.10.2" 670 | lodash "^4.17.14" 671 | slice-ansi "^2.1.0" 672 | string-width "^3.0.0" 673 | 674 | text-table@^0.2.0: 675 | version "0.2.0" 676 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 677 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 678 | 679 | type-check@^0.4.0, type-check@~0.4.0: 680 | version "0.4.0" 681 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 682 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 683 | dependencies: 684 | prelude-ls "^1.2.1" 685 | 686 | type-fest@^0.8.1: 687 | version "0.8.1" 688 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 689 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 690 | 691 | uri-js@^4.2.2: 692 | version "4.4.0" 693 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" 694 | integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== 695 | dependencies: 696 | punycode "^2.1.0" 697 | 698 | v8-compile-cache@^2.0.3: 699 | version "2.2.0" 700 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" 701 | integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== 702 | 703 | which@^2.0.1: 704 | version "2.0.2" 705 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 706 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 707 | dependencies: 708 | isexe "^2.0.0" 709 | 710 | word-wrap@^1.2.3: 711 | version "1.2.3" 712 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 713 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 714 | 715 | wrappy@1: 716 | version "1.0.2" 717 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 718 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 719 | 720 | write@1.0.3: 721 | version "1.0.3" 722 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 723 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 724 | dependencies: 725 | mkdirp "^0.5.1" 726 | --------------------------------------------------------------------------------