Mirror: The magical sticky regex-based parser generator 🧙
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Publish RegHex

Phil Pluckthun 5dd1c1cb

+6820
+1
.gitattributes
··· 1 + * text=auto
+8
.gitignore
··· 1 + /.vscode 2 + *.log 3 + .rts2_cache* 4 + dist/ 5 + node_modules/ 6 + package-lock.json 7 + .DS_Store 8 + .next
+21
LICENSE.md
··· 1 + MIT License 2 + 3 + Copyright (c) 2020 Phil Plückthun 4 + 5 + Permission is hereby granted, free of charge, to any person obtaining a copy 6 + of this software and associated documentation files (the "Software"), to deal 7 + in the Software without restriction, including without limitation the rights 8 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 + copies of the Software, and to permit persons to whom the Software is 10 + furnished to do 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.
+349
README.md
··· 1 + <div align="center"> 2 + <img alt="reghex" width="250" src="docs/reghex-logo.png" /> 3 + <br /> 4 + <br /> 5 + <strong> 6 + The magical sticky regex-based parser generator 7 + </strong> 8 + <br /> 9 + <br /> 10 + <br /> 11 + </div> 12 + 13 + Leveraging the power of sticky regexes and Babel code generation, `reghex` allows 14 + you to code parsers quickly, by surrounding regular expressions with a regex-like 15 + [DSL](https://en.wikipedia.org/wiki/Domain-specific_language). 16 + 17 + With `reghex` you can generate a parser from a tagged template literal, which is 18 + quick to prototype and generates reasonably compact and performant code. 19 + 20 + _This project is still in its early stages and is experimental. Its API may still 21 + change and some issues may need to be ironed out._ 22 + 23 + ## Quick Start 24 + 25 + ##### 1. Install with yarn or npm 26 + 27 + ```sh 28 + yarn add reghex 29 + # or 30 + npm install --save reghex 31 + ``` 32 + 33 + ##### 2. Add the plugin to your Babel configuration (`.babelrc`, `babel.config.js`, or `package.json:babel`) 34 + 35 + ```json 36 + { 37 + "plugins": ["reghex/babel"] 38 + } 39 + ``` 40 + 41 + Alternatively, you can set up [`babel-plugin-macros`](https://github.com/kentcdodds/babel-plugin-macros) and 42 + import `reghex` from `"reghex/macro"` instead. 43 + 44 + ##### 3. Have fun writing parsers! 45 + 46 + ```js 47 + import match, { parse } from 'reghex'; 48 + 49 + const name = match('name')` 50 + ${/\w+/} 51 + `; 52 + 53 + parse(name)('hello'); 54 + // [ "hello", .tag = "name" ] 55 + ``` 56 + 57 + ## Concepts 58 + 59 + The fundamental concept of `reghex` are regexes, specifically 60 + [sticky regexes](https://www.loganfranken.com/blog/831/es6-everyday-sticky-regex-matches/)! 61 + These are regular expressions that don't search a target string, but instead match at the 62 + specific position they're at. The flag for sticky regexes is `y` and hence 63 + they can be created using `/phrase/y` or `new RegExp('phrase', 'y')`. 64 + 65 + **Sticky Regexes** are the perfect foundation for a parsing framework in JavaScript! 66 + Because they only match at a single position they can be used to match patterns 67 + continuously, as a parser would. Like global regexes, we can then manipulate where 68 + they should be matched by setting `regex.lastIndex = index;` and after matching 69 + read back their updated `regex.lastIndex`. 70 + 71 + > **Note:** Sticky Regexes aren't natively 72 + > [supported in all versions of Internet Explorer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky#Browser_compatibility). `reghex` works around this by imitating its behaviour, which may decrease performance on IE11. 73 + 74 + This primitive allows us to build up a parser from regexes that you pass when 75 + authoring a parser function, also called a "matcher" in `reghex`. When `reghex` compiles 76 + to parser code, this code is just a sequence and combination of sticky regexes that 77 + are executed in order! 78 + 79 + ```js 80 + let input = 'phrases should be parsed...'; 81 + let lastIndex = 0; 82 + 83 + const regex = /phrase/y; 84 + function matcher() { 85 + let match; 86 + // Before matching we set the current index on the RegExp 87 + regex.lastIndex = lastIndex; 88 + // Then we match and store the result 89 + if ((match = regex.exec(input))) { 90 + // If the RegExp matches successfully, we update our lastIndex 91 + lastIndex = regex.lastIndex; 92 + } 93 + } 94 + ``` 95 + 96 + This mechanism is used in all matcher functions that `reghex` generates. 97 + Internally `reghex` keeps track of the input string and the current index on 98 + that string, and the matcher functions execute regexes against this state. 99 + 100 + ## Authoring Guide 101 + 102 + You can write "matchers" by importing the default import from `reghex` and 103 + using it to write a matcher expression. 104 + 105 + ```js 106 + import match from 'reghex'; 107 + 108 + const name = match('name')` 109 + ${/\w+/} 110 + `; 111 + ``` 112 + 113 + As can be seen above, the `match` function, which is what we've called the 114 + default import, is called with a "node name" and is then called as a tagged 115 + template. This template is our **parsing definition**. 116 + 117 + `reghex` functions only with its Babel plugin, which will detect `match('name')` 118 + and replace the entire tag with a parsing function, which may then look like 119 + the following in your transpiled code: 120 + 121 + ```js 122 + import { _pattern /* ... */ } from 'reghex'; 123 + 124 + var _name_expression = _pattern(/\w+/); 125 + var name = function name() { 126 + /* ... */ 127 + }; 128 + ``` 129 + 130 + We've now successfully created a matcher, which matches a single regex, which 131 + is a pattern of one or more letters. We can execute this matcher by calling 132 + it with the curried `parse` utility: 133 + 134 + ```js 135 + import { parse } from 'reghex'; 136 + 137 + const result = parse(name)('Tim'); 138 + 139 + console.log(result); // [ "Tim", .tag = "name" ] 140 + console.log(result.tag); // "name" 141 + ``` 142 + 143 + If the string (Here: "Tim") was parsed successfully by the matcher, it will 144 + return an array that contains the result of the regex. The array is special 145 + in that it will also have a `tag` property set to the matcher's name, here 146 + `"name"`, which we determined when we defined the matcher as `match('name')`. 147 + 148 + ```js 149 + import { parse } from 'reghex'; 150 + parse(name)('42'); // undefined 151 + ``` 152 + 153 + Similarly, if the matcher does not parse an input string successfully, it will 154 + return `undefined` instead. 155 + 156 + ### Nested matchers 157 + 158 + This on its own is nice, but a parser must be able to traverse a string and 159 + turn it into an [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree). 160 + To introduce nesting to `reghex` matchers, we can refer to one matcher in another! 161 + Let's extend our original example; 162 + 163 + ```js 164 + import match from 'reghex'; 165 + 166 + const name = match('name')` 167 + ${/\w+/} 168 + `; 169 + 170 + const hello = match('hello')` 171 + ${/hello /} ${name} 172 + `; 173 + ``` 174 + 175 + The new `hello` matcher is set to match `/hello /` and then attempts to match 176 + the `name` matcher afterwards. If either of these matchers fail, it will return 177 + `undefined` as well and roll back its changes. Using this matcher will give us 178 + **nested abstract output**. 179 + 180 + We can also see in this example that _outside_ of the regex interpolations, 181 + whitespaces and newlines don't matter. 182 + 183 + ```js 184 + import { parse } from 'reghex'; 185 + 186 + parse(hello)('hello tim'); 187 + /* 188 + [ 189 + "hello", 190 + ["tim", .tag = "name"], 191 + .tag = "hello" 192 + ] 193 + */ 194 + ``` 195 + 196 + ### Regex-like DSL 197 + 198 + We've seen in the previous examples that matchers are authored using tagged 199 + template literals, where interpolations can either be filled using regexes, 200 + `${/pattern/}`, or with other matchers `${name}`. 201 + 202 + The tagged template syntax supports more ways to match these interpolations, 203 + using a regex-like Domain Specific Language. Unlike in regexes, whitespaces 204 + and newlines don't matter to make it easier to format and read matchers. 205 + 206 + We can create **sequences** of matchers by adding multiple expressions in 207 + a row. A matcher using `${/1/} ${/2/}` will attempt to match `1` and then `2` 208 + in the parsed string. This is just one feature of the regex-like DSL. The 209 + available operators are the following: 210 + 211 + | Operator | Example | Description | 212 + | -------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 213 + | `?` | `${/1/}?` | An **optional** may be used to make an interpolation optional. This will mean that the interpolation may or may not match. | 214 + | `*` | `${/1/}*` | A **star** can be used to match an arbitrary amount of interpolation or none at all. This will mean that the interpolation may repeat itself or may not be matched at all. | 215 + | `+` | `${/1/}+` | A **plus** is used like `*` and must match one or more times. When the matcher doesn't match, that's considered a failing case, since the match isn't optional. | 216 + | `\|` | `${/1/} \| ${/2/}` | An **alternation** can be used to match either one thing or another, falling back when the first interpolation fails. | 217 + | `()` | `(${/1/} ${/2/})+` | A **group** can be used apply one of the other operators to an entire group of interpolations. | 218 + | `(?: )` | `(?: ${/1/})` | A **non-capturing group** is like a regular group, but whatever the interpolations inside it will match, won't appear in the parser's output. | 219 + | `(?= )` | `(?= ${/1/})` | A **positive lookahead** will check whether interpolations match, and if so will continue the matcher without changing the input. If it matches it's essentially ignored. | 220 + | `(?! )` | `(?! ${/1/})` | A **negative lookahead** will check whether interpolations _don't_ match, and if so will continue the matcher without changing the input. If the interpolations do match the mathcer will be aborted. | 221 + 222 + We can combine and compose these operators to create more complex matchers. 223 + For instance, we can extend the original example to only allow a specific set 224 + of names by using the `|` operator: 225 + 226 + ```js 227 + const name = match('name')` 228 + ${/tim/} | ${/tom/} | ${/tam/} 229 + `; 230 + 231 + parse(name)('tim'); // [ "tim", .tag = "name" ] 232 + parse(name)('tom'); // [ "tom", .tag = "name" ] 233 + parse(name)('patrick'); // undefined 234 + ``` 235 + 236 + The above will now only match specific name strings. When one pattern in this 237 + chain of **alternations** does not match, it will try the next one. 238 + 239 + We can also use **groups** to add more matchers around the alternations themselves, 240 + by surrounding the alternations with `(` and `)` 241 + 242 + ```js 243 + const name = match('name')` 244 + (${/tim/} | ${/tom/}) ${/!/} 245 + `; 246 + 247 + parse(name)('tim!'); // [ "tim", "!", .tag = "name" ] 248 + parse(name)('tom!'); // [ "tom", "!", .tag = "name" ] 249 + parse(name)('tim'); // undefined 250 + ``` 251 + 252 + Maybe we're also not that interested in the `"!"` showing up in the output node. 253 + If we want to get rid of it, we can use a **non-capturing group** to hide it, 254 + while still requiring it. 255 + 256 + ```js 257 + const name = match('name')` 258 + (${/tim/} | ${/tom/}) (?: ${/!/}) 259 + `; 260 + 261 + parse(name)('tim!'); // [ "tim", .tag = "name" ] 262 + parse(name)('tim'); // undefined 263 + ``` 264 + 265 + Lastly, like with regexex `?`, `*`, and `+` may be used as "quantifiers". The first two 266 + may also be optional and _not_ match their patterns without the matcher failing. 267 + The `+` operator is used to match an interpolation _one or more_ times, while the 268 + `*` operators may match _zero or more_ times. Let's use this to allow the `"!"` 269 + to repeat. 270 + 271 + ```js 272 + const name = match('name')` 273 + (${/tim/} | ${/tom/})+ (?: ${/!/})* 274 + `; 275 + 276 + parse(name)('tim!'); // [ "tim", .tag = "name" ] 277 + parse(name)('tim!!!!'); // [ "tim", .tag = "name" ] 278 + parse(name)('tim'); // [ "tim", .tag = "name" ] 279 + parse(name)('timtim'); // [ "tim", tim", .tag = "name" ] 280 + ``` 281 + 282 + As we can see from the above, like in regexes, quantifiers can be combined with groups, 283 + non-capturing groups, or other groups. 284 + 285 + ### Transforming as we match 286 + 287 + In the previous sections, we've seen that the **nodes** that `reghex` outputs are arrays containing 288 + match strings or other nodes and have a special `tag` property with the node's type. 289 + We can **change this output** while we're parsing by passing a second function to our matcher definition. 290 + 291 + ```js 292 + const name = match('name', (x) => x[0])` 293 + (${/tim/} | ${/tom/}) ${/!/} 294 + `; 295 + 296 + parse(name)('tim'); // "tim" 297 + ``` 298 + 299 + In the above example, we're passing a small function, `x => x[0]` to the matcher as a 300 + second argument. This will change the matcher's output, which causes the parser to 301 + now return a new output for this matcher. 302 + 303 + We can use this function creatively by outputting full AST nodes, maybe like the 304 + ones even that resemble Babel's output: 305 + 306 + ```js 307 + const identifier = match('identifier', (x) => ({ 308 + type: 'Identifier', 309 + name: x[0], 310 + }))` 311 + ${/[\w_][\w\d_]+/} 312 + `; 313 + 314 + parse(name)('var_name'); // { type: "Identifier", name: "var_name" } 315 + ``` 316 + 317 + We've now entirely changed the output of the parser for this matcher. Given that each 318 + matcher can change its output, we're free to change the parser's output entirely. 319 + By **returning a falsy** in this matcher, we can also change the matcher to not have 320 + matched, which would cause other matchers to treat it like a mismatch! 321 + 322 + ```js 323 + import match, { parse } from 'reghex'; 324 + 325 + const name = match('name')((x) => { 326 + return x !== 'tim' ? x : undefined; 327 + })` 328 + ${/\w+/} 329 + `; 330 + 331 + const hello = match('hello')` 332 + ${/hello /} ${name} 333 + `; 334 + 335 + parse(name)('tom'); // ["hello", ["tom", .tag = "name"], .tag = "hello"] 336 + parse(name)('tim'); // undefined 337 + ``` 338 + 339 + Lastly, if we need to create these special array nodes ourselves, we can use `reghex`'s 340 + `tag` export for this purpose. 341 + 342 + ```js 343 + import { tag } from 'reghex'; 344 + 345 + tag(['test'], 'node_name'); 346 + // ["test", .tag = "node_name"] 347 + ``` 348 + 349 + **That's it! May the RegExp be ever in your favor.**
+1
babel.js
··· 1 + module.exports = require('./dist/reghex-babel.js').default;
docs/reghex-logo.png

This is a binary file and will not be displayed.

+1
macro.js
··· 1 + module.exports = require('./dist/reghex-macro.js').default;
+85
package.json
··· 1 + { 2 + "name": "reghex", 3 + "version": "1.0.0", 4 + "description": "The magical sticky regex-based parser generator 🧙", 5 + "author": "Phil Pluckthun <phil@kitten.sh>", 6 + "license": "MIT", 7 + "main": "dist/reghex-core", 8 + "module": "dist/reghex-core.mjs", 9 + "source": "src/core.js", 10 + "files": [ 11 + "README.md", 12 + "LICENSE.md", 13 + "dist", 14 + "src", 15 + "babel.js", 16 + "macro.js" 17 + ], 18 + "exports": { 19 + ".": { 20 + "import": "./dist/reghex-core.mjs", 21 + "require": "./dist/reghex-core.js" 22 + }, 23 + "./babel": { 24 + "import": "./dist/reghex-babel.mjs", 25 + "require": "./dist/reghex-babel.js" 26 + }, 27 + "./macro": { 28 + "import": "./dist/reghex-macro.mjs", 29 + "require": "./dist/reghex-macro.js" 30 + }, 31 + "./package.json": "./package.json" 32 + }, 33 + "scripts": { 34 + "prepublishOnly": "run-s clean build test", 35 + "clean": "rimraf dist ./node_modules/.cache", 36 + "build": "rollup -c rollup.config.js", 37 + "test": "jest" 38 + }, 39 + "keywords": [ 40 + "regex", 41 + "sticky regex", 42 + "parser", 43 + "parser generator", 44 + "babel" 45 + ], 46 + "repository": "https://github.com/kitten/reghex", 47 + "bugs": { 48 + "url": "https://github.com/kitten/reghex/issues" 49 + }, 50 + "devDependencies": { 51 + "@babel/core": "7.9.6", 52 + "@babel/plugin-transform-modules-commonjs": "^7.9.6", 53 + "@babel/plugin-transform-object-assign": "^7.8.3", 54 + "@rollup/plugin-buble": "^0.21.3", 55 + "@rollup/plugin-commonjs": "^11.1.0", 56 + "@rollup/plugin-node-resolve": "^7.1.3", 57 + "babel-jest": "^26.0.1", 58 + "babel-plugin-closure-elimination": "^1.3.1", 59 + "husky": "^4.2.5", 60 + "jest": "^26.0.1", 61 + "lint-staged": "^10.2.2", 62 + "npm-run-all": "^4.1.5", 63 + "prettier": "^2.0.5", 64 + "rimraf": "^3.0.2", 65 + "rollup": "^2.10.2", 66 + "rollup-plugin-babel": "^4.4.0" 67 + }, 68 + "prettier": { 69 + "singleQuote": true 70 + }, 71 + "lint-staged": { 72 + "*.{js,jsx,json,md}": "prettier --write" 73 + }, 74 + "husky": { 75 + "hooks": { 76 + "pre-commit": "lint-staged --quiet --relative" 77 + } 78 + }, 79 + "jest": { 80 + "testEnvironment": "node", 81 + "transform": { 82 + "\\.js$": "<rootDir>/scripts/jest-transform-esm.js" 83 + } 84 + } 85 + }
+65
rollup.config.js
··· 1 + import commonjs from '@rollup/plugin-commonjs'; 2 + import resolve from '@rollup/plugin-node-resolve'; 3 + import buble from '@rollup/plugin-buble'; 4 + import babel from 'rollup-plugin-babel'; 5 + 6 + const plugins = [ 7 + commonjs({ 8 + ignoreGlobal: true, 9 + include: ['*', '**'], 10 + extensions: ['.js', '.ts', '.tsx'], 11 + }), 12 + resolve({ 13 + mainFields: ['module', 'jsnext', 'main'], 14 + extensions: ['.js', '.ts', '.tsx'], 15 + browser: true, 16 + }), 17 + buble({ 18 + transforms: { 19 + unicodeRegExp: false, 20 + dangerousForOf: true, 21 + dangerousTaggedTemplateString: true, 22 + }, 23 + objectAssign: 'Object.assign', 24 + exclude: 'node_modules/**', 25 + }), 26 + babel({ 27 + babelrc: false, 28 + extensions: ['ts', 'tsx', 'js'], 29 + exclude: 'node_modules/**', 30 + presets: [], 31 + plugins: [ 32 + '@babel/plugin-transform-object-assign', 33 + 'babel-plugin-closure-elimination', 34 + ], 35 + }), 36 + ]; 37 + 38 + const output = (format = 'cjs', ext = '.js') => ({ 39 + chunkFileNames: '[hash]' + ext, 40 + entryFileNames: 'reghex-[name]' + ext, 41 + dir: './dist', 42 + exports: 'named', 43 + externalLiveBindings: false, 44 + sourcemap: true, 45 + esModule: false, 46 + indent: false, 47 + freeze: false, 48 + strict: false, 49 + format, 50 + }); 51 + 52 + export default { 53 + input: { 54 + core: './src/core.js', 55 + babel: './src/babel/plugin.js', 56 + macro: './src/babel/macro.js', 57 + }, 58 + onwarn: () => {}, 59 + external: () => false, 60 + treeshake: { 61 + propertyReadSideEffects: false, 62 + }, 63 + plugins, 64 + output: [output('cjs', '.js'), output('esm', '.mjs')], 65 + };
+5
scripts/jest-transform-esm.js
··· 1 + const { createTransformer } = require('babel-jest'); 2 + 3 + module.exports = createTransformer({ 4 + plugins: [require.resolve('@babel/plugin-transform-modules-commonjs')], 5 + });
+250
src/babel/__snapshots__/plugin.test.js.snap
··· 1 + // Jest Snapshot v1, https://goo.gl/fbAQLP 2 + 3 + exports[`works together with @babel/plugin-transform-modules-commonjs 1`] = ` 4 + "\\"use strict\\"; 5 + 6 + var _reghex = require(\\"reghex\\"); 7 + 8 + var _node_expression = (0, _reghex._pattern)(1), 9 + _node_expression2 = (0, _reghex._pattern)(2); 10 + 11 + const node = function _node() { 12 + var match, 13 + last_index = (0, _reghex._getLastIndex)(), 14 + node = (0, _reghex.tag)([], 'node'); 15 + 16 + if (match = (0, _reghex._execPattern)(_node_expression)) { 17 + node.push(match); 18 + } else { 19 + (0, _reghex._setLastIndex)(last_index); 20 + return; 21 + } 22 + 23 + if (match = (0, _reghex._execPattern)(_node_expression2)) { 24 + node.push(match); 25 + } else { 26 + (0, _reghex._setLastIndex)(last_index); 27 + return; 28 + } 29 + 30 + return node; 31 + };" 32 + `; 33 + 34 + exports[`works with local recursion 1`] = ` 35 + "import { tag, _getLastIndex, _setLastIndex, _execPattern, _pattern } from 'reghex'; 36 + 37 + var _inner_expression = _pattern(/inner/); 38 + 39 + const inner = function _inner() { 40 + var match, 41 + last_index = _getLastIndex(), 42 + node = tag([], 'inner'); 43 + 44 + if (match = _execPattern(_inner_expression)) { 45 + node.push(match); 46 + } else { 47 + _setLastIndex(last_index); 48 + 49 + return; 50 + } 51 + 52 + return node; 53 + }; 54 + 55 + const node = function _node() { 56 + var match, 57 + last_index = _getLastIndex(), 58 + node = tag([], 'node'); 59 + 60 + if (match = inner()) { 61 + node.push(match); 62 + } else { 63 + _setLastIndex(last_index); 64 + 65 + return; 66 + } 67 + 68 + return node; 69 + };" 70 + `; 71 + 72 + exports[`works with non-capturing groups 1`] = ` 73 + "import { _getLastIndex, _setLastIndex, _execPattern, _pattern, tag as _tag } from 'reghex'; 74 + 75 + var _node_expression = _pattern(1), 76 + _node_expression2 = _pattern(2), 77 + _node_expression3 = _pattern(3); 78 + 79 + const node = function _node() { 80 + var match, 81 + last_index = _getLastIndex(), 82 + node = _tag([], 'node'); 83 + 84 + if (match = _execPattern(_node_expression)) { 85 + node.push(match); 86 + } else { 87 + _setLastIndex(last_index); 88 + 89 + return; 90 + } 91 + 92 + var length_0 = node.length; 93 + 94 + alternation_1: { 95 + block_1: { 96 + var index_1 = _getLastIndex(); 97 + 98 + if (match = _execPattern(_node_expression2)) { 99 + node.push(match); 100 + } else { 101 + node.length = length_0; 102 + 103 + _setLastIndex(index_1); 104 + 105 + break block_1; 106 + } 107 + 108 + break alternation_1; 109 + } 110 + 111 + loop_1: for (var iter_1 = 0; true; iter_1++) { 112 + var index_1 = _getLastIndex(); 113 + 114 + if (!_execPattern(_node_expression3)) { 115 + if (iter_1) { 116 + _setLastIndex(index_1); 117 + 118 + break loop_1; 119 + } 120 + 121 + node.length = length_0; 122 + 123 + _setLastIndex(last_index); 124 + 125 + return; 126 + } 127 + } 128 + } 129 + 130 + return node; 131 + };" 132 + `; 133 + 134 + exports[`works with standard features 1`] = ` 135 + "import { _getLastIndex, _setLastIndex, _execPattern, _pattern, tag as _tag } from \\"reghex\\"; 136 + 137 + var _node_expression = _pattern(1), 138 + _node_expression2 = _pattern(2), 139 + _node_expression3 = _pattern(3), 140 + _node_expression4 = _pattern(4), 141 + _node_expression5 = _pattern(5); 142 + 143 + const node = function _node() { 144 + var match, 145 + last_index = _getLastIndex(), 146 + node = _tag([], 'node'); 147 + 148 + block_0: { 149 + var index_0 = _getLastIndex(); 150 + 151 + loop_0: for (var iter_0 = 0; true; iter_0++) { 152 + var index_0 = _getLastIndex(); 153 + 154 + if (match = _execPattern(_node_expression)) { 155 + node.push(match); 156 + } else { 157 + if (iter_0) { 158 + _setLastIndex(index_0); 159 + 160 + break loop_0; 161 + } 162 + 163 + _setLastIndex(index_0); 164 + 165 + break block_0; 166 + } 167 + } 168 + 169 + return node; 170 + } 171 + 172 + loop_0: for (var iter_0 = 0; true; iter_0++) { 173 + var index_0 = _getLastIndex(); 174 + 175 + if (match = _execPattern(_node_expression2)) { 176 + node.push(match); 177 + } else { 178 + if (iter_0) { 179 + _setLastIndex(index_0); 180 + 181 + break loop_0; 182 + } 183 + 184 + _setLastIndex(last_index); 185 + 186 + return; 187 + } 188 + } 189 + 190 + loop_0: while (true) { 191 + var index_0 = _getLastIndex(); 192 + 193 + var length_0 = node.length; 194 + 195 + if (match = _execPattern(_node_expression3)) { 196 + node.push(match); 197 + } else { 198 + node.length = length_0; 199 + 200 + _setLastIndex(index_0); 201 + 202 + break loop_0; 203 + } 204 + 205 + var index_2 = _getLastIndex(); 206 + 207 + if (match = _execPattern(_node_expression4)) { 208 + node.push(match); 209 + } else { 210 + _setLastIndex(index_2); 211 + } 212 + 213 + if (match = _execPattern(_node_expression5)) { 214 + node.push(match); 215 + } else { 216 + node.length = length_0; 217 + 218 + _setLastIndex(index_0); 219 + 220 + break loop_0; 221 + } 222 + } 223 + 224 + return node; 225 + };" 226 + `; 227 + 228 + exports[`works with transform functions 1`] = ` 229 + "import { _getLastIndex, _setLastIndex, _execPattern, _pattern, tag as _tag } from 'reghex'; 230 + 231 + var _inner_transform = x => x; 232 + 233 + const first = function _inner() { 234 + var match, 235 + last_index = _getLastIndex(), 236 + node = _tag([], 'inner'); 237 + 238 + return _inner_transform(node); 239 + }; 240 + 241 + const transform = x => x; 242 + 243 + const second = function _node() { 244 + var match, 245 + last_index = _getLastIndex(), 246 + node = _tag([], 'node'); 247 + 248 + return transform(node); 249 + };" 250 + `;
+573
src/babel/__tests__/suite.js
··· 1 + import * as reghex from '../../..'; 2 + import * as types from '@babel/types'; 3 + import { transform } from '@babel/core'; 4 + import { makeHelpers } from '../transform'; 5 + 6 + const match = (name) => (quasis, ...expressions) => { 7 + const helpers = makeHelpers(types); 8 + 9 + let str = ''; 10 + for (let i = 0; i < quasis.length; i++) { 11 + str += quasis[i]; 12 + if (i < expressions.length) str += '${' + expressions[i].toString() + '}'; 13 + } 14 + 15 + const template = `(function () { return match('${name}')\`${str}\`; })()`; 16 + 17 + const testPlugin = () => ({ 18 + visitor: { 19 + TaggedTemplateExpression(path) { 20 + helpers.transformMatch(path); 21 + }, 22 + }, 23 + }); 24 + 25 + const { code } = transform(template, { 26 + babelrc: false, 27 + presets: [], 28 + plugins: [testPlugin], 29 + }); 30 + 31 + const argKeys = Object.keys(reghex).filter((x) => { 32 + return x.startsWith('_') || x === 'tag'; 33 + }); 34 + 35 + const args = argKeys.map((key) => reghex[key]); 36 + return new Function(...argKeys, 'return ' + code)(...args); 37 + }; 38 + 39 + const expectToParse = (node, input, result, lastIndex = 0) => { 40 + expect(reghex.parse(node)(input)).toEqual( 41 + result === undefined ? result : reghex.tag(result, 'node') 42 + ); 43 + 44 + // NOTE: After parsing we expect the current index to exactly match the 45 + // sum amount of matched characters 46 + if (result === undefined) { 47 + expect(reghex._getLastIndex()).toBe(0); 48 + } else { 49 + const index = lastIndex || result.reduce((acc, x) => acc + x.length, 0); 50 + expect(reghex._getLastIndex()).toBe(index); 51 + } 52 + }; 53 + 54 + describe('required matcher', () => { 55 + const node = match('node')`${/1/}`; 56 + it.each` 57 + input | result 58 + ${'1'} | ${['1']} 59 + ${''} | ${undefined} 60 + `('should return $result when $input is passed', ({ input, result }) => { 61 + expectToParse(node, input, result); 62 + }); 63 + }); 64 + 65 + describe('optional matcher', () => { 66 + const node = match('node')`${/1/}?`; 67 + it.each` 68 + input | result 69 + ${'1'} | ${['1']} 70 + ${'_'} | ${[]} 71 + ${''} | ${[]} 72 + `('should return $result when $input is passed', ({ input, result }) => { 73 + expectToParse(node, input, result); 74 + }); 75 + }); 76 + 77 + describe('star matcher', () => { 78 + const node = match('node')`${/1/}*`; 79 + it.each` 80 + input | result 81 + ${'1'} | ${['1']} 82 + ${'11'} | ${['1', '1']} 83 + ${'111'} | ${['1', '1', '1']} 84 + ${'_'} | ${[]} 85 + ${''} | ${[]} 86 + `('should return $result when "$input" is passed', ({ input, result }) => { 87 + expectToParse(node, input, result); 88 + }); 89 + }); 90 + 91 + describe('plus matcher', () => { 92 + const node = match('node')`${/1/}+`; 93 + it.each` 94 + input | result 95 + ${'1'} | ${['1']} 96 + ${'11'} | ${['1', '1']} 97 + ${'111'} | ${['1', '1', '1']} 98 + ${'_'} | ${undefined} 99 + ${''} | ${undefined} 100 + `('should return $result when "$input" is passed', ({ input, result }) => { 101 + expectToParse(node, input, result); 102 + }); 103 + }); 104 + 105 + describe('optional then required matcher', () => { 106 + const node = match('node')`${/1/}? ${/2/}`; 107 + it.each` 108 + input | result 109 + ${'12'} | ${['1', '2']} 110 + ${'2'} | ${['2']} 111 + ${''} | ${undefined} 112 + `('should return $result when $input is passed', ({ input, result }) => { 113 + expectToParse(node, input, result); 114 + }); 115 + }); 116 + 117 + describe('star then required matcher', () => { 118 + const node = match('node')`${/1/}* ${/2/}`; 119 + it.each` 120 + input | result 121 + ${'12'} | ${['1', '2']} 122 + ${'112'} | ${['1', '1', '2']} 123 + ${'2'} | ${['2']} 124 + ${''} | ${undefined} 125 + `('should return $result when $input is passed', ({ input, result }) => { 126 + expectToParse(node, input, result); 127 + }); 128 + }); 129 + 130 + describe('plus then required matcher', () => { 131 + const node = match('node')`${/1/}+ ${/2/}`; 132 + it.each` 133 + input | result 134 + ${'12'} | ${['1', '2']} 135 + ${'112'} | ${['1', '1', '2']} 136 + ${'2'} | ${undefined} 137 + ${''} | ${undefined} 138 + `('should return $result when $input is passed', ({ input, result }) => { 139 + expectToParse(node, input, result); 140 + }); 141 + }); 142 + 143 + describe('optional group then required matcher', () => { 144 + const node = match('node')`(${/1/} ${/2/})? ${/3/}`; 145 + it.each` 146 + input | result 147 + ${'123'} | ${['1', '2', '3']} 148 + ${'3'} | ${['3']} 149 + ${'_'} | ${undefined} 150 + `('should return $result when $input is passed', ({ input, result }) => { 151 + expectToParse(node, input, result); 152 + }); 153 + }); 154 + 155 + describe('star group then required matcher', () => { 156 + const node = match('node')`(${/1/} ${/2/})* ${/3/}`; 157 + it.each` 158 + input | result 159 + ${'123'} | ${['1', '2', '3']} 160 + ${'12123'} | ${['1', '2', '1', '2', '3']} 161 + ${'3'} | ${['3']} 162 + ${'13'} | ${undefined} 163 + ${'_'} | ${undefined} 164 + `('should return $result when $input is passed', ({ input, result }) => { 165 + expectToParse(node, input, result); 166 + }); 167 + }); 168 + 169 + describe('plus group then required matcher', () => { 170 + const node = match('node')`(${/1/} ${/2/})+ ${/3/}`; 171 + it.each` 172 + input | result 173 + ${'123'} | ${['1', '2', '3']} 174 + ${'12123'} | ${['1', '2', '1', '2', '3']} 175 + ${'3'} | ${undefined} 176 + ${'13'} | ${undefined} 177 + ${'_'} | ${undefined} 178 + `('should return $result when $input is passed', ({ input, result }) => { 179 + expectToParse(node, input, result); 180 + }); 181 + }); 182 + 183 + describe('optional group with nested optional matcher, then required matcher', () => { 184 + const node = match('node')`(${/1/}? ${/2/})? ${/3/}`; 185 + it.each` 186 + input | result 187 + ${'123'} | ${['1', '2', '3']} 188 + ${'23'} | ${['2', '3']} 189 + ${'3'} | ${['3']} 190 + ${'13'} | ${undefined} 191 + ${'_'} | ${undefined} 192 + `('should return $result when $input is passed', ({ input, result }) => { 193 + expectToParse(node, input, result); 194 + }); 195 + }); 196 + 197 + describe('star group with nested optional matcher, then required matcher', () => { 198 + const node = match('node')`(${/1/}? ${/2/})* ${/3/}`; 199 + it.each` 200 + input | result 201 + ${'123'} | ${['1', '2', '3']} 202 + ${'23'} | ${['2', '3']} 203 + ${'223'} | ${['2', '2', '3']} 204 + ${'2123'} | ${['2', '1', '2', '3']} 205 + ${'3'} | ${['3']} 206 + ${'13'} | ${undefined} 207 + ${'_'} | ${undefined} 208 + `('should return $result when $input is passed', ({ input, result }) => { 209 + expectToParse(node, input, result); 210 + }); 211 + }); 212 + 213 + describe('plus group with nested optional matcher, then required matcher', () => { 214 + const node = match('node')`(${/1/}? ${/2/})+ ${/3/}`; 215 + it.each` 216 + input | result 217 + ${'123'} | ${['1', '2', '3']} 218 + ${'23'} | ${['2', '3']} 219 + ${'223'} | ${['2', '2', '3']} 220 + ${'2123'} | ${['2', '1', '2', '3']} 221 + ${'3'} | ${undefined} 222 + ${'13'} | ${undefined} 223 + ${'_'} | ${undefined} 224 + `('should return $result when $input is passed', ({ input, result }) => { 225 + expectToParse(node, input, result); 226 + }); 227 + }); 228 + 229 + describe('plus group with nested plus matcher, then required matcher', () => { 230 + const node = match('node')`(${/1/}+ ${/2/})+ ${/3/}`; 231 + it.each` 232 + input | result 233 + ${'123'} | ${['1', '2', '3']} 234 + ${'1123'} | ${['1', '1', '2', '3']} 235 + ${'12123'} | ${['1', '2', '1', '2', '3']} 236 + ${'121123'} | ${['1', '2', '1', '1', '2', '3']} 237 + ${'3'} | ${undefined} 238 + ${'23'} | ${undefined} 239 + ${'13'} | ${undefined} 240 + ${'_'} | ${undefined} 241 + `('should return $result when $input is passed', ({ input, result }) => { 242 + expectToParse(node, input, result); 243 + }); 244 + }); 245 + 246 + describe('plus group with nested required and plus matcher, then required matcher', () => { 247 + const node = match('node')`(${/1/} ${/2/}+)+ ${/3/}`; 248 + it.each` 249 + input | result 250 + ${'123'} | ${['1', '2', '3']} 251 + ${'1223'} | ${['1', '2', '2', '3']} 252 + ${'122123'} | ${['1', '2', '2', '1', '2', '3']} 253 + ${'13'} | ${undefined} 254 + ${'_'} | ${undefined} 255 + `('should return $result when $input is passed', ({ input, result }) => { 256 + expectToParse(node, input, result); 257 + }); 258 + }); 259 + 260 + describe('nested plus group with nested required and plus matcher, then required matcher or alternate', () => { 261 + const node = match('node')`(${/1/} ${/2/}+)+ ${/3/} | ${/1/}`; 262 + it.each` 263 + input | result 264 + ${'123'} | ${['1', '2', '3']} 265 + ${'1223'} | ${['1', '2', '2', '3']} 266 + ${'122123'} | ${['1', '2', '2', '1', '2', '3']} 267 + ${'1'} | ${['1']} 268 + ${'13'} | ${['1']} 269 + ${'_'} | ${undefined} 270 + `('should return $result when $input is passed', ({ input, result }) => { 271 + expectToParse(node, input, result); 272 + }); 273 + }); 274 + 275 + describe('nested plus group with nested required and plus matcher, then alternate', () => { 276 + const node = match('node')`(${/1/} ${/2/}+)+ (${/3/} | ${/4/})`; 277 + it.each` 278 + input | result 279 + ${'123'} | ${['1', '2', '3']} 280 + ${'124'} | ${['1', '2', '4']} 281 + ${'1223'} | ${['1', '2', '2', '3']} 282 + ${'1224'} | ${['1', '2', '2', '4']} 283 + ${'1'} | ${undefined} 284 + ${'13'} | ${undefined} 285 + ${'_'} | ${undefined} 286 + `('should return $result when $input is passed', ({ input, result }) => { 287 + expectToParse(node, input, result); 288 + }); 289 + }); 290 + 291 + describe('regular alternate', () => { 292 + const node = match('node')`${/1/} | ${/2/} | ${/3/} | ${/4/}`; 293 + it.each` 294 + input | result 295 + ${'1'} | ${['1']} 296 + ${'2'} | ${['2']} 297 + ${'3'} | ${['3']} 298 + ${'4'} | ${['4']} 299 + ${'_'} | ${undefined} 300 + `('should return $result when $input is passed', ({ input, result }) => { 301 + expectToParse(node, input, result); 302 + }); 303 + }); 304 + 305 + describe('nested alternate in nested alternate in alternate', () => { 306 + const node = match('node')`((${/1/} | ${/2/}) | ${/3/}) | ${/4/}`; 307 + it.each` 308 + input | result 309 + ${'1'} | ${['1']} 310 + ${'2'} | ${['2']} 311 + ${'3'} | ${['3']} 312 + ${'4'} | ${['4']} 313 + ${'_'} | ${undefined} 314 + `('should return $result when $input is passed', ({ input, result }) => { 315 + expectToParse(node, input, result); 316 + }); 317 + }); 318 + 319 + describe('alternate after required matcher', () => { 320 + const node = match('node')`${/1/} (${/2/} | ${/3/})`; 321 + it.each` 322 + input | result 323 + ${'12'} | ${['1', '2']} 324 + ${'13'} | ${['1', '3']} 325 + ${'14'} | ${undefined} 326 + ${'3'} | ${undefined} 327 + ${'_'} | ${undefined} 328 + `('should return $result when $input is passed', ({ input, result }) => { 329 + expectToParse(node, input, result); 330 + }); 331 + }); 332 + 333 + describe('alternate with star group and required matcher after required matcher', () => { 334 + const node = match('node')`${/1/} (${/2/}* ${/3/} | ${/4/})`; 335 + it.each` 336 + input | result 337 + ${'123'} | ${['1', '2', '3']} 338 + ${'1223'} | ${['1', '2', '2', '3']} 339 + ${'13'} | ${['1', '3']} 340 + ${'14'} | ${['1', '4']} 341 + ${'12'} | ${undefined} 342 + ${'15'} | ${undefined} 343 + ${'_'} | ${undefined} 344 + `('should return $result when $input is passed', ({ input, result }) => { 345 + expectToParse(node, input, result); 346 + }); 347 + }); 348 + 349 + describe('alternate with plus group and required matcher after required matcher', () => { 350 + const node = match('node')`${/1/} (${/2/}+ ${/3/} | ${/4/})`; 351 + it.each` 352 + input | result 353 + ${'123'} | ${['1', '2', '3']} 354 + ${'1223'} | ${['1', '2', '2', '3']} 355 + ${'14'} | ${['1', '4']} 356 + ${'13'} | ${undefined} 357 + ${'12'} | ${undefined} 358 + ${'15'} | ${undefined} 359 + ${'_'} | ${undefined} 360 + `('should return $result when $input is passed', ({ input, result }) => { 361 + expectToParse(node, input, result); 362 + }); 363 + }); 364 + 365 + describe('alternate with optional and required matcher after required matcher', () => { 366 + const node = match('node')`${/1/} (${/2/}? ${/3/} | ${/4/})`; 367 + it.each` 368 + input | result 369 + ${'123'} | ${['1', '2', '3']} 370 + ${'13'} | ${['1', '3']} 371 + ${'14'} | ${['1', '4']} 372 + ${'12'} | ${undefined} 373 + ${'15'} | ${undefined} 374 + ${'_'} | ${undefined} 375 + `('should return $result when $input is passed', ({ input, result }) => { 376 + expectToParse(node, input, result); 377 + }); 378 + }); 379 + 380 + describe('non-capturing group', () => { 381 + const node = match('node')`${/1/} (?: ${/2/}+)`; 382 + it.each` 383 + input | result | lastIndex 384 + ${'12'} | ${['1']} | ${2} 385 + ${'122'} | ${['1']} | ${3} 386 + ${'13'} | ${undefined} | ${0} 387 + ${'1'} | ${undefined} | ${0} 388 + ${'_'} | ${undefined} | ${0} 389 + `( 390 + 'should return $result when $input is passed', 391 + ({ input, result, lastIndex }) => { 392 + expectToParse(node, input, result, lastIndex); 393 + } 394 + ); 395 + }); 396 + 397 + describe('non-capturing group with plus matcher, then required matcher', () => { 398 + const node = match('node')`(?: ${/1/}+) ${/2/}`; 399 + it.each` 400 + input | result | lastIndex 401 + ${'12'} | ${['2']} | ${2} 402 + ${'112'} | ${['2']} | ${3} 403 + ${'1'} | ${undefined} | ${0} 404 + ${'13'} | ${undefined} | ${0} 405 + ${'2'} | ${undefined} | ${0} 406 + ${'_'} | ${undefined} | ${0} 407 + `( 408 + 'should return $result when $input is passed', 409 + ({ input, result, lastIndex }) => { 410 + expectToParse(node, input, result, lastIndex); 411 + } 412 + ); 413 + }); 414 + 415 + describe('non-capturing group with star group and required matcher, then required matcher', () => { 416 + const node = match('node')`(?: ${/1/}* ${/2/}) ${/3/}`; 417 + it.each` 418 + input | result | lastIndex 419 + ${'123'} | ${['3']} | ${3} 420 + ${'1123'} | ${['3']} | ${4} 421 + ${'23'} | ${['3']} | ${2} 422 + ${'13'} | ${undefined} | ${0} 423 + ${'2'} | ${undefined} | ${0} 424 + ${'_'} | ${undefined} | ${0} 425 + `( 426 + 'should return $result when $input is passed', 427 + ({ input, result, lastIndex }) => { 428 + expectToParse(node, input, result, lastIndex); 429 + } 430 + ); 431 + }); 432 + 433 + describe('non-capturing group with plus group and required matcher, then required matcher', () => { 434 + const node = match('node')`(?: ${/1/}+ ${/2/}) ${/3/}`; 435 + it.each` 436 + input | result | lastIndex 437 + ${'123'} | ${['3']} | ${3} 438 + ${'1123'} | ${['3']} | ${4} 439 + ${'23'} | ${undefined} | ${0} 440 + ${'13'} | ${undefined} | ${0} 441 + ${'2'} | ${undefined} | ${0} 442 + ${'_'} | ${undefined} | ${0} 443 + `( 444 + 'should return $result when $input is passed', 445 + ({ input, result, lastIndex }) => { 446 + expectToParse(node, input, result, lastIndex); 447 + } 448 + ); 449 + }); 450 + 451 + describe('non-capturing group with optional and required matcher, then required matcher', () => { 452 + const node = match('node')`(?: ${/1/}? ${/2/}) ${/3/}`; 453 + it.each` 454 + input | result | lastIndex 455 + ${'123'} | ${['3']} | ${3} 456 + ${'23'} | ${['3']} | ${2} 457 + ${'13'} | ${undefined} | ${0} 458 + ${'2'} | ${undefined} | ${0} 459 + ${'_'} | ${undefined} | ${0} 460 + `( 461 + 'should return $result when $input is passed', 462 + ({ input, result, lastIndex }) => { 463 + expectToParse(node, input, result, lastIndex); 464 + } 465 + ); 466 + }); 467 + 468 + describe('positive lookahead group', () => { 469 + const node = match('node')`(?= ${/1/}) ${/\d/}`; 470 + it.each` 471 + input | result | lastIndex 472 + ${'1'} | ${['1']} | ${1} 473 + ${'13'} | ${['1']} | ${1} 474 + ${'2'} | ${undefined} | ${0} 475 + ${'_'} | ${undefined} | ${0} 476 + `( 477 + 'should return $result when $input is passed', 478 + ({ input, result, lastIndex }) => { 479 + expectToParse(node, input, result, lastIndex); 480 + } 481 + ); 482 + }); 483 + 484 + describe('positive lookahead group with plus matcher', () => { 485 + const node = match('node')`(?= ${/1/}+) ${/\d/}`; 486 + it.each` 487 + input | result | lastIndex 488 + ${'1'} | ${['1']} | ${1} 489 + ${'11'} | ${['1']} | ${1} 490 + ${'12'} | ${['1']} | ${1} 491 + ${'22'} | ${undefined} | ${0} 492 + ${'2'} | ${undefined} | ${0} 493 + ${'_'} | ${undefined} | ${0} 494 + `( 495 + 'should return $result when $input is passed', 496 + ({ input, result, lastIndex }) => { 497 + expectToParse(node, input, result, lastIndex); 498 + } 499 + ); 500 + }); 501 + 502 + describe('positive lookahead group with plus group and required matcher', () => { 503 + const node = match('node')`(?= ${/1/}+ ${/2/}) ${/\d/}`; 504 + it.each` 505 + input | result | lastIndex 506 + ${'12'} | ${['1']} | ${1} 507 + ${'112'} | ${['1']} | ${1} 508 + ${'1123'} | ${['1']} | ${1} 509 + ${'2'} | ${undefined} | ${0} 510 + ${'1'} | ${undefined} | ${0} 511 + ${'2'} | ${undefined} | ${0} 512 + ${'_'} | ${undefined} | ${0} 513 + `( 514 + 'should return $result when $input is passed', 515 + ({ input, result, lastIndex }) => { 516 + expectToParse(node, input, result, lastIndex); 517 + } 518 + ); 519 + }); 520 + 521 + describe('negative lookahead group', () => { 522 + const node = match('node')`(?! ${/1/}) ${/\d/}`; 523 + it.each` 524 + input | result | lastIndex 525 + ${'2'} | ${['2']} | ${1} 526 + ${'23'} | ${['2']} | ${1} 527 + ${'1'} | ${undefined} | ${0} 528 + ${'1'} | ${undefined} | ${0} 529 + ${'_'} | ${undefined} | ${0} 530 + `( 531 + 'should return $result when $input is passed', 532 + ({ input, result, lastIndex }) => { 533 + expectToParse(node, input, result, lastIndex); 534 + } 535 + ); 536 + }); 537 + 538 + describe('negative lookahead group with plus matcher', () => { 539 + const node = match('node')`(?! ${/1/}+) ${/\d/}`; 540 + it.each` 541 + input | result | lastIndex 542 + ${'2'} | ${['2']} | ${1} 543 + ${'21'} | ${['2']} | ${1} 544 + ${'22'} | ${['2']} | ${1} 545 + ${'11'} | ${undefined} | ${0} 546 + ${'1'} | ${undefined} | ${0} 547 + ${'_'} | ${undefined} | ${0} 548 + `( 549 + 'should return $result when $input is passed', 550 + ({ input, result, lastIndex }) => { 551 + expectToParse(node, input, result, lastIndex); 552 + } 553 + ); 554 + }); 555 + 556 + describe('negative lookahead group with plus group and required matcher', () => { 557 + const node = match('node')`(?! ${/1/}+ ${/2/}) ${/\d/}`; 558 + it.each` 559 + input | result | lastIndex 560 + ${'21'} | ${['2']} | ${1} 561 + ${'211'} | ${['2']} | ${1} 562 + ${'113'} | ${['1']} | ${1} 563 + ${'1'} | ${['1']} | ${1} 564 + ${'112'} | ${undefined} | ${0} 565 + ${'12'} | ${undefined} | ${0} 566 + ${'_'} | ${undefined} | ${0} 567 + `( 568 + 'should return $result when $input is passed', 569 + ({ input, result, lastIndex }) => { 570 + expectToParse(node, input, result, lastIndex); 571 + } 572 + ); 573 + });
+411
src/babel/generator.js
··· 1 + let t; 2 + let ids = {}; 3 + 4 + export function initGenerator(_ids, _t) { 5 + ids = _ids; 6 + t = _t; 7 + } 8 + 9 + /** var id = getLastIndex(); */ 10 + class AssignIndexNode { 11 + constructor(id) { 12 + this.id = id; 13 + } 14 + 15 + statement() { 16 + const call = t.callExpression(ids.getLastIndex, []); 17 + return t.variableDeclaration('var', [t.variableDeclarator(this.id, call)]); 18 + } 19 + } 20 + 21 + /** setLastIndex(id); */ 22 + class RestoreIndexNode { 23 + constructor(id) { 24 + this.id = id; 25 + } 26 + 27 + statement() { 28 + const expression = t.callExpression(ids.setLastIndex, [this.id]); 29 + return t.expressionStatement(expression); 30 + } 31 + } 32 + 33 + /** var id = node.length; */ 34 + class AssignLengthNode { 35 + constructor(id) { 36 + this.id = id; 37 + } 38 + 39 + statement() { 40 + return t.variableDeclaration('var', [ 41 + t.variableDeclarator( 42 + this.id, 43 + t.memberExpression(ids.node, t.identifier('length')) 44 + ), 45 + ]); 46 + } 47 + } 48 + 49 + /** node.length = id; */ 50 + class RestoreLengthNode { 51 + constructor(id) { 52 + this.id = id; 53 + } 54 + 55 + statement() { 56 + const expression = t.assignmentExpression( 57 + '=', 58 + t.memberExpression(ids.node, t.identifier('length')), 59 + this.id 60 + ); 61 + 62 + return t.expressionStatement(expression); 63 + } 64 + } 65 + 66 + /** return; break id; */ 67 + class AbortNode { 68 + constructor(id) { 69 + this.id = id || null; 70 + } 71 + 72 + statement() { 73 + const statement = this.id ? t.breakStatement(this.id) : t.returnStatement(); 74 + return statement; 75 + } 76 + } 77 + 78 + /** if (condition) { return; break id; } */ 79 + class AbortConditionNode { 80 + constructor(condition, opts) { 81 + this.condition = condition || null; 82 + 83 + this.abort = opts.abort; 84 + this.abortCondition = opts.abortCondition || null; 85 + this.restoreIndex = opts.restoreIndex; 86 + } 87 + 88 + statement() { 89 + return t.ifStatement( 90 + this.condition, 91 + t.blockStatement( 92 + [this.restoreIndex.statement(), this.abort.statement()].filter(Boolean) 93 + ), 94 + this.abortCondition ? this.abortCondition.statement() : null 95 + ); 96 + } 97 + } 98 + 99 + /** Generates a full matcher for an expression */ 100 + class ExpressionNode { 101 + constructor(ast, depth, opts) { 102 + this.ast = ast; 103 + this.depth = depth || 0; 104 + this.capturing = !!opts.capturing; 105 + this.restoreIndex = opts.restoreIndex; 106 + this.restoreLength = opts.restoreLength || null; 107 + this.abortCondition = opts.abortCondition || null; 108 + this.abort = opts.abort || null; 109 + } 110 + 111 + statements() { 112 + const execMatch = this.ast.expression; 113 + const assignMatch = t.assignmentExpression('=', ids.match, execMatch); 114 + 115 + const successNodes = t.blockStatement([ 116 + t.expressionStatement( 117 + t.callExpression(t.memberExpression(ids.node, t.identifier('push')), [ 118 + ids.match, 119 + ]) 120 + ), 121 + ]); 122 + 123 + const abortNodes = t.blockStatement( 124 + [ 125 + this.abortCondition && this.abortCondition.statement(), 126 + this.abort && this.restoreLength && this.restoreLength.statement(), 127 + this.restoreIndex && this.restoreIndex.statement(), 128 + this.abort && this.abort.statement(), 129 + ].filter(Boolean) 130 + ); 131 + 132 + return [ 133 + !this.capturing 134 + ? t.ifStatement(t.unaryExpression('!', execMatch), abortNodes) 135 + : t.ifStatement(assignMatch, successNodes, abortNodes), 136 + ]; 137 + } 138 + } 139 + 140 + /** Generates a full matcher for a group */ 141 + class GroupNode { 142 + constructor(ast, depth, opts) { 143 + this.ast = ast; 144 + this.depth = depth || 0; 145 + if (ast.sequence.length === 1) { 146 + return new ExpressionNode(ast.sequence[0], depth, opts); 147 + } 148 + 149 + const lengthId = t.identifier(`length_${depth}`); 150 + const childOpts = { 151 + ...opts, 152 + capturing: !!opts.capturing && !!ast.capturing, 153 + }; 154 + 155 + this.assignLength = null; 156 + if (!childOpts.restoreLength && childOpts.capturing) { 157 + this.assignLength = new AssignLengthNode(lengthId); 158 + childOpts.restoreLength = new RestoreLengthNode(lengthId); 159 + } 160 + 161 + this.alternation = new AlternationNode(ast.sequence, depth + 1, childOpts); 162 + } 163 + 164 + statements() { 165 + return [ 166 + this.assignLength && this.assignLength.statement(), 167 + ...this.alternation.statements(), 168 + ].filter(Boolean); 169 + } 170 + } 171 + 172 + /** Generates looping logic around another group or expression matcher */ 173 + class QuantifierNode { 174 + constructor(ast, depth, opts) { 175 + const { quantifier } = ast; 176 + this.ast = ast; 177 + this.depth = depth || 0; 178 + 179 + const invertId = t.identifier(`invert_${this.depth}`); 180 + const loopId = t.identifier(`loop_${this.depth}`); 181 + const iterId = t.identifier(`iter_${this.depth}`); 182 + const indexId = t.identifier(`index_${this.depth}`); 183 + const ChildNode = ast.type === 'group' ? GroupNode : ExpressionNode; 184 + const childOpts = { ...opts }; 185 + 186 + this.assignIndex = null; 187 + this.restoreIndex = null; 188 + this.blockId = null; 189 + this.abort = null; 190 + if (ast.type === 'group' && !!ast.lookahead) { 191 + this.restoreIndex = new RestoreIndexNode(indexId); 192 + this.assignIndex = new AssignIndexNode(indexId); 193 + childOpts.restoreIndex = null; 194 + } 195 + 196 + if (ast.type === 'group' && ast.lookahead === 'negative') { 197 + this.blockId = invertId; 198 + this.abort = opts.abort; 199 + childOpts.abort = new AbortNode(invertId); 200 + } 201 + 202 + if (quantifier && !quantifier.singular && quantifier.required) { 203 + childOpts.abortCondition = new AbortConditionNode(iterId, { 204 + ...opts, 205 + restoreIndex: new RestoreIndexNode(indexId), 206 + abort: new AbortNode(loopId), 207 + }); 208 + } else if (quantifier && !quantifier.singular) { 209 + childOpts.restoreLength = null; 210 + childOpts.restoreIndex = new RestoreIndexNode(indexId); 211 + childOpts.abort = new AbortNode(loopId); 212 + childOpts.abortCondition = null; 213 + } else if (quantifier && !quantifier.required) { 214 + childOpts.restoreIndex = new RestoreIndexNode(indexId); 215 + childOpts.abortCondition = null; 216 + childOpts.abort = null; 217 + } 218 + 219 + this.childNode = new ChildNode(ast, depth, childOpts); 220 + } 221 + 222 + statements() { 223 + const { quantifier } = this.ast; 224 + const loopId = t.identifier(`loop_${this.depth}`); 225 + const iterId = t.identifier(`iter_${this.depth}`); 226 + const indexId = t.identifier(`index_${this.depth}`); 227 + const getLastIndex = t.callExpression(ids.getLastIndex, []); 228 + 229 + let statements; 230 + if (quantifier && !quantifier.singular && quantifier.required) { 231 + statements = [ 232 + t.labeledStatement( 233 + loopId, 234 + t.forStatement( 235 + t.variableDeclaration('var', [ 236 + t.variableDeclarator(iterId, t.numericLiteral(0)), 237 + ]), 238 + t.booleanLiteral(true), 239 + t.updateExpression('++', iterId), 240 + t.blockStatement([ 241 + t.variableDeclaration('var', [ 242 + t.variableDeclarator(indexId, getLastIndex), 243 + ]), 244 + ...this.childNode.statements(), 245 + ]) 246 + ) 247 + ), 248 + ]; 249 + } else if (quantifier && !quantifier.singular) { 250 + statements = [ 251 + t.labeledStatement( 252 + loopId, 253 + t.whileStatement( 254 + t.booleanLiteral(true), 255 + t.blockStatement([ 256 + t.variableDeclaration('var', [ 257 + t.variableDeclarator(indexId, getLastIndex), 258 + ]), 259 + ...this.childNode.statements(), 260 + ]) 261 + ) 262 + ), 263 + ]; 264 + } else if (quantifier && !quantifier.required) { 265 + statements = [ 266 + t.variableDeclaration('var', [ 267 + t.variableDeclarator(indexId, getLastIndex), 268 + ]), 269 + ...this.childNode.statements(), 270 + ]; 271 + } else { 272 + statements = this.childNode.statements(); 273 + } 274 + 275 + if (this.restoreIndex && this.assignIndex) { 276 + statements.unshift(this.assignIndex.statement()); 277 + statements.push(this.restoreIndex.statement()); 278 + } 279 + 280 + if (this.blockId) { 281 + statements = [ 282 + t.labeledStatement( 283 + this.blockId, 284 + t.blockStatement([...statements, this.abort.statement()]) 285 + ), 286 + ]; 287 + } 288 + 289 + return statements; 290 + } 291 + } 292 + 293 + /** Generates a matcher of a sequence of sub-matchers for a single sequence */ 294 + class SequenceNode { 295 + constructor(ast, depth, opts) { 296 + this.ast = ast; 297 + this.depth = depth || 0; 298 + 299 + const indexId = t.identifier(`index_${depth}`); 300 + const blockId = t.identifier(`block_${this.depth}`); 301 + 302 + this.returnStatement = opts.returnStatement; 303 + this.assignIndex = ast.alternation ? new AssignIndexNode(indexId) : null; 304 + 305 + this.quantifiers = ast.sequence.map((childAst) => { 306 + return new QuantifierNode(childAst, depth, { 307 + ...opts, 308 + restoreIndex: ast.alternation 309 + ? new RestoreIndexNode(indexId) 310 + : opts.restoreIndex, 311 + abortCondition: ast.alternation ? null : opts.abortCondition, 312 + abort: ast.alternation ? new AbortNode(blockId) : opts.abort, 313 + }); 314 + }); 315 + } 316 + 317 + statements() { 318 + const blockId = t.identifier(`block_${this.depth}`); 319 + const alternationId = t.identifier(`alternation_${this.depth}`); 320 + const statements = this.quantifiers.reduce((block, node) => { 321 + block.push(...node.statements()); 322 + return block; 323 + }, []); 324 + 325 + if (!this.ast.alternation) { 326 + return statements; 327 + } 328 + 329 + const abortNode = 330 + this.depth === 0 ? this.returnStatement : t.breakStatement(alternationId); 331 + 332 + return [ 333 + t.labeledStatement( 334 + blockId, 335 + t.blockStatement([ 336 + this.assignIndex && this.assignIndex.statement(), 337 + ...statements, 338 + abortNode, 339 + ]) 340 + ), 341 + ]; 342 + } 343 + } 344 + 345 + /** Generates matchers for sequences with (or without) alternations */ 346 + class AlternationNode { 347 + constructor(ast, depth, opts) { 348 + this.ast = ast; 349 + this.depth = depth || 0; 350 + this.sequences = []; 351 + for (let current = ast; current; current = current.alternation) { 352 + this.sequences.push(new SequenceNode(current, depth, opts)); 353 + } 354 + } 355 + 356 + statements() { 357 + if (this.sequences.length === 1) { 358 + return this.sequences[0].statements(); 359 + } 360 + 361 + const statements = []; 362 + for (let i = 0; i < this.sequences.length; i++) { 363 + statements.push(...this.sequences[i].statements()); 364 + } 365 + 366 + if (this.depth === 0) { 367 + return statements; 368 + } 369 + 370 + const alternationId = t.identifier(`alternation_${this.depth}`); 371 + return [t.labeledStatement(alternationId, t.blockStatement(statements))]; 372 + } 373 + } 374 + 375 + export class RootNode { 376 + constructor(ast, nameNode, transformNode) { 377 + const indexId = t.identifier('last_index'); 378 + 379 + this.returnStatement = t.returnStatement( 380 + transformNode ? t.callExpression(transformNode, [ids.node]) : ids.node 381 + ); 382 + 383 + this.nameNode = nameNode; 384 + this.node = new AlternationNode(ast, 0, { 385 + returnStatement: this.returnStatement, 386 + restoreIndex: new RestoreIndexNode(indexId, true), 387 + restoreLength: null, 388 + abortCondition: null, 389 + abort: new AbortNode(), 390 + capturing: true, 391 + }); 392 + } 393 + 394 + statements() { 395 + const indexId = t.identifier('last_index'); 396 + const getLastIndex = t.callExpression(ids.getLastIndex, []); 397 + 398 + return [ 399 + t.variableDeclaration('var', [ 400 + t.variableDeclarator(ids.match), 401 + t.variableDeclarator(indexId, getLastIndex), 402 + t.variableDeclarator( 403 + ids.node, 404 + t.callExpression(ids.tag, [t.arrayExpression(), this.nameNode]) 405 + ), 406 + ]), 407 + ...this.node.statements(), 408 + this.returnStatement, 409 + ]; 410 + } 411 + }
+25
src/babel/macro.js
··· 1 + import { createMacro } from 'babel-plugin-macros'; 2 + import { makeHelpers } from './transform'; 3 + 4 + function reghexMacro({ references, babel: { types: t } }) { 5 + const helpers = makeHelpers(t); 6 + const defaultRefs = references.default || []; 7 + 8 + defaultRefs.forEach((ref) => { 9 + if (!t.isCallExpression(ref.parentPath.node)) return; 10 + const path = ref.parentPath.parentPath; 11 + if (!helpers.isMatch(path)) return; 12 + 13 + const importPath = helpers.getMatchImport(path); 14 + if (!importPath) return; 15 + 16 + helpers.updateImport(importPath); 17 + helpers.transformMatch(path); 18 + }); 19 + 20 + return { 21 + keepImports: true, 22 + }; 23 + } 24 + 25 + export default createMacro(reghexMacro);
+22
src/babel/plugin.js
··· 1 + import { makeHelpers } from './transform'; 2 + 3 + export default function reghexPlugin({ types }) { 4 + let helpers; 5 + 6 + return { 7 + name: 'reghex', 8 + visitor: { 9 + Program() { 10 + helpers = makeHelpers(types); 11 + }, 12 + ImportDeclaration(path) { 13 + helpers.updateImport(path); 14 + }, 15 + TaggedTemplateExpression(path) { 16 + if (helpers.isMatch(path) && helpers.getMatchImport(path)) { 17 + helpers.transformMatch(path); 18 + } 19 + }, 20 + }, 21 + }; 22 + }
+95
src/babel/plugin.test.js
··· 1 + import { transform } from '@babel/core'; 2 + import reghexPlugin from './plugin'; 3 + 4 + it('works with standard features', () => { 5 + const code = ` 6 + import match from 'reghex/macro'; 7 + 8 + const node = match('node')\` 9 + \${1}+ | \${2}+ (\${3} ( \${4}? \${5} ) )* 10 + \`; 11 + `; 12 + 13 + expect( 14 + transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] }) 15 + .code 16 + ).toMatchSnapshot(); 17 + }); 18 + 19 + it('works with local recursion', () => { 20 + // NOTE: A different default name is allowed 21 + const code = ` 22 + import match_rec, { tag } from 'reghex'; 23 + 24 + const inner = match_rec('inner')\` 25 + \${/inner/} 26 + \`; 27 + 28 + const node = match_rec('node')\` 29 + \${inner} 30 + \`; 31 + `; 32 + 33 + expect( 34 + transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] }) 35 + .code 36 + ).toMatchSnapshot(); 37 + }); 38 + 39 + it('works with transform functions', () => { 40 + const code = ` 41 + import match from 'reghex'; 42 + 43 + const first = match('inner', x => x)\`\`; 44 + 45 + const transform = x => x; 46 + const second = match('node', transform)\`\`; 47 + `; 48 + 49 + expect( 50 + transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] }) 51 + .code 52 + ).toMatchSnapshot(); 53 + }); 54 + 55 + it('works with non-capturing groups', () => { 56 + const code = ` 57 + import match from 'reghex'; 58 + 59 + const node = match('node')\` 60 + \${1} (\${2} | (?: \${3})+) 61 + \`; 62 + `; 63 + 64 + expect( 65 + transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] }) 66 + .code 67 + ).toMatchSnapshot(); 68 + }); 69 + 70 + it('works together with @babel/plugin-transform-modules-commonjs', () => { 71 + const code = ` 72 + import match from 'reghex'; 73 + 74 + const node = match('node')\` 75 + \${1} \${2} 76 + \`; 77 + `; 78 + 79 + expect( 80 + transform(code, { 81 + babelrc: false, 82 + presets: [], 83 + plugins: [ 84 + reghexPlugin, 85 + [ 86 + '@babel/plugin-transform-modules-commonjs', 87 + { 88 + noInterop: true, 89 + loose: true, 90 + }, 91 + ], 92 + ], 93 + }).code 94 + ).toMatchSnapshot(); 95 + });
+38
src/babel/sharedIds.js
··· 1 + export class SharedIds { 2 + constructor(t) { 3 + this.t = t; 4 + this.getLastIndexId = t.identifier('_getLastIndex'); 5 + this.setLastIndexId = t.identifier('_setLastIndex'); 6 + this.execPatternId = t.identifier('_execPattern'); 7 + this.patternId = t.identifier('_pattern'); 8 + this.tagId = t.identifier('tag'); 9 + } 10 + 11 + get node() { 12 + return this.t.identifier('node'); 13 + } 14 + 15 + get match() { 16 + return this.t.identifier('match'); 17 + } 18 + 19 + get getLastIndex() { 20 + return this.t.identifier(this.getLastIndexId.name); 21 + } 22 + 23 + get setLastIndex() { 24 + return this.t.identifier(this.setLastIndexId.name); 25 + } 26 + 27 + get execPattern() { 28 + return this.t.identifier(this.execPatternId.name); 29 + } 30 + 31 + get pattern() { 32 + return this.t.identifier(this.patternId.name); 33 + } 34 + 35 + get tag() { 36 + return this.t.identifier(this.tagId.name); 37 + } 38 + }
+219
src/babel/transform.js
··· 1 + import { parse } from '../parser'; 2 + import { SharedIds } from './sharedIds'; 3 + import { initGenerator, RootNode } from './generator'; 4 + 5 + export function makeHelpers(t) { 6 + const importSourceRe = /reghex$|^reghex\/macro/; 7 + const importName = 'reghex'; 8 + const ids = new SharedIds(t); 9 + initGenerator(ids, t); 10 + 11 + let _hasUpdatedImport = false; 12 + 13 + return { 14 + /** Adds the reghex import declaration to the Program scope */ 15 + updateImport(path) { 16 + if (_hasUpdatedImport) return; 17 + if (!importSourceRe.test(path.node.source.value)) return; 18 + _hasUpdatedImport = true; 19 + 20 + const defaultSpecifierIndex = path.node.specifiers.findIndex((node) => { 21 + return t.isImportDefaultSpecifier(node); 22 + }); 23 + 24 + if (defaultSpecifierIndex > -1) { 25 + path.node.specifiers.splice(defaultSpecifierIndex, 1); 26 + } 27 + 28 + if (path.node.source.value !== importName) { 29 + path.node.source = t.stringLiteral(importName); 30 + } 31 + 32 + path.node.specifiers.push( 33 + t.importSpecifier( 34 + (ids.getLastIndexId = path.scope.generateUidIdentifier( 35 + 'getLastIndex' 36 + )), 37 + t.identifier('_getLastIndex') 38 + ), 39 + t.importSpecifier( 40 + (ids.setLastIndexId = path.scope.generateUidIdentifier( 41 + 'setLastIndex' 42 + )), 43 + t.identifier('_setLastIndex') 44 + ), 45 + t.importSpecifier( 46 + (ids.execPatternId = path.scope.generateUidIdentifier('execPattern')), 47 + t.identifier('_execPattern') 48 + ), 49 + t.importSpecifier( 50 + (ids.patternId = path.scope.generateUidIdentifier('pattern')), 51 + t.identifier('_pattern') 52 + ) 53 + ); 54 + 55 + const tagImport = path.node.specifiers.find((node) => { 56 + return t.isImportSpecifier(node) && node.imported.name === 'tag'; 57 + }); 58 + if (!tagImport) { 59 + path.node.specifiers.push( 60 + t.importSpecifier( 61 + (ids.tagId = path.scope.generateUidIdentifier('tag')), 62 + t.identifier('tag') 63 + ) 64 + ); 65 + } else { 66 + ids.tagId = tagImport.imported; 67 + } 68 + }, 69 + 70 + /** Determines whether the given tagged template expression is a reghex match */ 71 + isMatch(path) { 72 + if ( 73 + t.isTaggedTemplateExpression(path.node) && 74 + t.isCallExpression(path.node.tag) && 75 + t.isIdentifier(path.node.tag.callee) && 76 + path.scope.hasBinding(path.node.tag.callee.name) 77 + ) { 78 + if (t.isVariableDeclarator(path.parentPath)) 79 + path.parentPath._isMatch = true; 80 + return true; 81 + } 82 + 83 + return ( 84 + t.isVariableDeclarator(path.parentPath) && path.parentPath._isMatch 85 + ); 86 + }, 87 + 88 + /** Given a reghex match, returns the path to reghex's match import declaration */ 89 + getMatchImport(path) { 90 + t.assertTaggedTemplateExpression(path.node); 91 + const binding = path.scope.getBinding(path.node.tag.callee.name); 92 + 93 + if ( 94 + binding.kind !== 'module' || 95 + !t.isImportDeclaration(binding.path.parent) || 96 + !importSourceRe.test(binding.path.parent.source.value) || 97 + !t.isImportDefaultSpecifier(binding.path.node) 98 + ) { 99 + return null; 100 + } 101 + 102 + return binding.path.parentPath; 103 + }, 104 + 105 + /** Given a match, returns an evaluated name or a best guess */ 106 + getMatchName(path) { 107 + t.assertTaggedTemplateExpression(path.node); 108 + const nameArgumentPath = path.get('tag.arguments.0'); 109 + const { confident, value } = nameArgumentPath.evaluate(); 110 + if (!confident && t.isIdentifier(nameArgumentPath.node)) { 111 + return nameArgumentPath.node.name; 112 + } else if (confident && typeof value === 'string') { 113 + return value; 114 + } else { 115 + return path.scope.generateUidIdentifierBasedOnNode(path.node); 116 + } 117 + }, 118 + 119 + /** Given a match, hoists its expressions in front of the match's statement */ 120 + _hoistExpressions(path) { 121 + t.assertTaggedTemplateExpression(path.node); 122 + 123 + const variableDeclarators = []; 124 + const matchName = this.getMatchName(path); 125 + 126 + const hoistedExpressions = path.node.quasi.expressions.map( 127 + (expression) => { 128 + if ( 129 + t.isIdentifier(expression) && 130 + path.scope.hasBinding(expression.name) 131 + ) { 132 + const binding = path.scope.getBinding(expression.name); 133 + if (t.isVariableDeclarator(binding.path.node)) { 134 + const matchPath = binding.path.get('init'); 135 + if (this.isMatch(matchPath)) return expression; 136 + } 137 + } 138 + 139 + const id = path.scope.generateUidIdentifier( 140 + `${matchName}_expression` 141 + ); 142 + variableDeclarators.push( 143 + t.variableDeclarator( 144 + id, 145 + t.callExpression(ids.pattern, [expression]) 146 + ) 147 + ); 148 + return id; 149 + } 150 + ); 151 + 152 + if (variableDeclarators.length) { 153 + path 154 + .getStatementParent() 155 + .insertBefore(t.variableDeclaration('var', variableDeclarators)); 156 + } 157 + 158 + return hoistedExpressions; 159 + }, 160 + 161 + _hoistTransform(path) { 162 + const transformNode = path.node.tag.arguments[1]; 163 + if (!transformNode) return null; 164 + if (t.isIdentifier(transformNode)) return transformNode; 165 + 166 + const matchName = this.getMatchName(path); 167 + const id = path.scope.generateUidIdentifier(`${matchName}_transform`); 168 + const declarator = t.variableDeclarator(id, transformNode); 169 + 170 + path 171 + .getStatementParent() 172 + .insertBefore(t.variableDeclaration('var', [declarator])); 173 + return id; 174 + }, 175 + 176 + transformMatch(path) { 177 + if (!path.node.tag.arguments.length) { 178 + throw path 179 + .get('tag') 180 + .buildCodeFrameError( 181 + 'match() must at least be called with a node name' 182 + ); 183 + } 184 + 185 + const matchName = this.getMatchName(path); 186 + const nameNode = path.node.tag.arguments[0]; 187 + const quasis = path.node.quasi.quasis.map((x) => x.value.cooked); 188 + 189 + // Hoist expressions and wrap them in an execPattern call 190 + const expressions = this._hoistExpressions(path).map((id) => { 191 + // Directly call expression if it's sure to be another matcher 192 + const binding = path.scope.getBinding(id.name); 193 + if (binding && t.isVariableDeclarator(binding.path.node)) { 194 + const matchPath = binding.path.get('init'); 195 + if (this.isMatch(matchPath)) return t.callExpression(id, []); 196 + } 197 + 198 + return t.callExpression(ids.execPattern, [id]); 199 + }); 200 + 201 + // Hoist transform argument if necessary 202 + const transformNode = this._hoistTransform(path); 203 + 204 + let ast; 205 + try { 206 + ast = parse(quasis, expressions); 207 + } catch (error) { 208 + if (error.name !== 'SyntaxError') throw error; 209 + throw path.get('quasi').buildCodeFrameError(error.message); 210 + } 211 + 212 + const generator = new RootNode(ast, nameNode, transformNode); 213 + const body = t.blockStatement(generator.statements()); 214 + const matchFunctionId = path.scope.generateUidIdentifier(matchName); 215 + const matchFunction = t.functionExpression(matchFunctionId, [], body); 216 + path.replaceWith(matchFunction); 217 + }, 218 + }; 219 + }
+56
src/core.js
··· 1 + const isStickySupported = typeof /./g.sticky === 'boolean'; 2 + 3 + let state$input = ''; 4 + let state$lastIndex = 0; 5 + 6 + export const _getLastIndex = () => { 7 + return state$lastIndex; 8 + }; 9 + 10 + export const _setLastIndex = (index) => { 11 + state$lastIndex = index; 12 + }; 13 + 14 + export const _pattern = (input) => { 15 + if (typeof input === 'function') return input; 16 + 17 + const source = typeof input !== 'string' ? input.source : input; 18 + return isStickySupported 19 + ? new RegExp(source, 'y') 20 + : new RegExp(`^(?:${source})`, 'g'); 21 + }; 22 + 23 + export const _execPattern = (pattern) => { 24 + if (typeof pattern === 'function') return pattern(); 25 + 26 + let match; 27 + if (isStickySupported) { 28 + pattern.lastIndex = state$lastIndex; 29 + match = pattern.exec(state$input); 30 + state$lastIndex = pattern.lastIndex; 31 + } else { 32 + pattern.lastIndex = 0; 33 + match = pattern.exec(state$input.slice(state$lastIndex)); 34 + state$lastIndex += pattern.lastIndex; 35 + } 36 + 37 + return match && match[0]; 38 + }; 39 + 40 + export const tag = (array, tag) => { 41 + array.tag = tag; 42 + return array; 43 + }; 44 + 45 + export const parse = (pattern) => (input) => { 46 + state$input = input; 47 + state$lastIndex = 0; 48 + return pattern(); 49 + }; 50 + 51 + export const match = (_name) => { 52 + throw new TypeError( 53 + 'This match() function was not transformed. ' + 54 + 'Ensure that the Babel plugin is set up correctly and try again.' 55 + ); 56 + };
+110
src/parser.js
··· 1 + export const parse = (quasis, expressions) => { 2 + let quasiIndex = 0; 3 + let stackIndex = 0; 4 + 5 + const sequenceStack = []; 6 + const rootSequence = { 7 + type: 'sequence', 8 + sequence: [], 9 + alternation: null, 10 + }; 11 + 12 + let currentGroup = null; 13 + let lastMatch; 14 + let currentSequence = rootSequence; 15 + 16 + while (stackIndex < quasis.length + expressions.length) { 17 + if (stackIndex % 2 !== 0) { 18 + const expression = expressions[stackIndex++ >> 1]; 19 + 20 + currentSequence.sequence.push({ 21 + type: 'expression', 22 + expression, 23 + quantifier: null, 24 + }); 25 + } 26 + 27 + const quasi = quasis[stackIndex >> 1]; 28 + while (quasiIndex < quasi.length) { 29 + const char = quasi[quasiIndex++]; 30 + 31 + if (char === ' ' || char === '\t' || char === '\r' || char === '\n') { 32 + continue; 33 + } else if (char === '|' && currentSequence.sequence.length > 0) { 34 + currentSequence = currentSequence.alternation = { 35 + type: 'sequence', 36 + sequence: [], 37 + alternation: null, 38 + }; 39 + 40 + continue; 41 + } else if (char === ')' && currentSequence.sequence.length > 0) { 42 + currentGroup = null; 43 + currentSequence = sequenceStack.pop(); 44 + if (currentSequence) continue; 45 + } else if (char === '(') { 46 + currentGroup = { 47 + type: 'group', 48 + sequence: { 49 + type: 'sequence', 50 + sequence: [], 51 + alternation: null, 52 + }, 53 + capturing: true, 54 + lookahead: null, 55 + quantifier: null, 56 + }; 57 + 58 + sequenceStack.push(currentSequence); 59 + currentSequence.sequence.push(currentGroup); 60 + currentSequence = currentGroup.sequence; 61 + continue; 62 + } else if ( 63 + char === '?' && 64 + currentSequence.sequence.length === 0 && 65 + currentGroup 66 + ) { 67 + const nextChar = quasi[quasiIndex++]; 68 + if (!nextChar) { 69 + throw new SyntaxError('Unexpected end of input after ' + char); 70 + } 71 + 72 + if (nextChar === ':') { 73 + currentGroup.capturing = false; 74 + continue; 75 + } else if (nextChar === '=') { 76 + currentGroup.capturing = false; 77 + currentGroup.lookahead = 'positive'; 78 + continue; 79 + } else if (nextChar === '!') { 80 + currentGroup.capturing = false; 81 + currentGroup.lookahead = 'negative'; 82 + continue; 83 + } 84 + } else if ( 85 + (char === '?' || char === '+' || char === '*') && 86 + (lastMatch = 87 + currentSequence.sequence[currentSequence.sequence.length - 1]) 88 + ) { 89 + if (lastMatch.type === 'group' && lastMatch.lookahead) { 90 + throw new SyntaxError('Unexpected quantifier on lookahead group'); 91 + } 92 + 93 + lastMatch.quantifier = { 94 + type: 'quantifier', 95 + required: char === '+', 96 + singular: char === '?', 97 + }; 98 + 99 + continue; 100 + } 101 + 102 + throw new SyntaxError('Unexpected token ' + char); 103 + } 104 + 105 + stackIndex++; 106 + quasiIndex = 0; 107 + } 108 + 109 + return rootSequence; 110 + };
+160
src/parser.test.js
··· 1 + import { parse } from './parser'; 2 + 3 + const parseTag = (quasis, ...expressions) => parse(quasis, expressions); 4 + 5 + it('supports parsing expressions', () => { 6 + expect(parseTag`${1}`).toEqual({ 7 + type: 'sequence', 8 + sequence: [ 9 + { 10 + type: 'expression', 11 + expression: 1, 12 + quantifier: null, 13 + }, 14 + ], 15 + alternation: null, 16 + }); 17 + }); 18 + 19 + it('supports parsing expressions with quantifiers', () => { 20 + let ast; 21 + 22 + ast = parseTag`${1}?`; 23 + expect(ast).toHaveProperty('sequence.0.type', 'expression'); 24 + expect(ast).toHaveProperty('sequence.0.quantifier', { 25 + type: 'quantifier', 26 + required: false, 27 + singular: true, 28 + }); 29 + 30 + ast = parseTag`${1}+`; 31 + expect(ast).toHaveProperty('sequence.0.type', 'expression'); 32 + expect(ast).toHaveProperty('sequence.0.quantifier', { 33 + type: 'quantifier', 34 + required: true, 35 + singular: false, 36 + }); 37 + 38 + ast = parseTag`${1}*`; 39 + expect(ast).toHaveProperty('sequence.0.type', 'expression'); 40 + expect(ast).toHaveProperty('sequence.0.quantifier', { 41 + type: 'quantifier', 42 + required: false, 43 + singular: false, 44 + }); 45 + }); 46 + 47 + it('supports top-level alternations', () => { 48 + let ast; 49 + 50 + ast = parseTag`${1} | ${2}`; 51 + expect(ast).toHaveProperty('sequence.length', 1); 52 + expect(ast).toHaveProperty('sequence.0.type', 'expression'); 53 + expect(ast).toHaveProperty('sequence.0.expression', 1); 54 + expect(ast).toHaveProperty('alternation.type', 'sequence'); 55 + expect(ast).toHaveProperty('alternation.sequence.0.expression', 2); 56 + 57 + ast = parseTag`${1}? | ${2}?`; 58 + expect(ast).toHaveProperty('sequence.0.quantifier.type', 'quantifier'); 59 + expect(ast).toHaveProperty( 60 + 'alternation.sequence.0.quantifier.type', 61 + 'quantifier' 62 + ); 63 + }); 64 + 65 + it('supports groups with quantifiers', () => { 66 + let ast; 67 + 68 + ast = parseTag`(${1} ${2})`; 69 + expect(ast).toHaveProperty('sequence.length', 1); 70 + expect(ast).toHaveProperty('sequence.0.type', 'group'); 71 + expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 2); 72 + expect(ast).toHaveProperty('sequence.0.sequence.sequence.0.expression', 1); 73 + expect(ast).toHaveProperty('sequence.0.sequence.sequence.1.expression', 2); 74 + 75 + ast = parseTag`(${1} ${2}?)?`; 76 + expect(ast).toHaveProperty('sequence.length', 1); 77 + expect(ast).toHaveProperty('sequence.0.type', 'group'); 78 + expect(ast).toHaveProperty('sequence.0.quantifier.type', 'quantifier'); 79 + expect(ast).toHaveProperty('sequence.0.sequence.sequence.0.quantifier', null); 80 + expect(ast).toHaveProperty( 81 + 'sequence.0.sequence.sequence.1.quantifier.type', 82 + 'quantifier' 83 + ); 84 + }); 85 + 86 + it('supports non-capturing groups', () => { 87 + const ast = parseTag`(?: ${1})`; 88 + expect(ast).toHaveProperty('sequence.length', 1); 89 + expect(ast).toHaveProperty('sequence.0.type', 'group'); 90 + expect(ast).toHaveProperty('sequence.0.capturing', false); 91 + expect(ast).toHaveProperty('sequence.0.lookahead', null); 92 + expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1); 93 + }); 94 + 95 + it('supports positive lookahead groups', () => { 96 + const ast = parseTag`(?= ${1})`; 97 + expect(ast).toHaveProperty('sequence.length', 1); 98 + expect(ast).toHaveProperty('sequence.0.type', 'group'); 99 + expect(ast).toHaveProperty('sequence.0.capturing', false); 100 + expect(ast).toHaveProperty('sequence.0.lookahead', 'positive'); 101 + expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1); 102 + }); 103 + 104 + it('supports negative lookahead groups', () => { 105 + const ast = parseTag`(?! ${1})`; 106 + expect(ast).toHaveProperty('sequence.length', 1); 107 + expect(ast).toHaveProperty('sequence.0.type', 'group'); 108 + expect(ast).toHaveProperty('sequence.0.capturing', false); 109 + expect(ast).toHaveProperty('sequence.0.lookahead', 'negative'); 110 + expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1); 111 + }); 112 + 113 + it('throws when a quantifier is combined with a lookahead', () => { 114 + expect(() => parseTag`(?! ${1})+`).toThrow(); 115 + expect(() => parseTag`(?! ${1})?`).toThrow(); 116 + expect(() => parseTag`(?! ${1})*`).toThrow(); 117 + }); 118 + 119 + it('supports groups with alternates', () => { 120 + expect(parseTag`(${1} | ${2}) ${3}`).toMatchInlineSnapshot(` 121 + Object { 122 + "alternation": null, 123 + "sequence": Array [ 124 + Object { 125 + "capturing": true, 126 + "lookahead": null, 127 + "quantifier": null, 128 + "sequence": Object { 129 + "alternation": Object { 130 + "alternation": null, 131 + "sequence": Array [ 132 + Object { 133 + "expression": 2, 134 + "quantifier": null, 135 + "type": "expression", 136 + }, 137 + ], 138 + "type": "sequence", 139 + }, 140 + "sequence": Array [ 141 + Object { 142 + "expression": 1, 143 + "quantifier": null, 144 + "type": "expression", 145 + }, 146 + ], 147 + "type": "sequence", 148 + }, 149 + "type": "group", 150 + }, 151 + Object { 152 + "expression": 3, 153 + "quantifier": null, 154 + "type": "expression", 155 + }, 156 + ], 157 + "type": "sequence", 158 + } 159 + `); 160 + });
+4325
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.8.3": 6 + version "7.8.3" 7 + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 + dependencies: 10 + "@babel/highlight" "^7.8.3" 11 + 12 + "@babel/core@7.9.6", "@babel/core@^7.1.0", "@babel/core@^7.7.5": 13 + version "7.9.6" 14 + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" 15 + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== 16 + dependencies: 17 + "@babel/code-frame" "^7.8.3" 18 + "@babel/generator" "^7.9.6" 19 + "@babel/helper-module-transforms" "^7.9.0" 20 + "@babel/helpers" "^7.9.6" 21 + "@babel/parser" "^7.9.6" 22 + "@babel/template" "^7.8.6" 23 + "@babel/traverse" "^7.9.6" 24 + "@babel/types" "^7.9.6" 25 + convert-source-map "^1.7.0" 26 + debug "^4.1.0" 27 + gensync "^1.0.0-beta.1" 28 + json5 "^2.1.2" 29 + lodash "^4.17.13" 30 + resolve "^1.3.2" 31 + semver "^5.4.1" 32 + source-map "^0.5.0" 33 + 34 + "@babel/generator@^7.9.6": 35 + version "7.9.6" 36 + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" 37 + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== 38 + dependencies: 39 + "@babel/types" "^7.9.6" 40 + jsesc "^2.5.1" 41 + lodash "^4.17.13" 42 + source-map "^0.5.0" 43 + 44 + "@babel/helper-function-name@^7.9.5": 45 + version "7.9.5" 46 + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" 47 + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== 48 + dependencies: 49 + "@babel/helper-get-function-arity" "^7.8.3" 50 + "@babel/template" "^7.8.3" 51 + "@babel/types" "^7.9.5" 52 + 53 + "@babel/helper-get-function-arity@^7.8.3": 54 + version "7.8.3" 55 + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" 56 + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== 57 + dependencies: 58 + "@babel/types" "^7.8.3" 59 + 60 + "@babel/helper-member-expression-to-functions@^7.8.3": 61 + version "7.8.3" 62 + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" 63 + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== 64 + dependencies: 65 + "@babel/types" "^7.8.3" 66 + 67 + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": 68 + version "7.8.3" 69 + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" 70 + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== 71 + dependencies: 72 + "@babel/types" "^7.8.3" 73 + 74 + "@babel/helper-module-transforms@^7.9.0": 75 + version "7.9.0" 76 + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" 77 + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== 78 + dependencies: 79 + "@babel/helper-module-imports" "^7.8.3" 80 + "@babel/helper-replace-supers" "^7.8.6" 81 + "@babel/helper-simple-access" "^7.8.3" 82 + "@babel/helper-split-export-declaration" "^7.8.3" 83 + "@babel/template" "^7.8.6" 84 + "@babel/types" "^7.9.0" 85 + lodash "^4.17.13" 86 + 87 + "@babel/helper-optimise-call-expression@^7.8.3": 88 + version "7.8.3" 89 + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" 90 + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== 91 + dependencies: 92 + "@babel/types" "^7.8.3" 93 + 94 + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": 95 + version "7.8.3" 96 + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" 97 + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== 98 + 99 + "@babel/helper-replace-supers@^7.8.6": 100 + version "7.9.6" 101 + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" 102 + integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== 103 + dependencies: 104 + "@babel/helper-member-expression-to-functions" "^7.8.3" 105 + "@babel/helper-optimise-call-expression" "^7.8.3" 106 + "@babel/traverse" "^7.9.6" 107 + "@babel/types" "^7.9.6" 108 + 109 + "@babel/helper-simple-access@^7.8.3": 110 + version "7.8.3" 111 + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" 112 + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== 113 + dependencies: 114 + "@babel/template" "^7.8.3" 115 + "@babel/types" "^7.8.3" 116 + 117 + "@babel/helper-split-export-declaration@^7.8.3": 118 + version "7.8.3" 119 + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" 120 + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== 121 + dependencies: 122 + "@babel/types" "^7.8.3" 123 + 124 + "@babel/helper-validator-identifier@^7.9.5": 125 + version "7.9.5" 126 + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" 127 + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== 128 + 129 + "@babel/helpers@^7.9.6": 130 + version "7.9.6" 131 + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" 132 + integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== 133 + dependencies: 134 + "@babel/template" "^7.8.3" 135 + "@babel/traverse" "^7.9.6" 136 + "@babel/types" "^7.9.6" 137 + 138 + "@babel/highlight@^7.8.3": 139 + version "7.8.3" 140 + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" 141 + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== 142 + dependencies: 143 + chalk "^2.0.0" 144 + esutils "^2.0.2" 145 + js-tokens "^4.0.0" 146 + 147 + "@babel/parser@^7.1.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": 148 + version "7.9.6" 149 + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" 150 + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== 151 + 152 + "@babel/plugin-syntax-async-generators@^7.8.4": 153 + version "7.8.4" 154 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 155 + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 156 + dependencies: 157 + "@babel/helper-plugin-utils" "^7.8.0" 158 + 159 + "@babel/plugin-syntax-bigint@^7.8.3": 160 + version "7.8.3" 161 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" 162 + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== 163 + dependencies: 164 + "@babel/helper-plugin-utils" "^7.8.0" 165 + 166 + "@babel/plugin-syntax-class-properties@^7.8.3": 167 + version "7.8.3" 168 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" 169 + integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== 170 + dependencies: 171 + "@babel/helper-plugin-utils" "^7.8.3" 172 + 173 + "@babel/plugin-syntax-json-strings@^7.8.3": 174 + version "7.8.3" 175 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 176 + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 177 + dependencies: 178 + "@babel/helper-plugin-utils" "^7.8.0" 179 + 180 + "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": 181 + version "7.8.3" 182 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" 183 + integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== 184 + dependencies: 185 + "@babel/helper-plugin-utils" "^7.8.3" 186 + 187 + "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 188 + version "7.8.3" 189 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 190 + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 191 + dependencies: 192 + "@babel/helper-plugin-utils" "^7.8.0" 193 + 194 + "@babel/plugin-syntax-numeric-separator@^7.8.3": 195 + version "7.8.3" 196 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" 197 + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== 198 + dependencies: 199 + "@babel/helper-plugin-utils" "^7.8.3" 200 + 201 + "@babel/plugin-syntax-object-rest-spread@^7.8.3": 202 + version "7.8.3" 203 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 204 + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 205 + dependencies: 206 + "@babel/helper-plugin-utils" "^7.8.0" 207 + 208 + "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 209 + version "7.8.3" 210 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 211 + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 212 + dependencies: 213 + "@babel/helper-plugin-utils" "^7.8.0" 214 + 215 + "@babel/plugin-syntax-optional-chaining@^7.8.3": 216 + version "7.8.3" 217 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 218 + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 219 + dependencies: 220 + "@babel/helper-plugin-utils" "^7.8.0" 221 + 222 + "@babel/plugin-transform-modules-commonjs@^7.9.6": 223 + version "7.9.6" 224 + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" 225 + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== 226 + dependencies: 227 + "@babel/helper-module-transforms" "^7.9.0" 228 + "@babel/helper-plugin-utils" "^7.8.3" 229 + "@babel/helper-simple-access" "^7.8.3" 230 + babel-plugin-dynamic-import-node "^2.3.3" 231 + 232 + "@babel/plugin-transform-object-assign@^7.8.3": 233 + version "7.8.3" 234 + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz#dc3b8dd50ef03837868a37b7df791f64f288538e" 235 + integrity sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q== 236 + dependencies: 237 + "@babel/helper-plugin-utils" "^7.8.3" 238 + 239 + "@babel/template@^7.3.3", "@babel/template@^7.8.3", "@babel/template@^7.8.6": 240 + version "7.8.6" 241 + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" 242 + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== 243 + dependencies: 244 + "@babel/code-frame" "^7.8.3" 245 + "@babel/parser" "^7.8.6" 246 + "@babel/types" "^7.8.6" 247 + 248 + "@babel/traverse@^7.1.0", "@babel/traverse@^7.9.6": 249 + version "7.9.6" 250 + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" 251 + integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== 252 + dependencies: 253 + "@babel/code-frame" "^7.8.3" 254 + "@babel/generator" "^7.9.6" 255 + "@babel/helper-function-name" "^7.9.5" 256 + "@babel/helper-split-export-declaration" "^7.8.3" 257 + "@babel/parser" "^7.9.6" 258 + "@babel/types" "^7.9.6" 259 + debug "^4.1.0" 260 + globals "^11.1.0" 261 + lodash "^4.17.13" 262 + 263 + "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": 264 + version "7.9.6" 265 + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" 266 + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== 267 + dependencies: 268 + "@babel/helper-validator-identifier" "^7.9.5" 269 + lodash "^4.17.13" 270 + to-fast-properties "^2.0.0" 271 + 272 + "@bcoe/v8-coverage@^0.2.3": 273 + version "0.2.3" 274 + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 275 + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 276 + 277 + "@cnakazawa/watch@^1.0.3": 278 + version "1.0.4" 279 + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" 280 + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== 281 + dependencies: 282 + exec-sh "^0.3.2" 283 + minimist "^1.2.0" 284 + 285 + "@istanbuljs/load-nyc-config@^1.0.0": 286 + version "1.0.0" 287 + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" 288 + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== 289 + dependencies: 290 + camelcase "^5.3.1" 291 + find-up "^4.1.0" 292 + js-yaml "^3.13.1" 293 + resolve-from "^5.0.0" 294 + 295 + "@istanbuljs/schema@^0.1.2": 296 + version "0.1.2" 297 + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" 298 + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== 299 + 300 + "@jest/console@^26.0.1": 301 + version "26.0.1" 302 + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.0.1.tgz#62b3b2fa8990f3cbffbef695c42ae9ddbc8f4b39" 303 + integrity sha512-9t1KUe/93coV1rBSxMmBAOIK3/HVpwxArCA1CxskKyRiv6o8J70V8C/V3OJminVCTa2M0hQI9AWRd5wxu2dAHw== 304 + dependencies: 305 + "@jest/types" "^26.0.1" 306 + chalk "^4.0.0" 307 + jest-message-util "^26.0.1" 308 + jest-util "^26.0.1" 309 + slash "^3.0.0" 310 + 311 + "@jest/core@^26.0.1": 312 + version "26.0.1" 313 + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.0.1.tgz#aa538d52497dfab56735efb00e506be83d841fae" 314 + integrity sha512-Xq3eqYnxsG9SjDC+WLeIgf7/8KU6rddBxH+SCt18gEpOhAGYC/Mq+YbtlNcIdwjnnT+wDseXSbU0e5X84Y4jTQ== 315 + dependencies: 316 + "@jest/console" "^26.0.1" 317 + "@jest/reporters" "^26.0.1" 318 + "@jest/test-result" "^26.0.1" 319 + "@jest/transform" "^26.0.1" 320 + "@jest/types" "^26.0.1" 321 + ansi-escapes "^4.2.1" 322 + chalk "^4.0.0" 323 + exit "^0.1.2" 324 + graceful-fs "^4.2.4" 325 + jest-changed-files "^26.0.1" 326 + jest-config "^26.0.1" 327 + jest-haste-map "^26.0.1" 328 + jest-message-util "^26.0.1" 329 + jest-regex-util "^26.0.0" 330 + jest-resolve "^26.0.1" 331 + jest-resolve-dependencies "^26.0.1" 332 + jest-runner "^26.0.1" 333 + jest-runtime "^26.0.1" 334 + jest-snapshot "^26.0.1" 335 + jest-util "^26.0.1" 336 + jest-validate "^26.0.1" 337 + jest-watcher "^26.0.1" 338 + micromatch "^4.0.2" 339 + p-each-series "^2.1.0" 340 + rimraf "^3.0.0" 341 + slash "^3.0.0" 342 + strip-ansi "^6.0.0" 343 + 344 + "@jest/environment@^26.0.1": 345 + version "26.0.1" 346 + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.0.1.tgz#82f519bba71959be9b483675ee89de8c8f72a5c8" 347 + integrity sha512-xBDxPe8/nx251u0VJ2dFAFz2H23Y98qdIaNwnMK6dFQr05jc+Ne/2np73lOAx+5mSBO/yuQldRrQOf6hP1h92g== 348 + dependencies: 349 + "@jest/fake-timers" "^26.0.1" 350 + "@jest/types" "^26.0.1" 351 + jest-mock "^26.0.1" 352 + 353 + "@jest/fake-timers@^26.0.1": 354 + version "26.0.1" 355 + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.0.1.tgz#f7aeff13b9f387e9d0cac9a8de3bba538d19d796" 356 + integrity sha512-Oj/kCBnTKhm7CR+OJSjZty6N1bRDr9pgiYQr4wY221azLz5PHi08x/U+9+QpceAYOWheauLP8MhtSVFrqXQfhg== 357 + dependencies: 358 + "@jest/types" "^26.0.1" 359 + "@sinonjs/fake-timers" "^6.0.1" 360 + jest-message-util "^26.0.1" 361 + jest-mock "^26.0.1" 362 + jest-util "^26.0.1" 363 + 364 + "@jest/globals@^26.0.1": 365 + version "26.0.1" 366 + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.0.1.tgz#3f67b508a7ce62b6e6efc536f3d18ec9deb19a9c" 367 + integrity sha512-iuucxOYB7BRCvT+TYBzUqUNuxFX1hqaR6G6IcGgEqkJ5x4htNKo1r7jk1ji9Zj8ZMiMw0oB5NaA7k5Tx6MVssA== 368 + dependencies: 369 + "@jest/environment" "^26.0.1" 370 + "@jest/types" "^26.0.1" 371 + expect "^26.0.1" 372 + 373 + "@jest/reporters@^26.0.1": 374 + version "26.0.1" 375 + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.0.1.tgz#14ae00e7a93e498cec35b0c00ab21c375d9b078f" 376 + integrity sha512-NWWy9KwRtE1iyG/m7huiFVF9YsYv/e+mbflKRV84WDoJfBqUrNRyDbL/vFxQcYLl8IRqI4P3MgPn386x76Gf2g== 377 + dependencies: 378 + "@bcoe/v8-coverage" "^0.2.3" 379 + "@jest/console" "^26.0.1" 380 + "@jest/test-result" "^26.0.1" 381 + "@jest/transform" "^26.0.1" 382 + "@jest/types" "^26.0.1" 383 + chalk "^4.0.0" 384 + collect-v8-coverage "^1.0.0" 385 + exit "^0.1.2" 386 + glob "^7.1.2" 387 + graceful-fs "^4.2.4" 388 + istanbul-lib-coverage "^3.0.0" 389 + istanbul-lib-instrument "^4.0.0" 390 + istanbul-lib-report "^3.0.0" 391 + istanbul-lib-source-maps "^4.0.0" 392 + istanbul-reports "^3.0.2" 393 + jest-haste-map "^26.0.1" 394 + jest-resolve "^26.0.1" 395 + jest-util "^26.0.1" 396 + jest-worker "^26.0.0" 397 + slash "^3.0.0" 398 + source-map "^0.6.0" 399 + string-length "^4.0.1" 400 + terminal-link "^2.0.0" 401 + v8-to-istanbul "^4.1.3" 402 + optionalDependencies: 403 + node-notifier "^7.0.0" 404 + 405 + "@jest/source-map@^26.0.0": 406 + version "26.0.0" 407 + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.0.0.tgz#fd7706484a7d3faf7792ae29783933bbf48a4749" 408 + integrity sha512-S2Z+Aj/7KOSU2TfW0dyzBze7xr95bkm5YXNUqqCek+HE0VbNNSNzrRwfIi5lf7wvzDTSS0/ib8XQ1krFNyYgbQ== 409 + dependencies: 410 + callsites "^3.0.0" 411 + graceful-fs "^4.2.4" 412 + source-map "^0.6.0" 413 + 414 + "@jest/test-result@^26.0.1": 415 + version "26.0.1" 416 + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.0.1.tgz#1ffdc1ba4bc289919e54b9414b74c9c2f7b2b718" 417 + integrity sha512-oKwHvOI73ICSYRPe8WwyYPTtiuOAkLSbY8/MfWF3qDEd/sa8EDyZzin3BaXTqufir/O/Gzea4E8Zl14XU4Mlyg== 418 + dependencies: 419 + "@jest/console" "^26.0.1" 420 + "@jest/types" "^26.0.1" 421 + "@types/istanbul-lib-coverage" "^2.0.0" 422 + collect-v8-coverage "^1.0.0" 423 + 424 + "@jest/test-sequencer@^26.0.1": 425 + version "26.0.1" 426 + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.0.1.tgz#b0563424728f3fe9e75d1442b9ae4c11da73f090" 427 + integrity sha512-ssga8XlwfP8YjbDcmVhwNlrmblddMfgUeAkWIXts1V22equp2GMIHxm7cyeD5Q/B0ZgKPK/tngt45sH99yLLGg== 428 + dependencies: 429 + "@jest/test-result" "^26.0.1" 430 + graceful-fs "^4.2.4" 431 + jest-haste-map "^26.0.1" 432 + jest-runner "^26.0.1" 433 + jest-runtime "^26.0.1" 434 + 435 + "@jest/transform@^26.0.1": 436 + version "26.0.1" 437 + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.0.1.tgz#0e3ecbb34a11cd4b2080ed0a9c4856cf0ceb0639" 438 + integrity sha512-pPRkVkAQ91drKGbzCfDOoHN838+FSbYaEAvBXvKuWeeRRUD8FjwXkqfUNUZL6Ke48aA/1cqq/Ni7kVMCoqagWA== 439 + dependencies: 440 + "@babel/core" "^7.1.0" 441 + "@jest/types" "^26.0.1" 442 + babel-plugin-istanbul "^6.0.0" 443 + chalk "^4.0.0" 444 + convert-source-map "^1.4.0" 445 + fast-json-stable-stringify "^2.0.0" 446 + graceful-fs "^4.2.4" 447 + jest-haste-map "^26.0.1" 448 + jest-regex-util "^26.0.0" 449 + jest-util "^26.0.1" 450 + micromatch "^4.0.2" 451 + pirates "^4.0.1" 452 + slash "^3.0.0" 453 + source-map "^0.6.1" 454 + write-file-atomic "^3.0.0" 455 + 456 + "@jest/types@^26.0.1": 457 + version "26.0.1" 458 + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.0.1.tgz#b78333fbd113fa7aec8d39de24f88de8686dac67" 459 + integrity sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA== 460 + dependencies: 461 + "@types/istanbul-lib-coverage" "^2.0.0" 462 + "@types/istanbul-reports" "^1.1.1" 463 + "@types/yargs" "^15.0.0" 464 + chalk "^4.0.0" 465 + 466 + "@rollup/plugin-buble@^0.21.3": 467 + version "0.21.3" 468 + resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz#1649a915b1d051a4f430d40e7734a7f67a69b33e" 469 + integrity sha512-Iv8cCuFPnMdqV4pcyU+OrfjOfagPArRQ1PyQjx5KgHk3dARedI+8PNTLSMpJts0lQJr8yF2pAU4GxpxCBJ9HYw== 470 + dependencies: 471 + "@rollup/pluginutils" "^3.0.8" 472 + "@types/buble" "^0.19.2" 473 + buble "^0.20.0" 474 + 475 + "@rollup/plugin-commonjs@^11.1.0": 476 + version "11.1.0" 477 + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef" 478 + integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA== 479 + dependencies: 480 + "@rollup/pluginutils" "^3.0.8" 481 + commondir "^1.0.1" 482 + estree-walker "^1.0.1" 483 + glob "^7.1.2" 484 + is-reference "^1.1.2" 485 + magic-string "^0.25.2" 486 + resolve "^1.11.0" 487 + 488 + "@rollup/plugin-node-resolve@^7.1.3": 489 + version "7.1.3" 490 + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" 491 + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== 492 + dependencies: 493 + "@rollup/pluginutils" "^3.0.8" 494 + "@types/resolve" "0.0.8" 495 + builtin-modules "^3.1.0" 496 + is-module "^1.0.0" 497 + resolve "^1.14.2" 498 + 499 + "@rollup/pluginutils@^3.0.8": 500 + version "3.0.10" 501 + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.10.tgz#a659b9025920378494cd8f8c59fbf9b3a50d5f12" 502 + integrity sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw== 503 + dependencies: 504 + "@types/estree" "0.0.39" 505 + estree-walker "^1.0.1" 506 + picomatch "^2.2.2" 507 + 508 + "@samverschueren/stream-to-observable@^0.3.0": 509 + version "0.3.0" 510 + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" 511 + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== 512 + dependencies: 513 + any-observable "^0.3.0" 514 + 515 + "@sinonjs/commons@^1.7.0": 516 + version "1.7.2" 517 + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" 518 + integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== 519 + dependencies: 520 + type-detect "4.0.8" 521 + 522 + "@sinonjs/fake-timers@^6.0.1": 523 + version "6.0.1" 524 + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" 525 + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== 526 + dependencies: 527 + "@sinonjs/commons" "^1.7.0" 528 + 529 + "@types/babel__core@^7.1.7": 530 + version "7.1.7" 531 + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" 532 + integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== 533 + dependencies: 534 + "@babel/parser" "^7.1.0" 535 + "@babel/types" "^7.0.0" 536 + "@types/babel__generator" "*" 537 + "@types/babel__template" "*" 538 + "@types/babel__traverse" "*" 539 + 540 + "@types/babel__generator@*": 541 + version "7.6.1" 542 + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" 543 + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== 544 + dependencies: 545 + "@babel/types" "^7.0.0" 546 + 547 + "@types/babel__template@*": 548 + version "7.0.2" 549 + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" 550 + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== 551 + dependencies: 552 + "@babel/parser" "^7.1.0" 553 + "@babel/types" "^7.0.0" 554 + 555 + "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": 556 + version "7.0.11" 557 + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" 558 + integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== 559 + dependencies: 560 + "@babel/types" "^7.3.0" 561 + 562 + "@types/buble@^0.19.2": 563 + version "0.19.2" 564 + resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" 565 + integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q== 566 + dependencies: 567 + magic-string "^0.25.0" 568 + 569 + "@types/color-name@^1.1.1": 570 + version "1.1.1" 571 + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 572 + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 573 + 574 + "@types/estree@0.0.39": 575 + version "0.0.39" 576 + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 577 + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 578 + 579 + "@types/graceful-fs@^4.1.2": 580 + version "4.1.3" 581 + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" 582 + integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== 583 + dependencies: 584 + "@types/node" "*" 585 + 586 + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 587 + version "2.0.2" 588 + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" 589 + integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== 590 + 591 + "@types/istanbul-lib-report@*": 592 + version "3.0.0" 593 + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 594 + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 595 + dependencies: 596 + "@types/istanbul-lib-coverage" "*" 597 + 598 + "@types/istanbul-reports@^1.1.1": 599 + version "1.1.2" 600 + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" 601 + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== 602 + dependencies: 603 + "@types/istanbul-lib-coverage" "*" 604 + "@types/istanbul-lib-report" "*" 605 + 606 + "@types/node@*": 607 + version "14.0.1" 608 + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" 609 + integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== 610 + 611 + "@types/normalize-package-data@^2.4.0": 612 + version "2.4.0" 613 + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" 614 + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== 615 + 616 + "@types/parse-json@^4.0.0": 617 + version "4.0.0" 618 + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 619 + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 620 + 621 + "@types/prettier@^2.0.0": 622 + version "2.0.0" 623 + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" 624 + integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== 625 + 626 + "@types/resolve@0.0.8": 627 + version "0.0.8" 628 + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" 629 + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== 630 + dependencies: 631 + "@types/node" "*" 632 + 633 + "@types/stack-utils@^1.0.1": 634 + version "1.0.1" 635 + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" 636 + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== 637 + 638 + "@types/yargs-parser@*": 639 + version "15.0.0" 640 + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" 641 + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== 642 + 643 + "@types/yargs@^15.0.0": 644 + version "15.0.5" 645 + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" 646 + integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== 647 + dependencies: 648 + "@types/yargs-parser" "*" 649 + 650 + abab@^2.0.3: 651 + version "2.0.3" 652 + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" 653 + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== 654 + 655 + acorn-dynamic-import@^4.0.0: 656 + version "4.0.0" 657 + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" 658 + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== 659 + 660 + acorn-globals@^6.0.0: 661 + version "6.0.0" 662 + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" 663 + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== 664 + dependencies: 665 + acorn "^7.1.1" 666 + acorn-walk "^7.1.1" 667 + 668 + acorn-jsx@^5.2.0: 669 + version "5.2.0" 670 + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 671 + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 672 + 673 + acorn-walk@^7.1.1: 674 + version "7.1.1" 675 + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" 676 + integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== 677 + 678 + acorn@^6.4.1: 679 + version "6.4.1" 680 + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" 681 + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== 682 + 683 + acorn@^7.1.1: 684 + version "7.2.0" 685 + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" 686 + integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== 687 + 688 + aggregate-error@^3.0.0: 689 + version "3.0.1" 690 + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" 691 + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== 692 + dependencies: 693 + clean-stack "^2.0.0" 694 + indent-string "^4.0.0" 695 + 696 + ajv@^6.5.5: 697 + version "6.12.2" 698 + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" 699 + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== 700 + dependencies: 701 + fast-deep-equal "^3.1.1" 702 + fast-json-stable-stringify "^2.0.0" 703 + json-schema-traverse "^0.4.1" 704 + uri-js "^4.2.2" 705 + 706 + ansi-colors@^3.2.1: 707 + version "3.2.4" 708 + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" 709 + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== 710 + 711 + ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: 712 + version "4.3.1" 713 + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 714 + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 715 + dependencies: 716 + type-fest "^0.11.0" 717 + 718 + ansi-regex@^5.0.0: 719 + version "5.0.0" 720 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 721 + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 722 + 723 + ansi-styles@^3.2.1: 724 + version "3.2.1" 725 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 726 + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 727 + dependencies: 728 + color-convert "^1.9.0" 729 + 730 + ansi-styles@^4.0.0, ansi-styles@^4.1.0: 731 + version "4.2.1" 732 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 733 + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 734 + dependencies: 735 + "@types/color-name" "^1.1.1" 736 + color-convert "^2.0.1" 737 + 738 + any-observable@^0.3.0: 739 + version "0.3.0" 740 + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" 741 + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== 742 + 743 + anymatch@^2.0.0: 744 + version "2.0.0" 745 + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 746 + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== 747 + dependencies: 748 + micromatch "^3.1.4" 749 + normalize-path "^2.1.1" 750 + 751 + anymatch@^3.0.3: 752 + version "3.1.1" 753 + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 754 + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 755 + dependencies: 756 + normalize-path "^3.0.0" 757 + picomatch "^2.0.4" 758 + 759 + argparse@^1.0.7: 760 + version "1.0.10" 761 + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 762 + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 763 + dependencies: 764 + sprintf-js "~1.0.2" 765 + 766 + arr-diff@^4.0.0: 767 + version "4.0.0" 768 + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 769 + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 770 + 771 + arr-flatten@^1.1.0: 772 + version "1.1.0" 773 + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 774 + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 775 + 776 + arr-union@^3.1.0: 777 + version "3.1.0" 778 + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 779 + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 780 + 781 + array-unique@^0.3.2: 782 + version "0.3.2" 783 + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 784 + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 785 + 786 + asn1@~0.2.3: 787 + version "0.2.4" 788 + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 789 + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 790 + dependencies: 791 + safer-buffer "~2.1.0" 792 + 793 + assert-plus@1.0.0, assert-plus@^1.0.0: 794 + version "1.0.0" 795 + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 796 + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 797 + 798 + assign-symbols@^1.0.0: 799 + version "1.0.0" 800 + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 801 + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 802 + 803 + astral-regex@^2.0.0: 804 + version "2.0.0" 805 + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 806 + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 807 + 808 + asynckit@^0.4.0: 809 + version "0.4.0" 810 + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 811 + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 812 + 813 + atob@^2.1.2: 814 + version "2.1.2" 815 + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 816 + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 817 + 818 + aws-sign2@~0.7.0: 819 + version "0.7.0" 820 + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 821 + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 822 + 823 + aws4@^1.8.0: 824 + version "1.9.1" 825 + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" 826 + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== 827 + 828 + babel-jest@^26.0.1: 829 + version "26.0.1" 830 + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.0.1.tgz#450139ce4b6c17174b136425bda91885c397bc46" 831 + integrity sha512-Z4GGmSNQ8pX3WS1O+6v3fo41YItJJZsVxG5gIQ+HuB/iuAQBJxMTHTwz292vuYws1LnHfwSRgoqI+nxdy/pcvw== 832 + dependencies: 833 + "@jest/transform" "^26.0.1" 834 + "@jest/types" "^26.0.1" 835 + "@types/babel__core" "^7.1.7" 836 + babel-plugin-istanbul "^6.0.0" 837 + babel-preset-jest "^26.0.0" 838 + chalk "^4.0.0" 839 + graceful-fs "^4.2.4" 840 + slash "^3.0.0" 841 + 842 + babel-plugin-closure-elimination@^1.3.1: 843 + version "1.3.1" 844 + resolved "https://registry.yarnpkg.com/babel-plugin-closure-elimination/-/babel-plugin-closure-elimination-1.3.1.tgz#c5143ae2cceed6e8451c71ca164bbe1f84852087" 845 + integrity sha512-9B85Xh/S32Crdq8K398NZdh2Sl3crBMTpsy8k7OEij41ZztPYc1CACIZ8D1ZNTHuj62HWaStXkevIOF+DjfuWg== 846 + 847 + babel-plugin-dynamic-import-node@^2.3.3: 848 + version "2.3.3" 849 + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" 850 + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== 851 + dependencies: 852 + object.assign "^4.1.0" 853 + 854 + babel-plugin-istanbul@^6.0.0: 855 + version "6.0.0" 856 + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" 857 + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== 858 + dependencies: 859 + "@babel/helper-plugin-utils" "^7.0.0" 860 + "@istanbuljs/load-nyc-config" "^1.0.0" 861 + "@istanbuljs/schema" "^0.1.2" 862 + istanbul-lib-instrument "^4.0.0" 863 + test-exclude "^6.0.0" 864 + 865 + babel-plugin-jest-hoist@^26.0.0: 866 + version "26.0.0" 867 + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.0.0.tgz#fd1d35f95cf8849fc65cb01b5e58aedd710b34a8" 868 + integrity sha512-+AuoehOrjt9irZL7DOt2+4ZaTM6dlu1s5TTS46JBa0/qem4dy7VNW3tMb96qeEqcIh20LD73TVNtmVEeymTG7w== 869 + dependencies: 870 + "@babel/template" "^7.3.3" 871 + "@babel/types" "^7.3.3" 872 + "@types/babel__traverse" "^7.0.6" 873 + 874 + babel-preset-current-node-syntax@^0.1.2: 875 + version "0.1.2" 876 + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" 877 + integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== 878 + dependencies: 879 + "@babel/plugin-syntax-async-generators" "^7.8.4" 880 + "@babel/plugin-syntax-bigint" "^7.8.3" 881 + "@babel/plugin-syntax-class-properties" "^7.8.3" 882 + "@babel/plugin-syntax-json-strings" "^7.8.3" 883 + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 884 + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 885 + "@babel/plugin-syntax-numeric-separator" "^7.8.3" 886 + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 887 + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 888 + "@babel/plugin-syntax-optional-chaining" "^7.8.3" 889 + 890 + babel-preset-jest@^26.0.0: 891 + version "26.0.0" 892 + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.0.0.tgz#1eac82f513ad36c4db2e9263d7c485c825b1faa6" 893 + integrity sha512-9ce+DatAa31DpR4Uir8g4Ahxs5K4W4L8refzt+qHWQANb6LhGcAEfIFgLUwk67oya2cCUd6t4eUMtO/z64ocNw== 894 + dependencies: 895 + babel-plugin-jest-hoist "^26.0.0" 896 + babel-preset-current-node-syntax "^0.1.2" 897 + 898 + balanced-match@^1.0.0: 899 + version "1.0.0" 900 + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 901 + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 902 + 903 + base@^0.11.1: 904 + version "0.11.2" 905 + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 906 + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 907 + dependencies: 908 + cache-base "^1.0.1" 909 + class-utils "^0.3.5" 910 + component-emitter "^1.2.1" 911 + define-property "^1.0.0" 912 + isobject "^3.0.1" 913 + mixin-deep "^1.2.0" 914 + pascalcase "^0.1.1" 915 + 916 + bcrypt-pbkdf@^1.0.0: 917 + version "1.0.2" 918 + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 919 + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 920 + dependencies: 921 + tweetnacl "^0.14.3" 922 + 923 + brace-expansion@^1.1.7: 924 + version "1.1.11" 925 + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 926 + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 927 + dependencies: 928 + balanced-match "^1.0.0" 929 + concat-map "0.0.1" 930 + 931 + braces@^2.3.1: 932 + version "2.3.2" 933 + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 934 + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 935 + dependencies: 936 + arr-flatten "^1.1.0" 937 + array-unique "^0.3.2" 938 + extend-shallow "^2.0.1" 939 + fill-range "^4.0.0" 940 + isobject "^3.0.1" 941 + repeat-element "^1.1.2" 942 + snapdragon "^0.8.1" 943 + snapdragon-node "^2.0.1" 944 + split-string "^3.0.2" 945 + to-regex "^3.0.1" 946 + 947 + braces@^3.0.1: 948 + version "3.0.2" 949 + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 950 + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 951 + dependencies: 952 + fill-range "^7.0.1" 953 + 954 + browser-process-hrtime@^1.0.0: 955 + version "1.0.0" 956 + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 957 + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== 958 + 959 + bser@2.1.1: 960 + version "2.1.1" 961 + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" 962 + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== 963 + dependencies: 964 + node-int64 "^0.4.0" 965 + 966 + buble@^0.20.0: 967 + version "0.20.0" 968 + resolved "https://registry.yarnpkg.com/buble/-/buble-0.20.0.tgz#a143979a8d968b7f76b57f38f2e7ce7cfe938d1f" 969 + integrity sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw== 970 + dependencies: 971 + acorn "^6.4.1" 972 + acorn-dynamic-import "^4.0.0" 973 + acorn-jsx "^5.2.0" 974 + chalk "^2.4.2" 975 + magic-string "^0.25.7" 976 + minimist "^1.2.5" 977 + regexpu-core "4.5.4" 978 + 979 + buffer-from@^1.0.0: 980 + version "1.1.1" 981 + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 982 + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 983 + 984 + builtin-modules@^3.1.0: 985 + version "3.1.0" 986 + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 987 + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 988 + 989 + cache-base@^1.0.1: 990 + version "1.0.1" 991 + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 992 + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 993 + dependencies: 994 + collection-visit "^1.0.0" 995 + component-emitter "^1.2.1" 996 + get-value "^2.0.6" 997 + has-value "^1.0.0" 998 + isobject "^3.0.1" 999 + set-value "^2.0.0" 1000 + to-object-path "^0.3.0" 1001 + union-value "^1.0.0" 1002 + unset-value "^1.0.0" 1003 + 1004 + callsites@^3.0.0: 1005 + version "3.1.0" 1006 + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 1007 + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1008 + 1009 + camelcase@^5.0.0, camelcase@^5.3.1: 1010 + version "5.3.1" 1011 + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 1012 + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 1013 + 1014 + camelcase@^6.0.0: 1015 + version "6.0.0" 1016 + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" 1017 + integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== 1018 + 1019 + capture-exit@^2.0.0: 1020 + version "2.0.0" 1021 + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" 1022 + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== 1023 + dependencies: 1024 + rsvp "^4.8.4" 1025 + 1026 + caseless@~0.12.0: 1027 + version "0.12.0" 1028 + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 1029 + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 1030 + 1031 + chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: 1032 + version "2.4.2" 1033 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1034 + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 1035 + dependencies: 1036 + ansi-styles "^3.2.1" 1037 + escape-string-regexp "^1.0.5" 1038 + supports-color "^5.3.0" 1039 + 1040 + chalk@^3.0.0: 1041 + version "3.0.0" 1042 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 1043 + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 1044 + dependencies: 1045 + ansi-styles "^4.1.0" 1046 + supports-color "^7.1.0" 1047 + 1048 + chalk@^4.0.0: 1049 + version "4.0.0" 1050 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" 1051 + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== 1052 + dependencies: 1053 + ansi-styles "^4.1.0" 1054 + supports-color "^7.1.0" 1055 + 1056 + char-regex@^1.0.2: 1057 + version "1.0.2" 1058 + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" 1059 + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== 1060 + 1061 + ci-info@^2.0.0: 1062 + version "2.0.0" 1063 + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 1064 + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 1065 + 1066 + class-utils@^0.3.5: 1067 + version "0.3.6" 1068 + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 1069 + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 1070 + dependencies: 1071 + arr-union "^3.1.0" 1072 + define-property "^0.2.5" 1073 + isobject "^3.0.0" 1074 + static-extend "^0.1.1" 1075 + 1076 + clean-stack@^2.0.0: 1077 + version "2.2.0" 1078 + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 1079 + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 1080 + 1081 + cli-cursor@^3.1.0: 1082 + version "3.1.0" 1083 + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 1084 + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 1085 + dependencies: 1086 + restore-cursor "^3.1.0" 1087 + 1088 + cli-truncate@^2.1.0: 1089 + version "2.1.0" 1090 + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 1091 + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 1092 + dependencies: 1093 + slice-ansi "^3.0.0" 1094 + string-width "^4.2.0" 1095 + 1096 + cliui@^6.0.0: 1097 + version "6.0.0" 1098 + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" 1099 + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== 1100 + dependencies: 1101 + string-width "^4.2.0" 1102 + strip-ansi "^6.0.0" 1103 + wrap-ansi "^6.2.0" 1104 + 1105 + clone@^1.0.2: 1106 + version "1.0.4" 1107 + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 1108 + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= 1109 + 1110 + co@^4.6.0: 1111 + version "4.6.0" 1112 + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 1113 + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= 1114 + 1115 + collect-v8-coverage@^1.0.0: 1116 + version "1.0.1" 1117 + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 1118 + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== 1119 + 1120 + collection-visit@^1.0.0: 1121 + version "1.0.0" 1122 + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 1123 + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 1124 + dependencies: 1125 + map-visit "^1.0.0" 1126 + object-visit "^1.0.0" 1127 + 1128 + color-convert@^1.9.0: 1129 + version "1.9.3" 1130 + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 1131 + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1132 + dependencies: 1133 + color-name "1.1.3" 1134 + 1135 + color-convert@^2.0.1: 1136 + version "2.0.1" 1137 + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1138 + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1139 + dependencies: 1140 + color-name "~1.1.4" 1141 + 1142 + color-name@1.1.3: 1143 + version "1.1.3" 1144 + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1145 + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 1146 + 1147 + color-name@~1.1.4: 1148 + version "1.1.4" 1149 + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1150 + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1151 + 1152 + combined-stream@^1.0.6, combined-stream@~1.0.6: 1153 + version "1.0.8" 1154 + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1155 + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1156 + dependencies: 1157 + delayed-stream "~1.0.0" 1158 + 1159 + commander@^5.0.0: 1160 + version "5.1.0" 1161 + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" 1162 + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== 1163 + 1164 + commondir@^1.0.1: 1165 + version "1.0.1" 1166 + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 1167 + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 1168 + 1169 + compare-versions@^3.6.0: 1170 + version "3.6.0" 1171 + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" 1172 + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== 1173 + 1174 + component-emitter@^1.2.1: 1175 + version "1.3.0" 1176 + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 1177 + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 1178 + 1179 + concat-map@0.0.1: 1180 + version "0.0.1" 1181 + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1182 + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 1183 + 1184 + convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: 1185 + version "1.7.0" 1186 + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 1187 + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 1188 + dependencies: 1189 + safe-buffer "~5.1.1" 1190 + 1191 + copy-descriptor@^0.1.0: 1192 + version "0.1.1" 1193 + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 1194 + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 1195 + 1196 + core-util-is@1.0.2: 1197 + version "1.0.2" 1198 + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1199 + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 1200 + 1201 + cosmiconfig@^6.0.0: 1202 + version "6.0.0" 1203 + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" 1204 + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== 1205 + dependencies: 1206 + "@types/parse-json" "^4.0.0" 1207 + import-fresh "^3.1.0" 1208 + parse-json "^5.0.0" 1209 + path-type "^4.0.0" 1210 + yaml "^1.7.2" 1211 + 1212 + cross-spawn@^6.0.0, cross-spawn@^6.0.5: 1213 + version "6.0.5" 1214 + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 1215 + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 1216 + dependencies: 1217 + nice-try "^1.0.4" 1218 + path-key "^2.0.1" 1219 + semver "^5.5.0" 1220 + shebang-command "^1.2.0" 1221 + which "^1.2.9" 1222 + 1223 + cross-spawn@^7.0.0: 1224 + version "7.0.2" 1225 + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" 1226 + integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== 1227 + dependencies: 1228 + path-key "^3.1.0" 1229 + shebang-command "^2.0.0" 1230 + which "^2.0.1" 1231 + 1232 + cssom@^0.4.4: 1233 + version "0.4.4" 1234 + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" 1235 + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== 1236 + 1237 + cssom@~0.3.6: 1238 + version "0.3.8" 1239 + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 1240 + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 1241 + 1242 + cssstyle@^2.2.0: 1243 + version "2.3.0" 1244 + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 1245 + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 1246 + dependencies: 1247 + cssom "~0.3.6" 1248 + 1249 + dashdash@^1.12.0: 1250 + version "1.14.1" 1251 + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 1252 + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 1253 + dependencies: 1254 + assert-plus "^1.0.0" 1255 + 1256 + data-urls@^2.0.0: 1257 + version "2.0.0" 1258 + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" 1259 + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== 1260 + dependencies: 1261 + abab "^2.0.3" 1262 + whatwg-mimetype "^2.3.0" 1263 + whatwg-url "^8.0.0" 1264 + 1265 + debug@^2.2.0, debug@^2.3.3: 1266 + version "2.6.9" 1267 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 1268 + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 1269 + dependencies: 1270 + ms "2.0.0" 1271 + 1272 + debug@^4.1.0, debug@^4.1.1: 1273 + version "4.1.1" 1274 + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 1275 + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 1276 + dependencies: 1277 + ms "^2.1.1" 1278 + 1279 + decamelize@^1.2.0: 1280 + version "1.2.0" 1281 + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 1282 + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 1283 + 1284 + decimal.js@^10.2.0: 1285 + version "10.2.0" 1286 + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" 1287 + integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== 1288 + 1289 + decode-uri-component@^0.2.0: 1290 + version "0.2.0" 1291 + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 1292 + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 1293 + 1294 + dedent@^0.7.0: 1295 + version "0.7.0" 1296 + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 1297 + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 1298 + 1299 + deep-is@~0.1.3: 1300 + version "0.1.3" 1301 + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 1302 + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 1303 + 1304 + deepmerge@^4.2.2: 1305 + version "4.2.2" 1306 + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 1307 + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 1308 + 1309 + defaults@^1.0.3: 1310 + version "1.0.3" 1311 + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 1312 + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= 1313 + dependencies: 1314 + clone "^1.0.2" 1315 + 1316 + define-properties@^1.1.2, define-properties@^1.1.3: 1317 + version "1.1.3" 1318 + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 1319 + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 1320 + dependencies: 1321 + object-keys "^1.0.12" 1322 + 1323 + define-property@^0.2.5: 1324 + version "0.2.5" 1325 + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 1326 + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 1327 + dependencies: 1328 + is-descriptor "^0.1.0" 1329 + 1330 + define-property@^1.0.0: 1331 + version "1.0.0" 1332 + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 1333 + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 1334 + dependencies: 1335 + is-descriptor "^1.0.0" 1336 + 1337 + define-property@^2.0.2: 1338 + version "2.0.2" 1339 + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 1340 + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 1341 + dependencies: 1342 + is-descriptor "^1.0.2" 1343 + isobject "^3.0.1" 1344 + 1345 + delayed-stream@~1.0.0: 1346 + version "1.0.0" 1347 + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1348 + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 1349 + 1350 + detect-newline@^3.0.0: 1351 + version "3.1.0" 1352 + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1353 + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1354 + 1355 + diff-sequences@^26.0.0: 1356 + version "26.0.0" 1357 + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6" 1358 + integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg== 1359 + 1360 + domexception@^2.0.1: 1361 + version "2.0.1" 1362 + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" 1363 + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== 1364 + dependencies: 1365 + webidl-conversions "^5.0.0" 1366 + 1367 + ecc-jsbn@~0.1.1: 1368 + version "0.1.2" 1369 + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 1370 + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 1371 + dependencies: 1372 + jsbn "~0.1.0" 1373 + safer-buffer "^2.1.0" 1374 + 1375 + elegant-spinner@^2.0.0: 1376 + version "2.0.0" 1377 + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94" 1378 + integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA== 1379 + 1380 + emoji-regex@^8.0.0: 1381 + version "8.0.0" 1382 + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1383 + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1384 + 1385 + end-of-stream@^1.1.0: 1386 + version "1.4.4" 1387 + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 1388 + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 1389 + dependencies: 1390 + once "^1.4.0" 1391 + 1392 + enquirer@^2.3.4: 1393 + version "2.3.5" 1394 + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" 1395 + integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== 1396 + dependencies: 1397 + ansi-colors "^3.2.1" 1398 + 1399 + error-ex@^1.3.1: 1400 + version "1.3.2" 1401 + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1402 + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1403 + dependencies: 1404 + is-arrayish "^0.2.1" 1405 + 1406 + es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: 1407 + version "1.17.5" 1408 + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" 1409 + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== 1410 + dependencies: 1411 + es-to-primitive "^1.2.1" 1412 + function-bind "^1.1.1" 1413 + has "^1.0.3" 1414 + has-symbols "^1.0.1" 1415 + is-callable "^1.1.5" 1416 + is-regex "^1.0.5" 1417 + object-inspect "^1.7.0" 1418 + object-keys "^1.1.1" 1419 + object.assign "^4.1.0" 1420 + string.prototype.trimleft "^2.1.1" 1421 + string.prototype.trimright "^2.1.1" 1422 + 1423 + es-to-primitive@^1.2.1: 1424 + version "1.2.1" 1425 + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 1426 + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 1427 + dependencies: 1428 + is-callable "^1.1.4" 1429 + is-date-object "^1.0.1" 1430 + is-symbol "^1.0.2" 1431 + 1432 + escape-string-regexp@^1.0.5: 1433 + version "1.0.5" 1434 + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1435 + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1436 + 1437 + escape-string-regexp@^2.0.0: 1438 + version "2.0.0" 1439 + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1440 + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1441 + 1442 + escodegen@^1.14.1: 1443 + version "1.14.1" 1444 + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" 1445 + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== 1446 + dependencies: 1447 + esprima "^4.0.1" 1448 + estraverse "^4.2.0" 1449 + esutils "^2.0.2" 1450 + optionator "^0.8.1" 1451 + optionalDependencies: 1452 + source-map "~0.6.1" 1453 + 1454 + esprima@^4.0.0, esprima@^4.0.1: 1455 + version "4.0.1" 1456 + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1457 + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1458 + 1459 + estraverse@^4.2.0: 1460 + version "4.3.0" 1461 + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1462 + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1463 + 1464 + estree-walker@^0.6.1: 1465 + version "0.6.1" 1466 + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 1467 + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 1468 + 1469 + estree-walker@^1.0.1: 1470 + version "1.0.1" 1471 + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" 1472 + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== 1473 + 1474 + esutils@^2.0.2: 1475 + version "2.0.3" 1476 + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1477 + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1478 + 1479 + exec-sh@^0.3.2: 1480 + version "0.3.4" 1481 + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" 1482 + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== 1483 + 1484 + execa@^1.0.0: 1485 + version "1.0.0" 1486 + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 1487 + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== 1488 + dependencies: 1489 + cross-spawn "^6.0.0" 1490 + get-stream "^4.0.0" 1491 + is-stream "^1.1.0" 1492 + npm-run-path "^2.0.0" 1493 + p-finally "^1.0.0" 1494 + signal-exit "^3.0.0" 1495 + strip-eof "^1.0.0" 1496 + 1497 + execa@^4.0.0: 1498 + version "4.0.1" 1499 + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.1.tgz#988488781f1f0238cd156f7aaede11c3e853b4c1" 1500 + integrity sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw== 1501 + dependencies: 1502 + cross-spawn "^7.0.0" 1503 + get-stream "^5.0.0" 1504 + human-signals "^1.1.1" 1505 + is-stream "^2.0.0" 1506 + merge-stream "^2.0.0" 1507 + npm-run-path "^4.0.0" 1508 + onetime "^5.1.0" 1509 + signal-exit "^3.0.2" 1510 + strip-final-newline "^2.0.0" 1511 + 1512 + exit@^0.1.2: 1513 + version "0.1.2" 1514 + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1515 + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= 1516 + 1517 + expand-brackets@^2.1.4: 1518 + version "2.1.4" 1519 + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 1520 + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 1521 + dependencies: 1522 + debug "^2.3.3" 1523 + define-property "^0.2.5" 1524 + extend-shallow "^2.0.1" 1525 + posix-character-classes "^0.1.0" 1526 + regex-not "^1.0.0" 1527 + snapdragon "^0.8.1" 1528 + to-regex "^3.0.1" 1529 + 1530 + expect@^26.0.1: 1531 + version "26.0.1" 1532 + resolved "https://registry.yarnpkg.com/expect/-/expect-26.0.1.tgz#18697b9611a7e2725e20ba3ceadda49bc9865421" 1533 + integrity sha512-QcCy4nygHeqmbw564YxNbHTJlXh47dVID2BUP52cZFpLU9zHViMFK6h07cC1wf7GYCTIigTdAXhVua8Yl1FkKg== 1534 + dependencies: 1535 + "@jest/types" "^26.0.1" 1536 + ansi-styles "^4.0.0" 1537 + jest-get-type "^26.0.0" 1538 + jest-matcher-utils "^26.0.1" 1539 + jest-message-util "^26.0.1" 1540 + jest-regex-util "^26.0.0" 1541 + 1542 + extend-shallow@^2.0.1: 1543 + version "2.0.1" 1544 + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 1545 + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 1546 + dependencies: 1547 + is-extendable "^0.1.0" 1548 + 1549 + extend-shallow@^3.0.0, extend-shallow@^3.0.2: 1550 + version "3.0.2" 1551 + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 1552 + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 1553 + dependencies: 1554 + assign-symbols "^1.0.0" 1555 + is-extendable "^1.0.1" 1556 + 1557 + extend@~3.0.2: 1558 + version "3.0.2" 1559 + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1560 + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 1561 + 1562 + extglob@^2.0.4: 1563 + version "2.0.4" 1564 + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 1565 + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 1566 + dependencies: 1567 + array-unique "^0.3.2" 1568 + define-property "^1.0.0" 1569 + expand-brackets "^2.1.4" 1570 + extend-shallow "^2.0.1" 1571 + fragment-cache "^0.2.1" 1572 + regex-not "^1.0.0" 1573 + snapdragon "^0.8.1" 1574 + to-regex "^3.0.1" 1575 + 1576 + extsprintf@1.3.0: 1577 + version "1.3.0" 1578 + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 1579 + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 1580 + 1581 + extsprintf@^1.2.0: 1582 + version "1.4.0" 1583 + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 1584 + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 1585 + 1586 + fast-deep-equal@^3.1.1: 1587 + version "3.1.1" 1588 + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 1589 + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 1590 + 1591 + fast-json-stable-stringify@^2.0.0: 1592 + version "2.1.0" 1593 + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1594 + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1595 + 1596 + fast-levenshtein@~2.0.6: 1597 + version "2.0.6" 1598 + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1599 + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1600 + 1601 + fb-watchman@^2.0.0: 1602 + version "2.0.1" 1603 + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" 1604 + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== 1605 + dependencies: 1606 + bser "2.1.1" 1607 + 1608 + figures@^3.2.0: 1609 + version "3.2.0" 1610 + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 1611 + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 1612 + dependencies: 1613 + escape-string-regexp "^1.0.5" 1614 + 1615 + fill-range@^4.0.0: 1616 + version "4.0.0" 1617 + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 1618 + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 1619 + dependencies: 1620 + extend-shallow "^2.0.1" 1621 + is-number "^3.0.0" 1622 + repeat-string "^1.6.1" 1623 + to-regex-range "^2.1.0" 1624 + 1625 + fill-range@^7.0.1: 1626 + version "7.0.1" 1627 + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1628 + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1629 + dependencies: 1630 + to-regex-range "^5.0.1" 1631 + 1632 + find-up@^4.0.0, find-up@^4.1.0: 1633 + version "4.1.0" 1634 + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1635 + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1636 + dependencies: 1637 + locate-path "^5.0.0" 1638 + path-exists "^4.0.0" 1639 + 1640 + find-versions@^3.2.0: 1641 + version "3.2.0" 1642 + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" 1643 + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== 1644 + dependencies: 1645 + semver-regex "^2.0.0" 1646 + 1647 + for-in@^1.0.2: 1648 + version "1.0.2" 1649 + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1650 + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 1651 + 1652 + forever-agent@~0.6.1: 1653 + version "0.6.1" 1654 + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1655 + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 1656 + 1657 + form-data@~2.3.2: 1658 + version "2.3.3" 1659 + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 1660 + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 1661 + dependencies: 1662 + asynckit "^0.4.0" 1663 + combined-stream "^1.0.6" 1664 + mime-types "^2.1.12" 1665 + 1666 + fragment-cache@^0.2.1: 1667 + version "0.2.1" 1668 + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1669 + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 1670 + dependencies: 1671 + map-cache "^0.2.2" 1672 + 1673 + fs.realpath@^1.0.0: 1674 + version "1.0.0" 1675 + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1676 + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1677 + 1678 + fsevents@^2.1.2, fsevents@~2.1.2: 1679 + version "2.1.3" 1680 + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 1681 + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 1682 + 1683 + function-bind@^1.1.1: 1684 + version "1.1.1" 1685 + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1686 + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1687 + 1688 + gensync@^1.0.0-beta.1: 1689 + version "1.0.0-beta.1" 1690 + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" 1691 + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== 1692 + 1693 + get-caller-file@^2.0.1: 1694 + version "2.0.5" 1695 + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1696 + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1697 + 1698 + get-own-enumerable-property-symbols@^3.0.0: 1699 + version "3.0.2" 1700 + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 1701 + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 1702 + 1703 + get-stream@^4.0.0: 1704 + version "4.1.0" 1705 + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 1706 + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 1707 + dependencies: 1708 + pump "^3.0.0" 1709 + 1710 + get-stream@^5.0.0: 1711 + version "5.1.0" 1712 + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" 1713 + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== 1714 + dependencies: 1715 + pump "^3.0.0" 1716 + 1717 + get-value@^2.0.3, get-value@^2.0.6: 1718 + version "2.0.6" 1719 + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1720 + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 1721 + 1722 + getpass@^0.1.1: 1723 + version "0.1.7" 1724 + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1725 + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 1726 + dependencies: 1727 + assert-plus "^1.0.0" 1728 + 1729 + glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: 1730 + version "7.1.6" 1731 + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1732 + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 1733 + dependencies: 1734 + fs.realpath "^1.0.0" 1735 + inflight "^1.0.4" 1736 + inherits "2" 1737 + minimatch "^3.0.4" 1738 + once "^1.3.0" 1739 + path-is-absolute "^1.0.0" 1740 + 1741 + globals@^11.1.0: 1742 + version "11.12.0" 1743 + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1744 + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1745 + 1746 + graceful-fs@^4.1.2, graceful-fs@^4.2.4: 1747 + version "4.2.4" 1748 + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 1749 + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 1750 + 1751 + growly@^1.3.0: 1752 + version "1.3.0" 1753 + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" 1754 + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= 1755 + 1756 + har-schema@^2.0.0: 1757 + version "2.0.0" 1758 + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1759 + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 1760 + 1761 + har-validator@~5.1.3: 1762 + version "5.1.3" 1763 + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 1764 + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 1765 + dependencies: 1766 + ajv "^6.5.5" 1767 + har-schema "^2.0.0" 1768 + 1769 + has-flag@^3.0.0: 1770 + version "3.0.0" 1771 + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1772 + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1773 + 1774 + has-flag@^4.0.0: 1775 + version "4.0.0" 1776 + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1777 + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1778 + 1779 + has-symbols@^1.0.0, has-symbols@^1.0.1: 1780 + version "1.0.1" 1781 + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1782 + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1783 + 1784 + has-value@^0.3.1: 1785 + version "0.3.1" 1786 + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1787 + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 1788 + dependencies: 1789 + get-value "^2.0.3" 1790 + has-values "^0.1.4" 1791 + isobject "^2.0.0" 1792 + 1793 + has-value@^1.0.0: 1794 + version "1.0.0" 1795 + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1796 + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 1797 + dependencies: 1798 + get-value "^2.0.6" 1799 + has-values "^1.0.0" 1800 + isobject "^3.0.0" 1801 + 1802 + has-values@^0.1.4: 1803 + version "0.1.4" 1804 + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1805 + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 1806 + 1807 + has-values@^1.0.0: 1808 + version "1.0.0" 1809 + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1810 + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 1811 + dependencies: 1812 + is-number "^3.0.0" 1813 + kind-of "^4.0.0" 1814 + 1815 + has@^1.0.3: 1816 + version "1.0.3" 1817 + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1818 + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1819 + dependencies: 1820 + function-bind "^1.1.1" 1821 + 1822 + hosted-git-info@^2.1.4: 1823 + version "2.8.8" 1824 + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" 1825 + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== 1826 + 1827 + html-encoding-sniffer@^2.0.1: 1828 + version "2.0.1" 1829 + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" 1830 + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== 1831 + dependencies: 1832 + whatwg-encoding "^1.0.5" 1833 + 1834 + html-escaper@^2.0.0: 1835 + version "2.0.2" 1836 + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1837 + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1838 + 1839 + http-signature@~1.2.0: 1840 + version "1.2.0" 1841 + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1842 + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 1843 + dependencies: 1844 + assert-plus "^1.0.0" 1845 + jsprim "^1.2.2" 1846 + sshpk "^1.7.0" 1847 + 1848 + human-signals@^1.1.1: 1849 + version "1.1.1" 1850 + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" 1851 + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== 1852 + 1853 + husky@^4.2.5: 1854 + version "4.2.5" 1855 + resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" 1856 + integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== 1857 + dependencies: 1858 + chalk "^4.0.0" 1859 + ci-info "^2.0.0" 1860 + compare-versions "^3.6.0" 1861 + cosmiconfig "^6.0.0" 1862 + find-versions "^3.2.0" 1863 + opencollective-postinstall "^2.0.2" 1864 + pkg-dir "^4.2.0" 1865 + please-upgrade-node "^3.2.0" 1866 + slash "^3.0.0" 1867 + which-pm-runs "^1.0.0" 1868 + 1869 + iconv-lite@0.4.24: 1870 + version "0.4.24" 1871 + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1872 + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1873 + dependencies: 1874 + safer-buffer ">= 2.1.2 < 3" 1875 + 1876 + import-fresh@^3.1.0: 1877 + version "3.2.1" 1878 + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 1879 + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 1880 + dependencies: 1881 + parent-module "^1.0.0" 1882 + resolve-from "^4.0.0" 1883 + 1884 + import-local@^3.0.2: 1885 + version "3.0.2" 1886 + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" 1887 + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== 1888 + dependencies: 1889 + pkg-dir "^4.2.0" 1890 + resolve-cwd "^3.0.0" 1891 + 1892 + imurmurhash@^0.1.4: 1893 + version "0.1.4" 1894 + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1895 + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1896 + 1897 + indent-string@^4.0.0: 1898 + version "4.0.0" 1899 + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 1900 + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 1901 + 1902 + inflight@^1.0.4: 1903 + version "1.0.6" 1904 + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1905 + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1906 + dependencies: 1907 + once "^1.3.0" 1908 + wrappy "1" 1909 + 1910 + inherits@2: 1911 + version "2.0.4" 1912 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1913 + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1914 + 1915 + ip-regex@^2.1.0: 1916 + version "2.1.0" 1917 + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" 1918 + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= 1919 + 1920 + is-accessor-descriptor@^0.1.6: 1921 + version "0.1.6" 1922 + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1923 + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 1924 + dependencies: 1925 + kind-of "^3.0.2" 1926 + 1927 + is-accessor-descriptor@^1.0.0: 1928 + version "1.0.0" 1929 + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1930 + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 1931 + dependencies: 1932 + kind-of "^6.0.0" 1933 + 1934 + is-arrayish@^0.2.1: 1935 + version "0.2.1" 1936 + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1937 + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1938 + 1939 + is-buffer@^1.1.5: 1940 + version "1.1.6" 1941 + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1942 + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1943 + 1944 + is-callable@^1.1.4, is-callable@^1.1.5: 1945 + version "1.1.5" 1946 + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 1947 + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 1948 + 1949 + is-ci@^2.0.0: 1950 + version "2.0.0" 1951 + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 1952 + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 1953 + dependencies: 1954 + ci-info "^2.0.0" 1955 + 1956 + is-data-descriptor@^0.1.4: 1957 + version "0.1.4" 1958 + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1959 + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 1960 + dependencies: 1961 + kind-of "^3.0.2" 1962 + 1963 + is-data-descriptor@^1.0.0: 1964 + version "1.0.0" 1965 + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1966 + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 1967 + dependencies: 1968 + kind-of "^6.0.0" 1969 + 1970 + is-date-object@^1.0.1: 1971 + version "1.0.2" 1972 + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1973 + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1974 + 1975 + is-descriptor@^0.1.0: 1976 + version "0.1.6" 1977 + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1978 + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 1979 + dependencies: 1980 + is-accessor-descriptor "^0.1.6" 1981 + is-data-descriptor "^0.1.4" 1982 + kind-of "^5.0.0" 1983 + 1984 + is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1985 + version "1.0.2" 1986 + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1987 + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 1988 + dependencies: 1989 + is-accessor-descriptor "^1.0.0" 1990 + is-data-descriptor "^1.0.0" 1991 + kind-of "^6.0.2" 1992 + 1993 + is-docker@^2.0.0: 1994 + version "2.0.0" 1995 + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" 1996 + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== 1997 + 1998 + is-extendable@^0.1.0, is-extendable@^0.1.1: 1999 + version "0.1.1" 2000 + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 2001 + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 2002 + 2003 + is-extendable@^1.0.1: 2004 + version "1.0.1" 2005 + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 2006 + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 2007 + dependencies: 2008 + is-plain-object "^2.0.4" 2009 + 2010 + is-fullwidth-code-point@^3.0.0: 2011 + version "3.0.0" 2012 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 2013 + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 2014 + 2015 + is-generator-fn@^2.0.0: 2016 + version "2.1.0" 2017 + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 2018 + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 2019 + 2020 + is-module@^1.0.0: 2021 + version "1.0.0" 2022 + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 2023 + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 2024 + 2025 + is-number@^3.0.0: 2026 + version "3.0.0" 2027 + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 2028 + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 2029 + dependencies: 2030 + kind-of "^3.0.2" 2031 + 2032 + is-number@^7.0.0: 2033 + version "7.0.0" 2034 + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 2035 + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 2036 + 2037 + is-obj@^1.0.1: 2038 + version "1.0.1" 2039 + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 2040 + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 2041 + 2042 + is-plain-object@^2.0.3, is-plain-object@^2.0.4: 2043 + version "2.0.4" 2044 + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 2045 + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 2046 + dependencies: 2047 + isobject "^3.0.1" 2048 + 2049 + is-potential-custom-element-name@^1.0.0: 2050 + version "1.0.0" 2051 + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" 2052 + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= 2053 + 2054 + is-reference@^1.1.2: 2055 + version "1.1.4" 2056 + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" 2057 + integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== 2058 + dependencies: 2059 + "@types/estree" "0.0.39" 2060 + 2061 + is-regex@^1.0.5: 2062 + version "1.0.5" 2063 + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 2064 + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== 2065 + dependencies: 2066 + has "^1.0.3" 2067 + 2068 + is-regexp@^1.0.0: 2069 + version "1.0.0" 2070 + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 2071 + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 2072 + 2073 + is-stream@^1.1.0: 2074 + version "1.1.0" 2075 + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 2076 + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 2077 + 2078 + is-stream@^2.0.0: 2079 + version "2.0.0" 2080 + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 2081 + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 2082 + 2083 + is-symbol@^1.0.2: 2084 + version "1.0.3" 2085 + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 2086 + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 2087 + dependencies: 2088 + has-symbols "^1.0.1" 2089 + 2090 + is-typedarray@^1.0.0, is-typedarray@~1.0.0: 2091 + version "1.0.0" 2092 + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 2093 + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 2094 + 2095 + is-windows@^1.0.2: 2096 + version "1.0.2" 2097 + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 2098 + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 2099 + 2100 + is-wsl@^2.1.1: 2101 + version "2.2.0" 2102 + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" 2103 + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== 2104 + dependencies: 2105 + is-docker "^2.0.0" 2106 + 2107 + isarray@1.0.0: 2108 + version "1.0.0" 2109 + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 2110 + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 2111 + 2112 + isexe@^2.0.0: 2113 + version "2.0.0" 2114 + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 2115 + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 2116 + 2117 + isobject@^2.0.0: 2118 + version "2.1.0" 2119 + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 2120 + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 2121 + dependencies: 2122 + isarray "1.0.0" 2123 + 2124 + isobject@^3.0.0, isobject@^3.0.1: 2125 + version "3.0.1" 2126 + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 2127 + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 2128 + 2129 + isstream@~0.1.2: 2130 + version "0.1.2" 2131 + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 2132 + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 2133 + 2134 + istanbul-lib-coverage@^3.0.0: 2135 + version "3.0.0" 2136 + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" 2137 + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== 2138 + 2139 + istanbul-lib-instrument@^4.0.0: 2140 + version "4.0.3" 2141 + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" 2142 + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== 2143 + dependencies: 2144 + "@babel/core" "^7.7.5" 2145 + "@istanbuljs/schema" "^0.1.2" 2146 + istanbul-lib-coverage "^3.0.0" 2147 + semver "^6.3.0" 2148 + 2149 + istanbul-lib-report@^3.0.0: 2150 + version "3.0.0" 2151 + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 2152 + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 2153 + dependencies: 2154 + istanbul-lib-coverage "^3.0.0" 2155 + make-dir "^3.0.0" 2156 + supports-color "^7.1.0" 2157 + 2158 + istanbul-lib-source-maps@^4.0.0: 2159 + version "4.0.0" 2160 + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" 2161 + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== 2162 + dependencies: 2163 + debug "^4.1.1" 2164 + istanbul-lib-coverage "^3.0.0" 2165 + source-map "^0.6.1" 2166 + 2167 + istanbul-reports@^3.0.2: 2168 + version "3.0.2" 2169 + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" 2170 + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== 2171 + dependencies: 2172 + html-escaper "^2.0.0" 2173 + istanbul-lib-report "^3.0.0" 2174 + 2175 + jest-changed-files@^26.0.1: 2176 + version "26.0.1" 2177 + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.0.1.tgz#1334630c6a1ad75784120f39c3aa9278e59f349f" 2178 + integrity sha512-q8LP9Sint17HaE2LjxQXL+oYWW/WeeXMPE2+Op9X3mY8IEGFVc14xRxFjUuXUbcPAlDLhtWdIEt59GdQbn76Hw== 2179 + dependencies: 2180 + "@jest/types" "^26.0.1" 2181 + execa "^4.0.0" 2182 + throat "^5.0.0" 2183 + 2184 + jest-cli@^26.0.1: 2185 + version "26.0.1" 2186 + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.0.1.tgz#3a42399a4cbc96a519b99ad069a117d955570cac" 2187 + integrity sha512-pFLfSOBcbG9iOZWaMK4Een+tTxi/Wcm34geqZEqrst9cZDkTQ1LZ2CnBrTlHWuYAiTMFr0EQeK52ScyFU8wK+w== 2188 + dependencies: 2189 + "@jest/core" "^26.0.1" 2190 + "@jest/test-result" "^26.0.1" 2191 + "@jest/types" "^26.0.1" 2192 + chalk "^4.0.0" 2193 + exit "^0.1.2" 2194 + graceful-fs "^4.2.4" 2195 + import-local "^3.0.2" 2196 + is-ci "^2.0.0" 2197 + jest-config "^26.0.1" 2198 + jest-util "^26.0.1" 2199 + jest-validate "^26.0.1" 2200 + prompts "^2.0.1" 2201 + yargs "^15.3.1" 2202 + 2203 + jest-config@^26.0.1: 2204 + version "26.0.1" 2205 + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.0.1.tgz#096a3d4150afadf719d1fab00e9a6fb2d6d67507" 2206 + integrity sha512-9mWKx2L1LFgOXlDsC4YSeavnblN6A4CPfXFiobq+YYLaBMymA/SczN7xYTSmLaEYHZOcB98UdoN4m5uNt6tztg== 2207 + dependencies: 2208 + "@babel/core" "^7.1.0" 2209 + "@jest/test-sequencer" "^26.0.1" 2210 + "@jest/types" "^26.0.1" 2211 + babel-jest "^26.0.1" 2212 + chalk "^4.0.0" 2213 + deepmerge "^4.2.2" 2214 + glob "^7.1.1" 2215 + graceful-fs "^4.2.4" 2216 + jest-environment-jsdom "^26.0.1" 2217 + jest-environment-node "^26.0.1" 2218 + jest-get-type "^26.0.0" 2219 + jest-jasmine2 "^26.0.1" 2220 + jest-regex-util "^26.0.0" 2221 + jest-resolve "^26.0.1" 2222 + jest-util "^26.0.1" 2223 + jest-validate "^26.0.1" 2224 + micromatch "^4.0.2" 2225 + pretty-format "^26.0.1" 2226 + 2227 + jest-diff@^26.0.1: 2228 + version "26.0.1" 2229 + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.0.1.tgz#c44ab3cdd5977d466de69c46929e0e57f89aa1de" 2230 + integrity sha512-odTcHyl5X+U+QsczJmOjWw5tPvww+y9Yim5xzqxVl/R1j4z71+fHW4g8qu1ugMmKdFdxw+AtQgs5mupPnzcIBQ== 2231 + dependencies: 2232 + chalk "^4.0.0" 2233 + diff-sequences "^26.0.0" 2234 + jest-get-type "^26.0.0" 2235 + pretty-format "^26.0.1" 2236 + 2237 + jest-docblock@^26.0.0: 2238 + version "26.0.0" 2239 + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" 2240 + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== 2241 + dependencies: 2242 + detect-newline "^3.0.0" 2243 + 2244 + jest-each@^26.0.1: 2245 + version "26.0.1" 2246 + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.0.1.tgz#633083061619302fc90dd8f58350f9d77d67be04" 2247 + integrity sha512-OTgJlwXCAR8NIWaXFL5DBbeS4QIYPuNASkzSwMCJO+ywo9BEa6TqkaSWsfR7VdbMLdgYJqSfQcIyjJCNwl5n4Q== 2248 + dependencies: 2249 + "@jest/types" "^26.0.1" 2250 + chalk "^4.0.0" 2251 + jest-get-type "^26.0.0" 2252 + jest-util "^26.0.1" 2253 + pretty-format "^26.0.1" 2254 + 2255 + jest-environment-jsdom@^26.0.1: 2256 + version "26.0.1" 2257 + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.0.1.tgz#217690852e5bdd7c846a4e3b50c8ffd441dfd249" 2258 + integrity sha512-u88NJa3aptz2Xix2pFhihRBAatwZHWwSiRLBDBQE1cdJvDjPvv7ZGA0NQBxWwDDn7D0g1uHqxM8aGgfA9Bx49g== 2259 + dependencies: 2260 + "@jest/environment" "^26.0.1" 2261 + "@jest/fake-timers" "^26.0.1" 2262 + "@jest/types" "^26.0.1" 2263 + jest-mock "^26.0.1" 2264 + jest-util "^26.0.1" 2265 + jsdom "^16.2.2" 2266 + 2267 + jest-environment-node@^26.0.1: 2268 + version "26.0.1" 2269 + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.0.1.tgz#584a9ff623124ff6eeb49e0131b5f7612b310b13" 2270 + integrity sha512-4FRBWcSn5yVo0KtNav7+5NH5Z/tEgDLp7VRQVS5tCouWORxj+nI+1tOLutM07Zb2Qi7ja+HEDoOUkjBSWZg/IQ== 2271 + dependencies: 2272 + "@jest/environment" "^26.0.1" 2273 + "@jest/fake-timers" "^26.0.1" 2274 + "@jest/types" "^26.0.1" 2275 + jest-mock "^26.0.1" 2276 + jest-util "^26.0.1" 2277 + 2278 + jest-get-type@^26.0.0: 2279 + version "26.0.0" 2280 + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" 2281 + integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== 2282 + 2283 + jest-haste-map@^26.0.1: 2284 + version "26.0.1" 2285 + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.0.1.tgz#40dcc03c43ac94d25b8618075804d09cd5d49de7" 2286 + integrity sha512-J9kBl/EdjmDsvyv7CiyKY5+DsTvVOScenprz/fGqfLg/pm1gdjbwwQ98nW0t+OIt+f+5nAVaElvn/6wP5KO7KA== 2287 + dependencies: 2288 + "@jest/types" "^26.0.1" 2289 + "@types/graceful-fs" "^4.1.2" 2290 + anymatch "^3.0.3" 2291 + fb-watchman "^2.0.0" 2292 + graceful-fs "^4.2.4" 2293 + jest-serializer "^26.0.0" 2294 + jest-util "^26.0.1" 2295 + jest-worker "^26.0.0" 2296 + micromatch "^4.0.2" 2297 + sane "^4.0.3" 2298 + walker "^1.0.7" 2299 + which "^2.0.2" 2300 + optionalDependencies: 2301 + fsevents "^2.1.2" 2302 + 2303 + jest-jasmine2@^26.0.1: 2304 + version "26.0.1" 2305 + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.0.1.tgz#947c40ee816636ba23112af3206d6fa7b23c1c1c" 2306 + integrity sha512-ILaRyiWxiXOJ+RWTKupzQWwnPaeXPIoLS5uW41h18varJzd9/7I0QJGqg69fhTT1ev9JpSSo9QtalriUN0oqOg== 2307 + dependencies: 2308 + "@babel/traverse" "^7.1.0" 2309 + "@jest/environment" "^26.0.1" 2310 + "@jest/source-map" "^26.0.0" 2311 + "@jest/test-result" "^26.0.1" 2312 + "@jest/types" "^26.0.1" 2313 + chalk "^4.0.0" 2314 + co "^4.6.0" 2315 + expect "^26.0.1" 2316 + is-generator-fn "^2.0.0" 2317 + jest-each "^26.0.1" 2318 + jest-matcher-utils "^26.0.1" 2319 + jest-message-util "^26.0.1" 2320 + jest-runtime "^26.0.1" 2321 + jest-snapshot "^26.0.1" 2322 + jest-util "^26.0.1" 2323 + pretty-format "^26.0.1" 2324 + throat "^5.0.0" 2325 + 2326 + jest-leak-detector@^26.0.1: 2327 + version "26.0.1" 2328 + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.0.1.tgz#79b19ab3f41170e0a78eb8fa754a116d3447fb8c" 2329 + integrity sha512-93FR8tJhaYIWrWsbmVN1pQ9ZNlbgRpfvrnw5LmgLRX0ckOJ8ut/I35CL7awi2ecq6Ca4lL59bEK9hr7nqoHWPA== 2330 + dependencies: 2331 + jest-get-type "^26.0.0" 2332 + pretty-format "^26.0.1" 2333 + 2334 + jest-matcher-utils@^26.0.1: 2335 + version "26.0.1" 2336 + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.0.1.tgz#12e1fc386fe4f14678f4cc8dbd5ba75a58092911" 2337 + integrity sha512-PUMlsLth0Azen8Q2WFTwnSkGh2JZ8FYuwijC8NR47vXKpsrKmA1wWvgcj1CquuVfcYiDEdj985u5Wmg7COEARw== 2338 + dependencies: 2339 + chalk "^4.0.0" 2340 + jest-diff "^26.0.1" 2341 + jest-get-type "^26.0.0" 2342 + pretty-format "^26.0.1" 2343 + 2344 + jest-message-util@^26.0.1: 2345 + version "26.0.1" 2346 + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.0.1.tgz#07af1b42fc450b4cc8e90e4c9cef11b33ce9b0ac" 2347 + integrity sha512-CbK8uQREZ8umUfo8+zgIfEt+W7HAHjQCoRaNs4WxKGhAYBGwEyvxuK81FXa7VeB9pwDEXeeKOB2qcsNVCAvB7Q== 2348 + dependencies: 2349 + "@babel/code-frame" "^7.0.0" 2350 + "@jest/types" "^26.0.1" 2351 + "@types/stack-utils" "^1.0.1" 2352 + chalk "^4.0.0" 2353 + graceful-fs "^4.2.4" 2354 + micromatch "^4.0.2" 2355 + slash "^3.0.0" 2356 + stack-utils "^2.0.2" 2357 + 2358 + jest-mock@^26.0.1: 2359 + version "26.0.1" 2360 + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.0.1.tgz#7fd1517ed4955397cf1620a771dc2d61fad8fd40" 2361 + integrity sha512-MpYTBqycuPYSY6xKJognV7Ja46/TeRbAZept987Zp+tuJvMN0YBWyyhG9mXyYQaU3SBI0TUlSaO5L3p49agw7Q== 2362 + dependencies: 2363 + "@jest/types" "^26.0.1" 2364 + 2365 + jest-pnp-resolver@^1.2.1: 2366 + version "1.2.1" 2367 + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" 2368 + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== 2369 + 2370 + jest-regex-util@^26.0.0: 2371 + version "26.0.0" 2372 + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" 2373 + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== 2374 + 2375 + jest-resolve-dependencies@^26.0.1: 2376 + version "26.0.1" 2377 + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.0.1.tgz#607ba7ccc32151d185a477cff45bf33bce417f0b" 2378 + integrity sha512-9d5/RS/ft0vB/qy7jct/qAhzJsr6fRQJyGAFigK3XD4hf9kIbEH5gks4t4Z7kyMRhowU6HWm/o8ILqhaHdSqLw== 2379 + dependencies: 2380 + "@jest/types" "^26.0.1" 2381 + jest-regex-util "^26.0.0" 2382 + jest-snapshot "^26.0.1" 2383 + 2384 + jest-resolve@^26.0.1: 2385 + version "26.0.1" 2386 + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.0.1.tgz#21d1ee06f9ea270a343a8893051aeed940cde736" 2387 + integrity sha512-6jWxk0IKZkPIVTvq6s72RH735P8f9eCJW3IM5CX/SJFeKq1p2cZx0U49wf/SdMlhaB/anann5J2nCJj6HrbezQ== 2388 + dependencies: 2389 + "@jest/types" "^26.0.1" 2390 + chalk "^4.0.0" 2391 + graceful-fs "^4.2.4" 2392 + jest-pnp-resolver "^1.2.1" 2393 + jest-util "^26.0.1" 2394 + read-pkg-up "^7.0.1" 2395 + resolve "^1.17.0" 2396 + slash "^3.0.0" 2397 + 2398 + jest-runner@^26.0.1: 2399 + version "26.0.1" 2400 + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.0.1.tgz#ea03584b7ae4bacfb7e533d680a575a49ae35d50" 2401 + integrity sha512-CApm0g81b49Znm4cZekYQK67zY7kkB4umOlI2Dx5CwKAzdgw75EN+ozBHRvxBzwo1ZLYZ07TFxkaPm+1t4d8jA== 2402 + dependencies: 2403 + "@jest/console" "^26.0.1" 2404 + "@jest/environment" "^26.0.1" 2405 + "@jest/test-result" "^26.0.1" 2406 + "@jest/types" "^26.0.1" 2407 + chalk "^4.0.0" 2408 + exit "^0.1.2" 2409 + graceful-fs "^4.2.4" 2410 + jest-config "^26.0.1" 2411 + jest-docblock "^26.0.0" 2412 + jest-haste-map "^26.0.1" 2413 + jest-jasmine2 "^26.0.1" 2414 + jest-leak-detector "^26.0.1" 2415 + jest-message-util "^26.0.1" 2416 + jest-resolve "^26.0.1" 2417 + jest-runtime "^26.0.1" 2418 + jest-util "^26.0.1" 2419 + jest-worker "^26.0.0" 2420 + source-map-support "^0.5.6" 2421 + throat "^5.0.0" 2422 + 2423 + jest-runtime@^26.0.1: 2424 + version "26.0.1" 2425 + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.0.1.tgz#a121a6321235987d294168e282d52b364d7d3f89" 2426 + integrity sha512-Ci2QhYFmANg5qaXWf78T2Pfo6GtmIBn2rRaLnklRyEucmPccmCKvS9JPljcmtVamsdMmkyNkVFb9pBTD6si9Lw== 2427 + dependencies: 2428 + "@jest/console" "^26.0.1" 2429 + "@jest/environment" "^26.0.1" 2430 + "@jest/fake-timers" "^26.0.1" 2431 + "@jest/globals" "^26.0.1" 2432 + "@jest/source-map" "^26.0.0" 2433 + "@jest/test-result" "^26.0.1" 2434 + "@jest/transform" "^26.0.1" 2435 + "@jest/types" "^26.0.1" 2436 + "@types/yargs" "^15.0.0" 2437 + chalk "^4.0.0" 2438 + collect-v8-coverage "^1.0.0" 2439 + exit "^0.1.2" 2440 + glob "^7.1.3" 2441 + graceful-fs "^4.2.4" 2442 + jest-config "^26.0.1" 2443 + jest-haste-map "^26.0.1" 2444 + jest-message-util "^26.0.1" 2445 + jest-mock "^26.0.1" 2446 + jest-regex-util "^26.0.0" 2447 + jest-resolve "^26.0.1" 2448 + jest-snapshot "^26.0.1" 2449 + jest-util "^26.0.1" 2450 + jest-validate "^26.0.1" 2451 + slash "^3.0.0" 2452 + strip-bom "^4.0.0" 2453 + yargs "^15.3.1" 2454 + 2455 + jest-serializer@^26.0.0: 2456 + version "26.0.0" 2457 + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.0.0.tgz#f6c521ddb976943b93e662c0d4d79245abec72a3" 2458 + integrity sha512-sQGXLdEGWFAE4wIJ2ZaIDb+ikETlUirEOBsLXdoBbeLhTHkZUJwgk3+M8eyFizhM6le43PDCCKPA1hzkSDo4cQ== 2459 + dependencies: 2460 + graceful-fs "^4.2.4" 2461 + 2462 + jest-snapshot@^26.0.1: 2463 + version "26.0.1" 2464 + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.0.1.tgz#1baa942bd83d47b837a84af7fcf5fd4a236da399" 2465 + integrity sha512-jxd+cF7+LL+a80qh6TAnTLUZHyQoWwEHSUFJjkw35u3Gx+BZUNuXhYvDqHXr62UQPnWo2P6fvQlLjsU93UKyxA== 2466 + dependencies: 2467 + "@babel/types" "^7.0.0" 2468 + "@jest/types" "^26.0.1" 2469 + "@types/prettier" "^2.0.0" 2470 + chalk "^4.0.0" 2471 + expect "^26.0.1" 2472 + graceful-fs "^4.2.4" 2473 + jest-diff "^26.0.1" 2474 + jest-get-type "^26.0.0" 2475 + jest-matcher-utils "^26.0.1" 2476 + jest-message-util "^26.0.1" 2477 + jest-resolve "^26.0.1" 2478 + make-dir "^3.0.0" 2479 + natural-compare "^1.4.0" 2480 + pretty-format "^26.0.1" 2481 + semver "^7.3.2" 2482 + 2483 + jest-util@^26.0.1: 2484 + version "26.0.1" 2485 + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.0.1.tgz#72c4c51177b695fdd795ca072a6f94e3d7cef00a" 2486 + integrity sha512-byQ3n7ad1BO/WyFkYvlWQHTsomB6GIewBh8tlGtusiylAlaxQ1UpS0XYH0ngOyhZuHVLN79Qvl6/pMiDMSSG1g== 2487 + dependencies: 2488 + "@jest/types" "^26.0.1" 2489 + chalk "^4.0.0" 2490 + graceful-fs "^4.2.4" 2491 + is-ci "^2.0.0" 2492 + make-dir "^3.0.0" 2493 + 2494 + jest-validate@^26.0.1: 2495 + version "26.0.1" 2496 + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.0.1.tgz#a62987e1da5b7f724130f904725e22f4e5b2e23c" 2497 + integrity sha512-u0xRc+rbmov/VqXnX3DlkxD74rHI/CfS5xaV2VpeaVySjbb1JioNVOyly5b56q2l9ZKe7bVG5qWmjfctkQb0bA== 2498 + dependencies: 2499 + "@jest/types" "^26.0.1" 2500 + camelcase "^6.0.0" 2501 + chalk "^4.0.0" 2502 + jest-get-type "^26.0.0" 2503 + leven "^3.1.0" 2504 + pretty-format "^26.0.1" 2505 + 2506 + jest-watcher@^26.0.1: 2507 + version "26.0.1" 2508 + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.0.1.tgz#5b5e3ebbdf10c240e22a98af66d645631afda770" 2509 + integrity sha512-pdZPydsS8475f89kGswaNsN3rhP6lnC3/QDCppP7bg1L9JQz7oU9Mb/5xPETk1RHDCWeqmVC47M4K5RR7ejxFw== 2510 + dependencies: 2511 + "@jest/test-result" "^26.0.1" 2512 + "@jest/types" "^26.0.1" 2513 + ansi-escapes "^4.2.1" 2514 + chalk "^4.0.0" 2515 + jest-util "^26.0.1" 2516 + string-length "^4.0.1" 2517 + 2518 + jest-worker@^26.0.0: 2519 + version "26.0.0" 2520 + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.0.0.tgz#4920c7714f0a96c6412464718d0c58a3df3fb066" 2521 + integrity sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw== 2522 + dependencies: 2523 + merge-stream "^2.0.0" 2524 + supports-color "^7.0.0" 2525 + 2526 + jest@^26.0.1: 2527 + version "26.0.1" 2528 + resolved "https://registry.yarnpkg.com/jest/-/jest-26.0.1.tgz#5c51a2e58dff7525b65f169721767173bf832694" 2529 + integrity sha512-29Q54kn5Bm7ZGKIuH2JRmnKl85YRigp0o0asTc6Sb6l2ch1DCXIeZTLLFy9ultJvhkTqbswF5DEx4+RlkmCxWg== 2530 + dependencies: 2531 + "@jest/core" "^26.0.1" 2532 + import-local "^3.0.2" 2533 + jest-cli "^26.0.1" 2534 + 2535 + js-tokens@^4.0.0: 2536 + version "4.0.0" 2537 + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 2538 + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 2539 + 2540 + js-yaml@^3.13.1: 2541 + version "3.13.1" 2542 + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 2543 + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 2544 + dependencies: 2545 + argparse "^1.0.7" 2546 + esprima "^4.0.0" 2547 + 2548 + jsbn@~0.1.0: 2549 + version "0.1.1" 2550 + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 2551 + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 2552 + 2553 + jsdom@^16.2.2: 2554 + version "16.2.2" 2555 + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.2.2.tgz#76f2f7541646beb46a938f5dc476b88705bedf2b" 2556 + integrity sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg== 2557 + dependencies: 2558 + abab "^2.0.3" 2559 + acorn "^7.1.1" 2560 + acorn-globals "^6.0.0" 2561 + cssom "^0.4.4" 2562 + cssstyle "^2.2.0" 2563 + data-urls "^2.0.0" 2564 + decimal.js "^10.2.0" 2565 + domexception "^2.0.1" 2566 + escodegen "^1.14.1" 2567 + html-encoding-sniffer "^2.0.1" 2568 + is-potential-custom-element-name "^1.0.0" 2569 + nwsapi "^2.2.0" 2570 + parse5 "5.1.1" 2571 + request "^2.88.2" 2572 + request-promise-native "^1.0.8" 2573 + saxes "^5.0.0" 2574 + symbol-tree "^3.2.4" 2575 + tough-cookie "^3.0.1" 2576 + w3c-hr-time "^1.0.2" 2577 + w3c-xmlserializer "^2.0.0" 2578 + webidl-conversions "^6.0.0" 2579 + whatwg-encoding "^1.0.5" 2580 + whatwg-mimetype "^2.3.0" 2581 + whatwg-url "^8.0.0" 2582 + ws "^7.2.3" 2583 + xml-name-validator "^3.0.0" 2584 + 2585 + jsesc@^2.5.1: 2586 + version "2.5.2" 2587 + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 2588 + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 2589 + 2590 + jsesc@~0.5.0: 2591 + version "0.5.0" 2592 + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 2593 + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 2594 + 2595 + json-parse-better-errors@^1.0.1: 2596 + version "1.0.2" 2597 + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 2598 + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 2599 + 2600 + json-schema-traverse@^0.4.1: 2601 + version "0.4.1" 2602 + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 2603 + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 2604 + 2605 + json-schema@0.2.3: 2606 + version "0.2.3" 2607 + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 2608 + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 2609 + 2610 + json-stringify-safe@~5.0.1: 2611 + version "5.0.1" 2612 + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 2613 + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 2614 + 2615 + json5@^2.1.2: 2616 + version "2.1.3" 2617 + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" 2618 + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== 2619 + dependencies: 2620 + minimist "^1.2.5" 2621 + 2622 + jsprim@^1.2.2: 2623 + version "1.4.1" 2624 + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 2625 + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 2626 + dependencies: 2627 + assert-plus "1.0.0" 2628 + extsprintf "1.3.0" 2629 + json-schema "0.2.3" 2630 + verror "1.10.0" 2631 + 2632 + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 2633 + version "3.2.2" 2634 + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 2635 + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 2636 + dependencies: 2637 + is-buffer "^1.1.5" 2638 + 2639 + kind-of@^4.0.0: 2640 + version "4.0.0" 2641 + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 2642 + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 2643 + dependencies: 2644 + is-buffer "^1.1.5" 2645 + 2646 + kind-of@^5.0.0: 2647 + version "5.1.0" 2648 + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 2649 + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 2650 + 2651 + kind-of@^6.0.0, kind-of@^6.0.2: 2652 + version "6.0.3" 2653 + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 2654 + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 2655 + 2656 + kleur@^3.0.3: 2657 + version "3.0.3" 2658 + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 2659 + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== 2660 + 2661 + leven@^3.1.0: 2662 + version "3.1.0" 2663 + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 2664 + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 2665 + 2666 + levn@~0.3.0: 2667 + version "0.3.0" 2668 + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2669 + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 2670 + dependencies: 2671 + prelude-ls "~1.1.2" 2672 + type-check "~0.3.2" 2673 + 2674 + lines-and-columns@^1.1.6: 2675 + version "1.1.6" 2676 + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 2677 + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 2678 + 2679 + lint-staged@^10.2.2: 2680 + version "10.2.2" 2681 + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.2.tgz#901403c120eb5d9443a0358b55038b04c8a7db9b" 2682 + integrity sha512-78kNqNdDeKrnqWsexAmkOU3Z5wi+1CsQmUmfCuYgMTE8E4rAIX8RHW7xgxwAZ+LAayb7Cca4uYX4P3LlevzjVg== 2683 + dependencies: 2684 + chalk "^4.0.0" 2685 + commander "^5.0.0" 2686 + cosmiconfig "^6.0.0" 2687 + debug "^4.1.1" 2688 + dedent "^0.7.0" 2689 + execa "^4.0.0" 2690 + listr2 "1.3.8" 2691 + log-symbols "^3.0.0" 2692 + micromatch "^4.0.2" 2693 + normalize-path "^3.0.0" 2694 + please-upgrade-node "^3.2.0" 2695 + string-argv "0.3.1" 2696 + stringify-object "^3.3.0" 2697 + 2698 + listr2@1.3.8: 2699 + version "1.3.8" 2700 + resolved "https://registry.yarnpkg.com/listr2/-/listr2-1.3.8.tgz#30924d79de1e936d8c40af54b6465cb814a9c828" 2701 + integrity sha512-iRDRVTgSDz44tBeBBg/35TQz4W+EZBWsDUq7hPpqeUHm7yLPNll0rkwW3lIX9cPAK7l+x95mGWLpxjqxftNfZA== 2702 + dependencies: 2703 + "@samverschueren/stream-to-observable" "^0.3.0" 2704 + chalk "^3.0.0" 2705 + cli-cursor "^3.1.0" 2706 + cli-truncate "^2.1.0" 2707 + elegant-spinner "^2.0.0" 2708 + enquirer "^2.3.4" 2709 + figures "^3.2.0" 2710 + indent-string "^4.0.0" 2711 + log-update "^4.0.0" 2712 + p-map "^4.0.0" 2713 + pad "^3.2.0" 2714 + rxjs "^6.3.3" 2715 + through "^2.3.8" 2716 + uuid "^7.0.2" 2717 + 2718 + load-json-file@^4.0.0: 2719 + version "4.0.0" 2720 + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 2721 + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= 2722 + dependencies: 2723 + graceful-fs "^4.1.2" 2724 + parse-json "^4.0.0" 2725 + pify "^3.0.0" 2726 + strip-bom "^3.0.0" 2727 + 2728 + locate-path@^5.0.0: 2729 + version "5.0.0" 2730 + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 2731 + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 2732 + dependencies: 2733 + p-locate "^4.1.0" 2734 + 2735 + lodash.sortby@^4.7.0: 2736 + version "4.7.0" 2737 + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 2738 + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= 2739 + 2740 + lodash@^4.17.13, lodash@^4.17.15: 2741 + version "4.17.15" 2742 + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 2743 + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 2744 + 2745 + log-symbols@^3.0.0: 2746 + version "3.0.0" 2747 + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" 2748 + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== 2749 + dependencies: 2750 + chalk "^2.4.2" 2751 + 2752 + log-update@^4.0.0: 2753 + version "4.0.0" 2754 + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 2755 + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 2756 + dependencies: 2757 + ansi-escapes "^4.3.0" 2758 + cli-cursor "^3.1.0" 2759 + slice-ansi "^4.0.0" 2760 + wrap-ansi "^6.2.0" 2761 + 2762 + magic-string@^0.25.0, magic-string@^0.25.2, magic-string@^0.25.7: 2763 + version "0.25.7" 2764 + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 2765 + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 2766 + dependencies: 2767 + sourcemap-codec "^1.4.4" 2768 + 2769 + make-dir@^3.0.0: 2770 + version "3.1.0" 2771 + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 2772 + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 2773 + dependencies: 2774 + semver "^6.0.0" 2775 + 2776 + makeerror@1.0.x: 2777 + version "1.0.11" 2778 + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" 2779 + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= 2780 + dependencies: 2781 + tmpl "1.0.x" 2782 + 2783 + map-cache@^0.2.2: 2784 + version "0.2.2" 2785 + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 2786 + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 2787 + 2788 + map-visit@^1.0.0: 2789 + version "1.0.0" 2790 + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 2791 + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 2792 + dependencies: 2793 + object-visit "^1.0.0" 2794 + 2795 + memorystream@^0.3.1: 2796 + version "0.3.1" 2797 + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" 2798 + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= 2799 + 2800 + merge-stream@^2.0.0: 2801 + version "2.0.0" 2802 + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2803 + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2804 + 2805 + micromatch@^3.1.4: 2806 + version "3.1.10" 2807 + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 2808 + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 2809 + dependencies: 2810 + arr-diff "^4.0.0" 2811 + array-unique "^0.3.2" 2812 + braces "^2.3.1" 2813 + define-property "^2.0.2" 2814 + extend-shallow "^3.0.2" 2815 + extglob "^2.0.4" 2816 + fragment-cache "^0.2.1" 2817 + kind-of "^6.0.2" 2818 + nanomatch "^1.2.9" 2819 + object.pick "^1.3.0" 2820 + regex-not "^1.0.0" 2821 + snapdragon "^0.8.1" 2822 + to-regex "^3.0.2" 2823 + 2824 + micromatch@^4.0.2: 2825 + version "4.0.2" 2826 + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 2827 + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 2828 + dependencies: 2829 + braces "^3.0.1" 2830 + picomatch "^2.0.5" 2831 + 2832 + mime-db@1.44.0: 2833 + version "1.44.0" 2834 + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 2835 + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 2836 + 2837 + mime-types@^2.1.12, mime-types@~2.1.19: 2838 + version "2.1.27" 2839 + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 2840 + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== 2841 + dependencies: 2842 + mime-db "1.44.0" 2843 + 2844 + mimic-fn@^2.1.0: 2845 + version "2.1.0" 2846 + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 2847 + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 2848 + 2849 + minimatch@^3.0.4: 2850 + version "3.0.4" 2851 + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2852 + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 2853 + dependencies: 2854 + brace-expansion "^1.1.7" 2855 + 2856 + minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: 2857 + version "1.2.5" 2858 + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2859 + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2860 + 2861 + mixin-deep@^1.2.0: 2862 + version "1.3.2" 2863 + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 2864 + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== 2865 + dependencies: 2866 + for-in "^1.0.2" 2867 + is-extendable "^1.0.1" 2868 + 2869 + ms@2.0.0: 2870 + version "2.0.0" 2871 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2872 + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 2873 + 2874 + ms@^2.1.1: 2875 + version "2.1.2" 2876 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2877 + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2878 + 2879 + nanomatch@^1.2.9: 2880 + version "1.2.13" 2881 + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 2882 + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 2883 + dependencies: 2884 + arr-diff "^4.0.0" 2885 + array-unique "^0.3.2" 2886 + define-property "^2.0.2" 2887 + extend-shallow "^3.0.2" 2888 + fragment-cache "^0.2.1" 2889 + is-windows "^1.0.2" 2890 + kind-of "^6.0.2" 2891 + object.pick "^1.3.0" 2892 + regex-not "^1.0.0" 2893 + snapdragon "^0.8.1" 2894 + to-regex "^3.0.1" 2895 + 2896 + natural-compare@^1.4.0: 2897 + version "1.4.0" 2898 + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2899 + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 2900 + 2901 + nice-try@^1.0.4: 2902 + version "1.0.5" 2903 + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 2904 + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 2905 + 2906 + node-int64@^0.4.0: 2907 + version "0.4.0" 2908 + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2909 + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= 2910 + 2911 + node-modules-regexp@^1.0.0: 2912 + version "1.0.0" 2913 + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" 2914 + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= 2915 + 2916 + node-notifier@^7.0.0: 2917 + version "7.0.0" 2918 + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.0.tgz#513bc42f2aa3a49fce1980a7ff375957c71f718a" 2919 + integrity sha512-y8ThJESxsHcak81PGpzWwQKxzk+5YtP3IxR8AYdpXQ1IB6FmcVzFdZXrkPin49F/DKUCfeeiziB8ptY9npzGuA== 2920 + dependencies: 2921 + growly "^1.3.0" 2922 + is-wsl "^2.1.1" 2923 + semver "^7.2.1" 2924 + shellwords "^0.1.1" 2925 + uuid "^7.0.3" 2926 + which "^2.0.2" 2927 + 2928 + normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: 2929 + version "2.5.0" 2930 + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 2931 + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 2932 + dependencies: 2933 + hosted-git-info "^2.1.4" 2934 + resolve "^1.10.0" 2935 + semver "2 || 3 || 4 || 5" 2936 + validate-npm-package-license "^3.0.1" 2937 + 2938 + normalize-path@^2.1.1: 2939 + version "2.1.1" 2940 + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 2941 + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 2942 + dependencies: 2943 + remove-trailing-separator "^1.0.1" 2944 + 2945 + normalize-path@^3.0.0: 2946 + version "3.0.0" 2947 + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2948 + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2949 + 2950 + npm-run-all@^4.1.5: 2951 + version "4.1.5" 2952 + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" 2953 + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== 2954 + dependencies: 2955 + ansi-styles "^3.2.1" 2956 + chalk "^2.4.1" 2957 + cross-spawn "^6.0.5" 2958 + memorystream "^0.3.1" 2959 + minimatch "^3.0.4" 2960 + pidtree "^0.3.0" 2961 + read-pkg "^3.0.0" 2962 + shell-quote "^1.6.1" 2963 + string.prototype.padend "^3.0.0" 2964 + 2965 + npm-run-path@^2.0.0: 2966 + version "2.0.2" 2967 + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 2968 + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 2969 + dependencies: 2970 + path-key "^2.0.0" 2971 + 2972 + npm-run-path@^4.0.0: 2973 + version "4.0.1" 2974 + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2975 + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 2976 + dependencies: 2977 + path-key "^3.0.0" 2978 + 2979 + nwsapi@^2.2.0: 2980 + version "2.2.0" 2981 + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 2982 + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 2983 + 2984 + oauth-sign@~0.9.0: 2985 + version "0.9.0" 2986 + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 2987 + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 2988 + 2989 + object-copy@^0.1.0: 2990 + version "0.1.0" 2991 + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 2992 + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 2993 + dependencies: 2994 + copy-descriptor "^0.1.0" 2995 + define-property "^0.2.5" 2996 + kind-of "^3.0.3" 2997 + 2998 + object-inspect@^1.7.0: 2999 + version "1.7.0" 3000 + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 3001 + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== 3002 + 3003 + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 3004 + version "1.1.1" 3005 + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 3006 + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 3007 + 3008 + object-visit@^1.0.0: 3009 + version "1.0.1" 3010 + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 3011 + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 3012 + dependencies: 3013 + isobject "^3.0.0" 3014 + 3015 + object.assign@^4.1.0: 3016 + version "4.1.0" 3017 + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 3018 + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 3019 + dependencies: 3020 + define-properties "^1.1.2" 3021 + function-bind "^1.1.1" 3022 + has-symbols "^1.0.0" 3023 + object-keys "^1.0.11" 3024 + 3025 + object.pick@^1.3.0: 3026 + version "1.3.0" 3027 + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 3028 + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 3029 + dependencies: 3030 + isobject "^3.0.1" 3031 + 3032 + once@^1.3.0, once@^1.3.1, once@^1.4.0: 3033 + version "1.4.0" 3034 + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 3035 + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 3036 + dependencies: 3037 + wrappy "1" 3038 + 3039 + onetime@^5.1.0: 3040 + version "5.1.0" 3041 + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 3042 + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== 3043 + dependencies: 3044 + mimic-fn "^2.1.0" 3045 + 3046 + opencollective-postinstall@^2.0.2: 3047 + version "2.0.2" 3048 + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" 3049 + integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== 3050 + 3051 + optionator@^0.8.1: 3052 + version "0.8.3" 3053 + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 3054 + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 3055 + dependencies: 3056 + deep-is "~0.1.3" 3057 + fast-levenshtein "~2.0.6" 3058 + levn "~0.3.0" 3059 + prelude-ls "~1.1.2" 3060 + type-check "~0.3.2" 3061 + word-wrap "~1.2.3" 3062 + 3063 + p-each-series@^2.1.0: 3064 + version "2.1.0" 3065 + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" 3066 + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== 3067 + 3068 + p-finally@^1.0.0: 3069 + version "1.0.0" 3070 + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 3071 + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 3072 + 3073 + p-limit@^2.2.0: 3074 + version "2.3.0" 3075 + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 3076 + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 3077 + dependencies: 3078 + p-try "^2.0.0" 3079 + 3080 + p-locate@^4.1.0: 3081 + version "4.1.0" 3082 + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 3083 + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 3084 + dependencies: 3085 + p-limit "^2.2.0" 3086 + 3087 + p-map@^4.0.0: 3088 + version "4.0.0" 3089 + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 3090 + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 3091 + dependencies: 3092 + aggregate-error "^3.0.0" 3093 + 3094 + p-try@^2.0.0: 3095 + version "2.2.0" 3096 + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 3097 + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 3098 + 3099 + pad@^3.2.0: 3100 + version "3.2.0" 3101 + resolved "https://registry.yarnpkg.com/pad/-/pad-3.2.0.tgz#be7a1d1cb6757049b4ad5b70e71977158fea95d1" 3102 + integrity sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg== 3103 + dependencies: 3104 + wcwidth "^1.0.1" 3105 + 3106 + parent-module@^1.0.0: 3107 + version "1.0.1" 3108 + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 3109 + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 3110 + dependencies: 3111 + callsites "^3.0.0" 3112 + 3113 + parse-json@^4.0.0: 3114 + version "4.0.0" 3115 + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 3116 + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 3117 + dependencies: 3118 + error-ex "^1.3.1" 3119 + json-parse-better-errors "^1.0.1" 3120 + 3121 + parse-json@^5.0.0: 3122 + version "5.0.0" 3123 + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" 3124 + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== 3125 + dependencies: 3126 + "@babel/code-frame" "^7.0.0" 3127 + error-ex "^1.3.1" 3128 + json-parse-better-errors "^1.0.1" 3129 + lines-and-columns "^1.1.6" 3130 + 3131 + parse5@5.1.1: 3132 + version "5.1.1" 3133 + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" 3134 + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== 3135 + 3136 + pascalcase@^0.1.1: 3137 + version "0.1.1" 3138 + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 3139 + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 3140 + 3141 + path-exists@^4.0.0: 3142 + version "4.0.0" 3143 + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 3144 + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 3145 + 3146 + path-is-absolute@^1.0.0: 3147 + version "1.0.1" 3148 + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 3149 + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 3150 + 3151 + path-key@^2.0.0, path-key@^2.0.1: 3152 + version "2.0.1" 3153 + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 3154 + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 3155 + 3156 + path-key@^3.0.0, path-key@^3.1.0: 3157 + version "3.1.1" 3158 + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 3159 + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 3160 + 3161 + path-parse@^1.0.6: 3162 + version "1.0.6" 3163 + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 3164 + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 3165 + 3166 + path-type@^3.0.0: 3167 + version "3.0.0" 3168 + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 3169 + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 3170 + dependencies: 3171 + pify "^3.0.0" 3172 + 3173 + path-type@^4.0.0: 3174 + version "4.0.0" 3175 + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 3176 + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 3177 + 3178 + performance-now@^2.1.0: 3179 + version "2.1.0" 3180 + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 3181 + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 3182 + 3183 + picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.2: 3184 + version "2.2.2" 3185 + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 3186 + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 3187 + 3188 + pidtree@^0.3.0: 3189 + version "0.3.1" 3190 + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" 3191 + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== 3192 + 3193 + pify@^3.0.0: 3194 + version "3.0.0" 3195 + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 3196 + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 3197 + 3198 + pirates@^4.0.1: 3199 + version "4.0.1" 3200 + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" 3201 + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== 3202 + dependencies: 3203 + node-modules-regexp "^1.0.0" 3204 + 3205 + pkg-dir@^4.2.0: 3206 + version "4.2.0" 3207 + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 3208 + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 3209 + dependencies: 3210 + find-up "^4.0.0" 3211 + 3212 + please-upgrade-node@^3.2.0: 3213 + version "3.2.0" 3214 + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 3215 + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 3216 + dependencies: 3217 + semver-compare "^1.0.0" 3218 + 3219 + posix-character-classes@^0.1.0: 3220 + version "0.1.1" 3221 + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 3222 + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 3223 + 3224 + prelude-ls@~1.1.2: 3225 + version "1.1.2" 3226 + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 3227 + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 3228 + 3229 + prettier@^2.0.5: 3230 + version "2.0.5" 3231 + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" 3232 + integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== 3233 + 3234 + pretty-format@^26.0.1: 3235 + version "26.0.1" 3236 + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.0.1.tgz#a4fe54fe428ad2fd3413ca6bbd1ec8c2e277e197" 3237 + integrity sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw== 3238 + dependencies: 3239 + "@jest/types" "^26.0.1" 3240 + ansi-regex "^5.0.0" 3241 + ansi-styles "^4.0.0" 3242 + react-is "^16.12.0" 3243 + 3244 + prompts@^2.0.1: 3245 + version "2.3.2" 3246 + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" 3247 + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== 3248 + dependencies: 3249 + kleur "^3.0.3" 3250 + sisteransi "^1.0.4" 3251 + 3252 + psl@^1.1.28: 3253 + version "1.8.0" 3254 + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 3255 + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 3256 + 3257 + pump@^3.0.0: 3258 + version "3.0.0" 3259 + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 3260 + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 3261 + dependencies: 3262 + end-of-stream "^1.1.0" 3263 + once "^1.3.1" 3264 + 3265 + punycode@^2.1.0, punycode@^2.1.1: 3266 + version "2.1.1" 3267 + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 3268 + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 3269 + 3270 + qs@~6.5.2: 3271 + version "6.5.2" 3272 + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 3273 + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 3274 + 3275 + react-is@^16.12.0: 3276 + version "16.13.1" 3277 + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 3278 + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 3279 + 3280 + read-pkg-up@^7.0.1: 3281 + version "7.0.1" 3282 + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" 3283 + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== 3284 + dependencies: 3285 + find-up "^4.1.0" 3286 + read-pkg "^5.2.0" 3287 + type-fest "^0.8.1" 3288 + 3289 + read-pkg@^3.0.0: 3290 + version "3.0.0" 3291 + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 3292 + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= 3293 + dependencies: 3294 + load-json-file "^4.0.0" 3295 + normalize-package-data "^2.3.2" 3296 + path-type "^3.0.0" 3297 + 3298 + read-pkg@^5.2.0: 3299 + version "5.2.0" 3300 + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" 3301 + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== 3302 + dependencies: 3303 + "@types/normalize-package-data" "^2.4.0" 3304 + normalize-package-data "^2.5.0" 3305 + parse-json "^5.0.0" 3306 + type-fest "^0.6.0" 3307 + 3308 + regenerate-unicode-properties@^8.0.2: 3309 + version "8.2.0" 3310 + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" 3311 + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== 3312 + dependencies: 3313 + regenerate "^1.4.0" 3314 + 3315 + regenerate@^1.4.0: 3316 + version "1.4.0" 3317 + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 3318 + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 3319 + 3320 + regex-not@^1.0.0, regex-not@^1.0.2: 3321 + version "1.0.2" 3322 + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 3323 + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 3324 + dependencies: 3325 + extend-shallow "^3.0.2" 3326 + safe-regex "^1.1.0" 3327 + 3328 + regexpu-core@4.5.4: 3329 + version "4.5.4" 3330 + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" 3331 + integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== 3332 + dependencies: 3333 + regenerate "^1.4.0" 3334 + regenerate-unicode-properties "^8.0.2" 3335 + regjsgen "^0.5.0" 3336 + regjsparser "^0.6.0" 3337 + unicode-match-property-ecmascript "^1.0.4" 3338 + unicode-match-property-value-ecmascript "^1.1.0" 3339 + 3340 + regjsgen@^0.5.0: 3341 + version "0.5.1" 3342 + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" 3343 + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== 3344 + 3345 + regjsparser@^0.6.0: 3346 + version "0.6.4" 3347 + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" 3348 + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== 3349 + dependencies: 3350 + jsesc "~0.5.0" 3351 + 3352 + remove-trailing-separator@^1.0.1: 3353 + version "1.1.0" 3354 + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 3355 + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 3356 + 3357 + repeat-element@^1.1.2: 3358 + version "1.1.3" 3359 + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 3360 + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== 3361 + 3362 + repeat-string@^1.6.1: 3363 + version "1.6.1" 3364 + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 3365 + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 3366 + 3367 + request-promise-core@1.1.3: 3368 + version "1.1.3" 3369 + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" 3370 + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== 3371 + dependencies: 3372 + lodash "^4.17.15" 3373 + 3374 + request-promise-native@^1.0.8: 3375 + version "1.0.8" 3376 + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" 3377 + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== 3378 + dependencies: 3379 + request-promise-core "1.1.3" 3380 + stealthy-require "^1.1.1" 3381 + tough-cookie "^2.3.3" 3382 + 3383 + request@^2.88.2: 3384 + version "2.88.2" 3385 + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 3386 + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 3387 + dependencies: 3388 + aws-sign2 "~0.7.0" 3389 + aws4 "^1.8.0" 3390 + caseless "~0.12.0" 3391 + combined-stream "~1.0.6" 3392 + extend "~3.0.2" 3393 + forever-agent "~0.6.1" 3394 + form-data "~2.3.2" 3395 + har-validator "~5.1.3" 3396 + http-signature "~1.2.0" 3397 + is-typedarray "~1.0.0" 3398 + isstream "~0.1.2" 3399 + json-stringify-safe "~5.0.1" 3400 + mime-types "~2.1.19" 3401 + oauth-sign "~0.9.0" 3402 + performance-now "^2.1.0" 3403 + qs "~6.5.2" 3404 + safe-buffer "^5.1.2" 3405 + tough-cookie "~2.5.0" 3406 + tunnel-agent "^0.6.0" 3407 + uuid "^3.3.2" 3408 + 3409 + require-directory@^2.1.1: 3410 + version "2.1.1" 3411 + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 3412 + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 3413 + 3414 + require-main-filename@^2.0.0: 3415 + version "2.0.0" 3416 + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 3417 + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 3418 + 3419 + resolve-cwd@^3.0.0: 3420 + version "3.0.0" 3421 + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 3422 + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 3423 + dependencies: 3424 + resolve-from "^5.0.0" 3425 + 3426 + resolve-from@^4.0.0: 3427 + version "4.0.0" 3428 + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 3429 + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 3430 + 3431 + resolve-from@^5.0.0: 3432 + version "5.0.0" 3433 + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 3434 + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 3435 + 3436 + resolve-url@^0.2.1: 3437 + version "0.2.1" 3438 + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 3439 + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 3440 + 3441 + resolve@^1.10.0, resolve@^1.11.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2: 3442 + version "1.17.0" 3443 + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 3444 + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 3445 + dependencies: 3446 + path-parse "^1.0.6" 3447 + 3448 + restore-cursor@^3.1.0: 3449 + version "3.1.0" 3450 + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 3451 + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 3452 + dependencies: 3453 + onetime "^5.1.0" 3454 + signal-exit "^3.0.2" 3455 + 3456 + ret@~0.1.10: 3457 + version "0.1.15" 3458 + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 3459 + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 3460 + 3461 + rimraf@^3.0.0, rimraf@^3.0.2: 3462 + version "3.0.2" 3463 + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 3464 + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 3465 + dependencies: 3466 + glob "^7.1.3" 3467 + 3468 + rollup-plugin-babel@^4.4.0: 3469 + version "4.4.0" 3470 + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" 3471 + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== 3472 + dependencies: 3473 + "@babel/helper-module-imports" "^7.0.0" 3474 + rollup-pluginutils "^2.8.1" 3475 + 3476 + rollup-pluginutils@^2.8.1: 3477 + version "2.8.2" 3478 + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 3479 + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 3480 + dependencies: 3481 + estree-walker "^0.6.1" 3482 + 3483 + rollup@^2.10.2: 3484 + version "2.10.2" 3485 + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.10.2.tgz#9adfcf8ab36861b5b0f8ca7b436f5866e3e9e200" 3486 + integrity sha512-tivFM8UXBlYOUqpBYD3pRktYpZvK/eiCQ190eYlrAyrpE/lzkyG2gbawroNdbwmzyUc7Y4eT297xfzv0BDh9qw== 3487 + optionalDependencies: 3488 + fsevents "~2.1.2" 3489 + 3490 + rsvp@^4.8.4: 3491 + version "4.8.5" 3492 + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" 3493 + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== 3494 + 3495 + rxjs@^6.3.3: 3496 + version "6.5.5" 3497 + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" 3498 + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== 3499 + dependencies: 3500 + tslib "^1.9.0" 3501 + 3502 + safe-buffer@^5.0.1, safe-buffer@^5.1.2: 3503 + version "5.2.1" 3504 + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 3505 + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 3506 + 3507 + safe-buffer@~5.1.1: 3508 + version "5.1.2" 3509 + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 3510 + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 3511 + 3512 + safe-regex@^1.1.0: 3513 + version "1.1.0" 3514 + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 3515 + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 3516 + dependencies: 3517 + ret "~0.1.10" 3518 + 3519 + "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 3520 + version "2.1.2" 3521 + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 3522 + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 3523 + 3524 + sane@^4.0.3: 3525 + version "4.1.0" 3526 + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" 3527 + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== 3528 + dependencies: 3529 + "@cnakazawa/watch" "^1.0.3" 3530 + anymatch "^2.0.0" 3531 + capture-exit "^2.0.0" 3532 + exec-sh "^0.3.2" 3533 + execa "^1.0.0" 3534 + fb-watchman "^2.0.0" 3535 + micromatch "^3.1.4" 3536 + minimist "^1.1.1" 3537 + walker "~1.0.5" 3538 + 3539 + saxes@^5.0.0: 3540 + version "5.0.1" 3541 + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 3542 + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== 3543 + dependencies: 3544 + xmlchars "^2.2.0" 3545 + 3546 + semver-compare@^1.0.0: 3547 + version "1.0.0" 3548 + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 3549 + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 3550 + 3551 + semver-regex@^2.0.0: 3552 + version "2.0.0" 3553 + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" 3554 + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== 3555 + 3556 + "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: 3557 + version "5.7.1" 3558 + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 3559 + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 3560 + 3561 + semver@^6.0.0, semver@^6.3.0: 3562 + version "6.3.0" 3563 + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 3564 + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 3565 + 3566 + semver@^7.2.1, semver@^7.3.2: 3567 + version "7.3.2" 3568 + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 3569 + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 3570 + 3571 + set-blocking@^2.0.0: 3572 + version "2.0.0" 3573 + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 3574 + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 3575 + 3576 + set-value@^2.0.0, set-value@^2.0.1: 3577 + version "2.0.1" 3578 + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" 3579 + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== 3580 + dependencies: 3581 + extend-shallow "^2.0.1" 3582 + is-extendable "^0.1.1" 3583 + is-plain-object "^2.0.3" 3584 + split-string "^3.0.1" 3585 + 3586 + shebang-command@^1.2.0: 3587 + version "1.2.0" 3588 + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 3589 + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 3590 + dependencies: 3591 + shebang-regex "^1.0.0" 3592 + 3593 + shebang-command@^2.0.0: 3594 + version "2.0.0" 3595 + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 3596 + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 3597 + dependencies: 3598 + shebang-regex "^3.0.0" 3599 + 3600 + shebang-regex@^1.0.0: 3601 + version "1.0.0" 3602 + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 3603 + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 3604 + 3605 + shebang-regex@^3.0.0: 3606 + version "3.0.0" 3607 + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 3608 + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 3609 + 3610 + shell-quote@^1.6.1: 3611 + version "1.7.2" 3612 + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 3613 + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 3614 + 3615 + shellwords@^0.1.1: 3616 + version "0.1.1" 3617 + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" 3618 + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== 3619 + 3620 + signal-exit@^3.0.0, signal-exit@^3.0.2: 3621 + version "3.0.3" 3622 + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 3623 + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 3624 + 3625 + sisteransi@^1.0.4: 3626 + version "1.0.5" 3627 + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 3628 + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 3629 + 3630 + slash@^3.0.0: 3631 + version "3.0.0" 3632 + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 3633 + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 3634 + 3635 + slice-ansi@^3.0.0: 3636 + version "3.0.0" 3637 + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 3638 + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 3639 + dependencies: 3640 + ansi-styles "^4.0.0" 3641 + astral-regex "^2.0.0" 3642 + is-fullwidth-code-point "^3.0.0" 3643 + 3644 + slice-ansi@^4.0.0: 3645 + version "4.0.0" 3646 + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 3647 + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 3648 + dependencies: 3649 + ansi-styles "^4.0.0" 3650 + astral-regex "^2.0.0" 3651 + is-fullwidth-code-point "^3.0.0" 3652 + 3653 + snapdragon-node@^2.0.1: 3654 + version "2.1.1" 3655 + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 3656 + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 3657 + dependencies: 3658 + define-property "^1.0.0" 3659 + isobject "^3.0.0" 3660 + snapdragon-util "^3.0.1" 3661 + 3662 + snapdragon-util@^3.0.1: 3663 + version "3.0.1" 3664 + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 3665 + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 3666 + dependencies: 3667 + kind-of "^3.2.0" 3668 + 3669 + snapdragon@^0.8.1: 3670 + version "0.8.2" 3671 + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 3672 + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 3673 + dependencies: 3674 + base "^0.11.1" 3675 + debug "^2.2.0" 3676 + define-property "^0.2.5" 3677 + extend-shallow "^2.0.1" 3678 + map-cache "^0.2.2" 3679 + source-map "^0.5.6" 3680 + source-map-resolve "^0.5.0" 3681 + use "^3.1.0" 3682 + 3683 + source-map-resolve@^0.5.0: 3684 + version "0.5.3" 3685 + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" 3686 + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== 3687 + dependencies: 3688 + atob "^2.1.2" 3689 + decode-uri-component "^0.2.0" 3690 + resolve-url "^0.2.1" 3691 + source-map-url "^0.4.0" 3692 + urix "^0.1.0" 3693 + 3694 + source-map-support@^0.5.6: 3695 + version "0.5.19" 3696 + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 3697 + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 3698 + dependencies: 3699 + buffer-from "^1.0.0" 3700 + source-map "^0.6.0" 3701 + 3702 + source-map-url@^0.4.0: 3703 + version "0.4.0" 3704 + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 3705 + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 3706 + 3707 + source-map@^0.5.0, source-map@^0.5.6: 3708 + version "0.5.7" 3709 + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 3710 + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 3711 + 3712 + source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: 3713 + version "0.6.1" 3714 + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 3715 + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 3716 + 3717 + source-map@^0.7.3: 3718 + version "0.7.3" 3719 + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 3720 + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 3721 + 3722 + sourcemap-codec@^1.4.4: 3723 + version "1.4.8" 3724 + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 3725 + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 3726 + 3727 + spdx-correct@^3.0.0: 3728 + version "3.1.0" 3729 + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 3730 + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 3731 + dependencies: 3732 + spdx-expression-parse "^3.0.0" 3733 + spdx-license-ids "^3.0.0" 3734 + 3735 + spdx-exceptions@^2.1.0: 3736 + version "2.3.0" 3737 + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 3738 + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 3739 + 3740 + spdx-expression-parse@^3.0.0: 3741 + version "3.0.1" 3742 + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 3743 + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 3744 + dependencies: 3745 + spdx-exceptions "^2.1.0" 3746 + spdx-license-ids "^3.0.0" 3747 + 3748 + spdx-license-ids@^3.0.0: 3749 + version "3.0.5" 3750 + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 3751 + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 3752 + 3753 + split-string@^3.0.1, split-string@^3.0.2: 3754 + version "3.1.0" 3755 + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 3756 + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 3757 + dependencies: 3758 + extend-shallow "^3.0.0" 3759 + 3760 + sprintf-js@~1.0.2: 3761 + version "1.0.3" 3762 + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3763 + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 3764 + 3765 + sshpk@^1.7.0: 3766 + version "1.16.1" 3767 + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 3768 + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 3769 + dependencies: 3770 + asn1 "~0.2.3" 3771 + assert-plus "^1.0.0" 3772 + bcrypt-pbkdf "^1.0.0" 3773 + dashdash "^1.12.0" 3774 + ecc-jsbn "~0.1.1" 3775 + getpass "^0.1.1" 3776 + jsbn "~0.1.0" 3777 + safer-buffer "^2.0.2" 3778 + tweetnacl "~0.14.0" 3779 + 3780 + stack-utils@^2.0.2: 3781 + version "2.0.2" 3782 + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" 3783 + integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== 3784 + dependencies: 3785 + escape-string-regexp "^2.0.0" 3786 + 3787 + static-extend@^0.1.1: 3788 + version "0.1.2" 3789 + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 3790 + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 3791 + dependencies: 3792 + define-property "^0.2.5" 3793 + object-copy "^0.1.0" 3794 + 3795 + stealthy-require@^1.1.1: 3796 + version "1.1.1" 3797 + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 3798 + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 3799 + 3800 + string-argv@0.3.1: 3801 + version "0.3.1" 3802 + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 3803 + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 3804 + 3805 + string-length@^4.0.1: 3806 + version "4.0.1" 3807 + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" 3808 + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== 3809 + dependencies: 3810 + char-regex "^1.0.2" 3811 + strip-ansi "^6.0.0" 3812 + 3813 + string-width@^4.1.0, string-width@^4.2.0: 3814 + version "4.2.0" 3815 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 3816 + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 3817 + dependencies: 3818 + emoji-regex "^8.0.0" 3819 + is-fullwidth-code-point "^3.0.0" 3820 + strip-ansi "^6.0.0" 3821 + 3822 + string.prototype.padend@^3.0.0: 3823 + version "3.1.0" 3824 + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" 3825 + integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA== 3826 + dependencies: 3827 + define-properties "^1.1.3" 3828 + es-abstract "^1.17.0-next.1" 3829 + 3830 + string.prototype.trimend@^1.0.0: 3831 + version "1.0.1" 3832 + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" 3833 + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== 3834 + dependencies: 3835 + define-properties "^1.1.3" 3836 + es-abstract "^1.17.5" 3837 + 3838 + string.prototype.trimleft@^2.1.1: 3839 + version "2.1.2" 3840 + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" 3841 + integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== 3842 + dependencies: 3843 + define-properties "^1.1.3" 3844 + es-abstract "^1.17.5" 3845 + string.prototype.trimstart "^1.0.0" 3846 + 3847 + string.prototype.trimright@^2.1.1: 3848 + version "2.1.2" 3849 + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" 3850 + integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== 3851 + dependencies: 3852 + define-properties "^1.1.3" 3853 + es-abstract "^1.17.5" 3854 + string.prototype.trimend "^1.0.0" 3855 + 3856 + string.prototype.trimstart@^1.0.0: 3857 + version "1.0.1" 3858 + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" 3859 + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== 3860 + dependencies: 3861 + define-properties "^1.1.3" 3862 + es-abstract "^1.17.5" 3863 + 3864 + stringify-object@^3.3.0: 3865 + version "3.3.0" 3866 + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" 3867 + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== 3868 + dependencies: 3869 + get-own-enumerable-property-symbols "^3.0.0" 3870 + is-obj "^1.0.1" 3871 + is-regexp "^1.0.0" 3872 + 3873 + strip-ansi@^6.0.0: 3874 + version "6.0.0" 3875 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 3876 + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 3877 + dependencies: 3878 + ansi-regex "^5.0.0" 3879 + 3880 + strip-bom@^3.0.0: 3881 + version "3.0.0" 3882 + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 3883 + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 3884 + 3885 + strip-bom@^4.0.0: 3886 + version "4.0.0" 3887 + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 3888 + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 3889 + 3890 + strip-eof@^1.0.0: 3891 + version "1.0.0" 3892 + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 3893 + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 3894 + 3895 + strip-final-newline@^2.0.0: 3896 + version "2.0.0" 3897 + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 3898 + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 3899 + 3900 + supports-color@^5.3.0: 3901 + version "5.5.0" 3902 + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 3903 + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 3904 + dependencies: 3905 + has-flag "^3.0.0" 3906 + 3907 + supports-color@^7.0.0, supports-color@^7.1.0: 3908 + version "7.1.0" 3909 + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 3910 + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 3911 + dependencies: 3912 + has-flag "^4.0.0" 3913 + 3914 + supports-hyperlinks@^2.0.0: 3915 + version "2.1.0" 3916 + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" 3917 + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== 3918 + dependencies: 3919 + has-flag "^4.0.0" 3920 + supports-color "^7.0.0" 3921 + 3922 + symbol-tree@^3.2.4: 3923 + version "3.2.4" 3924 + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" 3925 + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 3926 + 3927 + terminal-link@^2.0.0: 3928 + version "2.1.1" 3929 + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" 3930 + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== 3931 + dependencies: 3932 + ansi-escapes "^4.2.1" 3933 + supports-hyperlinks "^2.0.0" 3934 + 3935 + test-exclude@^6.0.0: 3936 + version "6.0.0" 3937 + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 3938 + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 3939 + dependencies: 3940 + "@istanbuljs/schema" "^0.1.2" 3941 + glob "^7.1.4" 3942 + minimatch "^3.0.4" 3943 + 3944 + throat@^5.0.0: 3945 + version "5.0.0" 3946 + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" 3947 + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== 3948 + 3949 + through@^2.3.8: 3950 + version "2.3.8" 3951 + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 3952 + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 3953 + 3954 + tmpl@1.0.x: 3955 + version "1.0.4" 3956 + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" 3957 + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= 3958 + 3959 + to-fast-properties@^2.0.0: 3960 + version "2.0.0" 3961 + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 3962 + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 3963 + 3964 + to-object-path@^0.3.0: 3965 + version "0.3.0" 3966 + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 3967 + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 3968 + dependencies: 3969 + kind-of "^3.0.2" 3970 + 3971 + to-regex-range@^2.1.0: 3972 + version "2.1.1" 3973 + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 3974 + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 3975 + dependencies: 3976 + is-number "^3.0.0" 3977 + repeat-string "^1.6.1" 3978 + 3979 + to-regex-range@^5.0.1: 3980 + version "5.0.1" 3981 + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 3982 + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 3983 + dependencies: 3984 + is-number "^7.0.0" 3985 + 3986 + to-regex@^3.0.1, to-regex@^3.0.2: 3987 + version "3.0.2" 3988 + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 3989 + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 3990 + dependencies: 3991 + define-property "^2.0.2" 3992 + extend-shallow "^3.0.2" 3993 + regex-not "^1.0.2" 3994 + safe-regex "^1.1.0" 3995 + 3996 + tough-cookie@^2.3.3, tough-cookie@~2.5.0: 3997 + version "2.5.0" 3998 + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 3999 + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 4000 + dependencies: 4001 + psl "^1.1.28" 4002 + punycode "^2.1.1" 4003 + 4004 + tough-cookie@^3.0.1: 4005 + version "3.0.1" 4006 + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" 4007 + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== 4008 + dependencies: 4009 + ip-regex "^2.1.0" 4010 + psl "^1.1.28" 4011 + punycode "^2.1.1" 4012 + 4013 + tr46@^2.0.2: 4014 + version "2.0.2" 4015 + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" 4016 + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== 4017 + dependencies: 4018 + punycode "^2.1.1" 4019 + 4020 + tslib@^1.9.0: 4021 + version "1.13.0" 4022 + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 4023 + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 4024 + 4025 + tunnel-agent@^0.6.0: 4026 + version "0.6.0" 4027 + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 4028 + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 4029 + dependencies: 4030 + safe-buffer "^5.0.1" 4031 + 4032 + tweetnacl@^0.14.3, tweetnacl@~0.14.0: 4033 + version "0.14.5" 4034 + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 4035 + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 4036 + 4037 + type-check@~0.3.2: 4038 + version "0.3.2" 4039 + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 4040 + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 4041 + dependencies: 4042 + prelude-ls "~1.1.2" 4043 + 4044 + type-detect@4.0.8: 4045 + version "4.0.8" 4046 + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 4047 + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 4048 + 4049 + type-fest@^0.11.0: 4050 + version "0.11.0" 4051 + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 4052 + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 4053 + 4054 + type-fest@^0.6.0: 4055 + version "0.6.0" 4056 + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" 4057 + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== 4058 + 4059 + type-fest@^0.8.1: 4060 + version "0.8.1" 4061 + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 4062 + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 4063 + 4064 + typedarray-to-buffer@^3.1.5: 4065 + version "3.1.5" 4066 + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 4067 + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 4068 + dependencies: 4069 + is-typedarray "^1.0.0" 4070 + 4071 + unicode-canonical-property-names-ecmascript@^1.0.4: 4072 + version "1.0.4" 4073 + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" 4074 + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== 4075 + 4076 + unicode-match-property-ecmascript@^1.0.4: 4077 + version "1.0.4" 4078 + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" 4079 + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== 4080 + dependencies: 4081 + unicode-canonical-property-names-ecmascript "^1.0.4" 4082 + unicode-property-aliases-ecmascript "^1.0.4" 4083 + 4084 + unicode-match-property-value-ecmascript@^1.1.0: 4085 + version "1.2.0" 4086 + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" 4087 + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== 4088 + 4089 + unicode-property-aliases-ecmascript@^1.0.4: 4090 + version "1.1.0" 4091 + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" 4092 + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== 4093 + 4094 + union-value@^1.0.0: 4095 + version "1.0.1" 4096 + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" 4097 + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== 4098 + dependencies: 4099 + arr-union "^3.1.0" 4100 + get-value "^2.0.6" 4101 + is-extendable "^0.1.1" 4102 + set-value "^2.0.1" 4103 + 4104 + unset-value@^1.0.0: 4105 + version "1.0.0" 4106 + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 4107 + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 4108 + dependencies: 4109 + has-value "^0.3.1" 4110 + isobject "^3.0.0" 4111 + 4112 + uri-js@^4.2.2: 4113 + version "4.2.2" 4114 + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 4115 + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 4116 + dependencies: 4117 + punycode "^2.1.0" 4118 + 4119 + urix@^0.1.0: 4120 + version "0.1.0" 4121 + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 4122 + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 4123 + 4124 + use@^3.1.0: 4125 + version "3.1.1" 4126 + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 4127 + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 4128 + 4129 + uuid@^3.3.2: 4130 + version "3.4.0" 4131 + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 4132 + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 4133 + 4134 + uuid@^7.0.2, uuid@^7.0.3: 4135 + version "7.0.3" 4136 + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" 4137 + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== 4138 + 4139 + v8-to-istanbul@^4.1.3: 4140 + version "4.1.4" 4141 + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" 4142 + integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== 4143 + dependencies: 4144 + "@types/istanbul-lib-coverage" "^2.0.1" 4145 + convert-source-map "^1.6.0" 4146 + source-map "^0.7.3" 4147 + 4148 + validate-npm-package-license@^3.0.1: 4149 + version "3.0.4" 4150 + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 4151 + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 4152 + dependencies: 4153 + spdx-correct "^3.0.0" 4154 + spdx-expression-parse "^3.0.0" 4155 + 4156 + verror@1.10.0: 4157 + version "1.10.0" 4158 + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 4159 + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 4160 + dependencies: 4161 + assert-plus "^1.0.0" 4162 + core-util-is "1.0.2" 4163 + extsprintf "^1.2.0" 4164 + 4165 + w3c-hr-time@^1.0.2: 4166 + version "1.0.2" 4167 + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" 4168 + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== 4169 + dependencies: 4170 + browser-process-hrtime "^1.0.0" 4171 + 4172 + w3c-xmlserializer@^2.0.0: 4173 + version "2.0.0" 4174 + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" 4175 + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== 4176 + dependencies: 4177 + xml-name-validator "^3.0.0" 4178 + 4179 + walker@^1.0.7, walker@~1.0.5: 4180 + version "1.0.7" 4181 + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" 4182 + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= 4183 + dependencies: 4184 + makeerror "1.0.x" 4185 + 4186 + wcwidth@^1.0.1: 4187 + version "1.0.1" 4188 + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 4189 + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= 4190 + dependencies: 4191 + defaults "^1.0.3" 4192 + 4193 + webidl-conversions@^5.0.0: 4194 + version "5.0.0" 4195 + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 4196 + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 4197 + 4198 + webidl-conversions@^6.0.0: 4199 + version "6.1.0" 4200 + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 4201 + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== 4202 + 4203 + whatwg-encoding@^1.0.5: 4204 + version "1.0.5" 4205 + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" 4206 + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== 4207 + dependencies: 4208 + iconv-lite "0.4.24" 4209 + 4210 + whatwg-mimetype@^2.3.0: 4211 + version "2.3.0" 4212 + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" 4213 + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== 4214 + 4215 + whatwg-url@^8.0.0: 4216 + version "8.1.0" 4217 + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" 4218 + integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== 4219 + dependencies: 4220 + lodash.sortby "^4.7.0" 4221 + tr46 "^2.0.2" 4222 + webidl-conversions "^5.0.0" 4223 + 4224 + which-module@^2.0.0: 4225 + version "2.0.0" 4226 + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 4227 + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 4228 + 4229 + which-pm-runs@^1.0.0: 4230 + version "1.0.0" 4231 + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 4232 + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= 4233 + 4234 + which@^1.2.9: 4235 + version "1.3.1" 4236 + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 4237 + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 4238 + dependencies: 4239 + isexe "^2.0.0" 4240 + 4241 + which@^2.0.1, which@^2.0.2: 4242 + version "2.0.2" 4243 + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 4244 + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 4245 + dependencies: 4246 + isexe "^2.0.0" 4247 + 4248 + word-wrap@~1.2.3: 4249 + version "1.2.3" 4250 + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 4251 + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 4252 + 4253 + wrap-ansi@^6.2.0: 4254 + version "6.2.0" 4255 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 4256 + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 4257 + dependencies: 4258 + ansi-styles "^4.0.0" 4259 + string-width "^4.1.0" 4260 + strip-ansi "^6.0.0" 4261 + 4262 + wrappy@1: 4263 + version "1.0.2" 4264 + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 4265 + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 4266 + 4267 + write-file-atomic@^3.0.0: 4268 + version "3.0.3" 4269 + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 4270 + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 4271 + dependencies: 4272 + imurmurhash "^0.1.4" 4273 + is-typedarray "^1.0.0" 4274 + signal-exit "^3.0.2" 4275 + typedarray-to-buffer "^3.1.5" 4276 + 4277 + ws@^7.2.3: 4278 + version "7.3.0" 4279 + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" 4280 + integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== 4281 + 4282 + xml-name-validator@^3.0.0: 4283 + version "3.0.0" 4284 + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 4285 + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== 4286 + 4287 + xmlchars@^2.2.0: 4288 + version "2.2.0" 4289 + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 4290 + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 4291 + 4292 + y18n@^4.0.0: 4293 + version "4.0.0" 4294 + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 4295 + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 4296 + 4297 + yaml@^1.7.2: 4298 + version "1.10.0" 4299 + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" 4300 + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== 4301 + 4302 + yargs-parser@^18.1.1: 4303 + version "18.1.3" 4304 + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" 4305 + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== 4306 + dependencies: 4307 + camelcase "^5.0.0" 4308 + decamelize "^1.2.0" 4309 + 4310 + yargs@^15.3.1: 4311 + version "15.3.1" 4312 + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" 4313 + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== 4314 + dependencies: 4315 + cliui "^6.0.0" 4316 + decamelize "^1.2.0" 4317 + find-up "^4.1.0" 4318 + get-caller-file "^2.0.1" 4319 + require-directory "^2.1.1" 4320 + require-main-filename "^2.0.0" 4321 + set-blocking "^2.0.0" 4322 + string-width "^4.2.0" 4323 + which-module "^2.0.0" 4324 + y18n "^4.0.0" 4325 + yargs-parser "^18.1.1"