Mirror: The magical sticky regex-based parser generator 🧙

Compare changes

Choose any two refs to compare.

+26
.github/workflows/mirror.yml
··· 1 + # Mirrors to https://tangled.sh/@kitten.sh (knot.kitten.sh) 2 + name: Mirror (Git Backup) 3 + on: 4 + push: 5 + branches: 6 + - main 7 + jobs: 8 + mirror: 9 + runs-on: ubuntu-latest 10 + steps: 11 + - name: Checkout repository 12 + uses: actions/checkout@v4 13 + with: 14 + fetch-depth: 0 15 + fetch-tags: true 16 + - name: Mirror 17 + env: 18 + MIRROR_SSH_KEY: ${{ secrets.MIRROR_SSH_KEY }} 19 + GIT_SSH_COMMAND: 'ssh -o StrictHostKeyChecking=yes' 20 + run: | 21 + mkdir -p ~/.ssh 22 + echo "$MIRROR_SSH_KEY" > ~/.ssh/id_rsa 23 + chmod 600 ~/.ssh/id_rsa 24 + ssh-keyscan -H knot.kitten.sh >> ~/.ssh/known_hosts 25 + git remote add mirror "git@knot.kitten.sh:kitten.sh/${GITHUB_REPOSITORY#*/}" 26 + git push --mirror mirror
+94 -30
README.md
··· 10 10 <br /> 11 11 </div> 12 12 13 - Leveraging the power of sticky regexes and Babel code generation, `reghex` allows 13 + Leveraging the power of sticky regexes and JS code generation, `reghex` allows 14 14 you to code parsers quickly, by surrounding regular expressions with a regex-like 15 15 [DSL](https://en.wikipedia.org/wiki/Domain-specific_language). 16 16 ··· 30 30 npm install --save reghex 31 31 ``` 32 32 33 - ##### 2. Add the plugin to your Babel configuration (`.babelrc`, `babel.config.js`, or `package.json:babel`) 33 + ##### 2. Add the plugin to your Babel configuration _(optional)_ 34 + 35 + In your `.babelrc`, `babel.config.js`, or `package.json:babel` add: 34 36 35 37 ```json 36 38 { ··· 40 42 41 43 Alternatively, you can set up [`babel-plugin-macros`](https://github.com/kentcdodds/babel-plugin-macros) and 42 44 import `reghex` from `"reghex/macro"` instead. 45 + 46 + This step is **optional**. `reghex` can also generate its optimised JS code during runtime. 47 + This will only incur a tiny parsing cost on initialisation, but due to the JIT of modern 48 + JS engines there won't be any difference in performance between pre-compiled and compiled 49 + versions otherwise. 50 + 51 + Since the `reghex` runtime is rather small, for larger grammars it may even make sense not 52 + to precompile the matchers at all. For this case you may pass the `{ "codegen": false }` 53 + option to the Babel plugin, which will minify the `reghex` matcher templates without 54 + precompiling them. 43 55 44 56 ##### 3. Have fun writing parsers! 45 57 46 58 ```js 47 - import match, { parse } from 'reghex'; 59 + import { match, parse } from 'reghex'; 48 60 49 61 const name = match('name')` 50 62 ${/\w+/} ··· 69 81 read back their updated `regex.lastIndex`. 70 82 71 83 > **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. 84 + > [supported in any 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 85 74 86 This primitive allows us to build up a parser from regexes that you pass when 75 87 authoring a parser function, also called a "matcher" in `reghex`. When `reghex` compiles ··· 99 111 100 112 ## Authoring Guide 101 113 102 - You can write "matchers" by importing the default import from `reghex` and 114 + You can write "matchers" by importing the `match` import from `reghex` and 103 115 using it to write a matcher expression. 104 116 105 117 ```js 106 - import match from 'reghex'; 118 + import { match } from 'reghex'; 107 119 108 120 const name = match('name')` 109 121 ${/\w+/} 110 122 `; 111 123 ``` 112 124 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**. 125 + As can be seen above, the `match` function, is called with a "node name" and 126 + is then called as a tagged template. This template is our **parsing definition**. 116 127 117 128 `reghex` functions only with its Babel plugin, which will detect `match('name')` 118 129 and replace the entire tag with a parsing function, which may then look like ··· 161 172 Let's extend our original example; 162 173 163 174 ```js 164 - import match from 'reghex'; 175 + import { match } from 'reghex'; 165 176 166 177 const name = match('name')` 167 178 ${/\w+/} ··· 178 189 **nested abstract output**. 179 190 180 191 We can also see in this example that _outside_ of the regex interpolations, 181 - whitespaces and newlines don't matter. 192 + whitespace and newlines don't matter. 182 193 183 194 ```js 184 195 import { parse } from 'reghex'; ··· 193 204 */ 194 205 ``` 195 206 207 + Furthermore, interpolations don't have to just be RegHex matchers. They can 208 + also be functions returning matchers or completely custom matching functions. 209 + This is useful when your DSL becomes _self-referential_, i.e. when one matchers 210 + start referencing each other forming a loop. To fix this we can create a 211 + function that returns our root matcher: 212 + 213 + ```js 214 + import { match } from 'reghex'; 215 + 216 + const value = match('value')` 217 + (${/\w+/} | ${() => root})+ 218 + `; 219 + 220 + const root = match('root')` 221 + ${/root/}+ ${value} 222 + `; 223 + ``` 224 + 196 225 ### Regex-like DSL 197 226 198 227 We've seen in the previous examples that matchers are authored using tagged ··· 200 229 `${/pattern/}`, or with other matchers `${name}`. 201 230 202 231 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. 232 + using a regex-like Domain Specific Language. Unlike in regexes, whitespace 233 + and newlines don't matter, which makes it easier to format and read matchers. 205 234 206 235 We can create **sequences** of matchers by adding multiple expressions in 207 236 a row. A matcher using `${/1/} ${/2/}` will attempt to match `1` and then `2` 208 237 in the parsed string. This is just one feature of the regex-like DSL. The 209 238 available operators are the following: 210 239 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. | 240 + | Operator | Example | Description | 241 + | -------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 242 + | `?` | `${/1/}?` | An **optional** may be used to make an interpolation optional. This means that the interpolation may or may not match. | 243 + | `*` | `${/1/}*` | A **star** can be used to match an arbitrary amount of interpolation or none at all. This means that the interpolation may repeat itself or may not be matched at all. | 244 + | `+` | `${/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. | 245 + | `\|` | `${/1/} \| ${/2/}` | An **alternation** can be used to match either one thing or another, falling back when the first interpolation fails. | 246 + | `()` | `(${/1/} ${/2/})+` | A **group** can be used to apply one of the other operators to an entire group of interpolations. | 247 + | `(?: )` | `(?: ${/1/})` | A **non-capturing group** is like a regular group, but the interpolations matched inside it don't appear in the parser's output. | 248 + | `(?= )` | `(?= ${/1/})` | A **positive lookahead** checks whether interpolations match, and if so continues the matcher without changing the input. If it matches, it's essentially ignored. | 249 + | `(?! )` | `(?! ${/1/})` | A **negative lookahead** checks whether interpolations _don't_ match, and if so continues the matcher without changing the input. If the interpolations do match the matcher is aborted. | 250 + 251 + A couple of operators also support "short hands" that allow you to write 252 + lookaheads or non-capturing groups a little quicker. 253 + 254 + | Shorthand | Example | Description | 255 + | --------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 256 + | `:` | `:${/1/}` | A **non-capturing group** is like a regular group, but the interpolations matched inside it don't appear in the parser's output. | 257 + | `=` | `=${/1/}` | A **positive lookahead** checks whether interpolations match, and if so continues the matcher without changing the input. If it matches, it's essentially ignored. | 258 + | `!` | `!${/1/}` | A **negative lookahead** checks whether interpolations _don't_ match, and if so continues the matcher without changing the input. If the interpolations do match the matcher is aborted. | 221 259 222 260 We can combine and compose these operators to create more complex matchers. 223 261 For instance, we can extend the original example to only allow a specific set ··· 262 300 parse(name)('tim'); // undefined 263 301 ``` 264 302 265 - Lastly, like with regexex `?`, `*`, and `+` may be used as "quantifiers". The first two 303 + Lastly, like with regexes, `?`, `*`, and `+` may be used as "quantifiers". The first two 266 304 may also be optional and _not_ match their patterns without the matcher failing. 267 305 The `+` operator is used to match an interpolation _one or more_ times, while the 268 306 `*` operators may match _zero or more_ times. Let's use this to allow the `"!"` ··· 286 324 287 325 In the previous sections, we've seen that the **nodes** that `reghex` outputs are arrays containing 288 326 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. 327 + We can **change this output** while we're parsing by passing a function to our matcher definition. 290 328 291 329 ```js 292 330 const name = match('name', (x) => x[0])` ··· 300 338 second argument. This will change the matcher's output, which causes the parser to 301 339 now return a new output for this matcher. 302 340 303 - We can use this function creatively by outputting full AST nodes, maybe like the 304 - ones even that resemble Babel's output: 341 + We can use this function creatively by outputting full AST nodes, maybe even like the 342 + ones that resemble Babel's output: 305 343 306 344 ```js 307 345 const identifier = match('identifier', (x) => ({ ··· 316 354 317 355 We've now entirely changed the output of the parser for this matcher. Given that each 318 356 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! 357 + By returning `null` or `undefined` in this matcher, we can also change the matcher 358 + to not have matched, which would cause other matchers to treat it like a mismatch! 321 359 322 360 ```js 323 - import match, { parse } from 'reghex'; 361 + import { match, parse } from 'reghex'; 324 362 325 363 const name = match('name')((x) => { 326 364 return x[0] !== 'tim' ? x : undefined; ··· 345 383 tag(['test'], 'node_name'); 346 384 // ["test", .tag = "node_name"] 347 385 ``` 386 + 387 + ### Tagged Template Parsing 388 + 389 + Any grammar in RegHex can also be used to parse a tagged template literal. 390 + A tagged template literal consists of a list of literals alternating with 391 + a list of "interpolations". 392 + 393 + In RegHex we can add an `interpolation` matcher to our grammars to allow it 394 + to parse interpolations in a template literal. 395 + 396 + ```js 397 + import { interpolation } from 'reghex'; 398 + 399 + const anyNumber = interpolation((x) => typeof x === 'number'); 400 + 401 + const num = match('num')` 402 + ${/[+-]?/} ${anyNumber} 403 + `; 404 + 405 + parse(num)`+${42}`; 406 + // ["+", 42, .tag = "num"] 407 + ``` 408 + 409 + This grammar now allows us to match arbitrary values if they're input into the 410 + parser. We can now call our grammar using a tagged template literal themselves 411 + to parse this. 348 412 349 413 **That's it! May the RegExp be ever in your favor.**
+1 -1
babel.js
··· 1 - module.exports = require('./dist/reghex-babel.js').default; 1 + module.exports = require('./dist/reghex-babel.js');
+18 -17
package.json
··· 1 1 { 2 2 "name": "reghex", 3 - "version": "1.0.1", 3 + "version": "3.0.2", 4 4 "description": "The magical sticky regex-based parser generator 🧙", 5 5 "author": "Phil Pluckthun <phil@kitten.sh>", 6 6 "license": "MIT", 7 7 "main": "dist/reghex-core", 8 8 "module": "dist/reghex-core.mjs", 9 9 "source": "src/core.js", 10 + "sideEffects": false, 10 11 "files": [ 11 12 "README.md", 12 13 "LICENSE.md", ··· 21 22 "require": "./dist/reghex-core.js" 22 23 }, 23 24 "./babel": { 24 - "import": "./dist/reghex-babel.mjs", 25 25 "require": "./dist/reghex-babel.js" 26 26 }, 27 27 "./macro": { 28 - "import": "./dist/reghex-macro.mjs", 29 28 "require": "./dist/reghex-macro.js" 30 29 }, 31 30 "./package.json": "./package.json" ··· 48 47 "url": "https://github.com/kitten/reghex/issues" 49 48 }, 50 49 "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", 50 + "@ampproject/rollup-plugin-closure-compiler": "^0.27.0", 51 + "@babel/core": "7.15.0", 52 + "@babel/plugin-transform-modules-commonjs": "^7.15.0", 53 + "@babel/plugin-transform-template-literals": "^7.14.5", 54 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", 55 + "@rollup/plugin-commonjs": "^20.0.0", 56 + "@rollup/plugin-node-resolve": "^13.0.4", 57 + "@rollup/pluginutils": "^4.1.1", 58 + "@sucrase/jest-plugin": "^2.1.1", 59 + "babel-jest": "^27.1.0", 60 + "babel-plugin-closure-elimination": "^1.3.2", 61 + "husky-v4": "^4.3.8", 62 + "jest": "^27.1.0", 63 + "lint-staged": "^11.1.2", 62 64 "npm-run-all": "^4.1.5", 63 - "prettier": "^2.0.5", 65 + "prettier": "^2.3.2", 64 66 "rimraf": "^3.0.2", 65 - "rollup": "^2.10.2", 66 - "rollup-plugin-babel": "^4.4.0" 67 + "rollup": "^2.56.3" 67 68 }, 68 69 "prettier": { 69 70 "singleQuote": true ··· 79 80 "jest": { 80 81 "testEnvironment": "node", 81 82 "transform": { 82 - "\\.js$": "<rootDir>/scripts/jest-transform-esm.js" 83 + "\\.js$": "@sucrase/jest-plugin" 83 84 } 84 85 } 85 86 }
+32 -19
rollup.config.js
··· 1 1 import commonjs from '@rollup/plugin-commonjs'; 2 2 import resolve from '@rollup/plugin-node-resolve'; 3 3 import buble from '@rollup/plugin-buble'; 4 - import babel from 'rollup-plugin-babel'; 4 + import compiler from '@ampproject/rollup-plugin-closure-compiler'; 5 + 6 + import simplifyJSTags from './scripts/simplify-jstags-plugin.js'; 5 7 6 8 const plugins = [ 7 9 commonjs({ ··· 18 20 transforms: { 19 21 unicodeRegExp: false, 20 22 dangerousForOf: true, 21 - dangerousTaggedTemplateString: true, 23 + templateString: false, 22 24 }, 23 - objectAssign: 'Object.assign', 24 25 exclude: 'node_modules/**', 25 26 }), 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 27 ]; 37 28 38 29 const output = (format = 'cjs', ext = '.js') => ({ ··· 47 38 freeze: false, 48 39 strict: false, 49 40 format, 41 + plugins: [ 42 + simplifyJSTags(), 43 + compiler({ 44 + formatting: 'PRETTY_PRINT', 45 + compilation_level: 'SIMPLE_OPTIMIZATIONS', 46 + }), 47 + ], 50 48 }); 51 49 52 - export default { 53 - input: { 54 - core: './src/core.js', 55 - babel: './src/babel/plugin.js', 56 - macro: './src/babel/macro.js', 57 - }, 50 + const base = { 58 51 onwarn: () => {}, 59 52 external: () => false, 60 53 treeshake: { ··· 63 56 plugins, 64 57 output: [output('cjs', '.js'), output('esm', '.mjs')], 65 58 }; 59 + 60 + export default [ 61 + { 62 + ...base, 63 + input: { 64 + core: './src/core.js', 65 + }, 66 + }, 67 + { 68 + ...base, 69 + output: { 70 + ...output('cjs', '.js'), 71 + exports: 'default', 72 + }, 73 + input: { 74 + babel: './src/babel/plugin.js', 75 + macro: './src/babel/macro.js', 76 + }, 77 + }, 78 + ];
-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 - });
+61
scripts/simplify-jstags-plugin.js
··· 1 + import { transformSync as transform } from '@babel/core'; 2 + import { createFilter } from '@rollup/pluginutils'; 3 + 4 + import transformTemplateLiterals from '@babel/plugin-transform-template-literals'; 5 + import eliminateClosures from 'babel-plugin-closure-elimination'; 6 + 7 + const simplifyJSTags = ({ types: t }) => ({ 8 + visitor: { 9 + TaggedTemplateExpression(path) { 10 + if (path.node.tag.name !== 'js') return; 11 + 12 + const expressions = path.node.quasi.expressions; 13 + 14 + const quasis = path.node.quasi.quasis.map((x) => 15 + x.value.cooked 16 + .replace(/\s*[=(){},;:!]\s*/g, (x) => x.trim()) 17 + .replace(/\s+/g, ' ') 18 + .replace(/^\s+$/g, '') 19 + ); 20 + 21 + const concat = expressions.reduceRight( 22 + (prev, node, i) => 23 + t.binaryExpression( 24 + '+', 25 + t.stringLiteral(quasis[i]), 26 + t.binaryExpression('+', node, prev) 27 + ), 28 + t.stringLiteral(quasis[quasis.length - 1]) 29 + ); 30 + 31 + path.replaceWith(concat); 32 + }, 33 + }, 34 + }); 35 + 36 + function simplifyJSTagsPlugin(opts = {}) { 37 + const filter = createFilter(opts.include, opts.exclude, { 38 + resolve: false, 39 + }); 40 + 41 + return { 42 + name: 'cleanup', 43 + 44 + renderChunk(code, chunk) { 45 + if (!filter(chunk.fileName)) { 46 + return null; 47 + } 48 + 49 + return transform(code, { 50 + plugins: [ 51 + simplifyJSTags, 52 + [transformTemplateLiterals, { loose: true }], 53 + eliminateClosures, 54 + ], 55 + babelrc: false, 56 + }); 57 + }, 58 + }; 59 + } 60 + 61 + export default simplifyJSTagsPlugin;
+380 -125
src/babel/__snapshots__/plugin.test.js.snap
··· 1 1 // Jest Snapshot v1, https://goo.gl/fbAQLP 2 2 3 + exports[`deduplicates hoisted expressions 1`] = ` 4 + "import { match, __pattern as _pattern } from \\"reghex\\"; 5 + const re = /1/; 6 + const str = '1'; 7 + 8 + var _re_expression = _pattern(re), 9 + _str_expression = _pattern(str); 10 + 11 + const a = function (state) { 12 + var y1 = state.y, 13 + x1 = state.x; 14 + var node = []; 15 + var x; 16 + 17 + if ((x = _re_expression(state)) != null) { 18 + node.push(x); 19 + } else { 20 + state.y = y1; 21 + state.x = x1; 22 + return; 23 + } 24 + 25 + if ((x = _str_expression(state)) != null) { 26 + node.push(x); 27 + } else { 28 + state.y = y1; 29 + state.x = x1; 30 + return; 31 + } 32 + 33 + if ('a') node.tag = 'a'; 34 + return node; 35 + }; 36 + 37 + var _b_expression = _pattern('2'); 38 + 39 + const b = function (state) { 40 + var y1 = state.y, 41 + x1 = state.x; 42 + var node = []; 43 + var x; 44 + 45 + if ((x = _re_expression(state)) != null) { 46 + node.push(x); 47 + } else { 48 + state.y = y1; 49 + state.x = x1; 50 + return; 51 + } 52 + 53 + if ((x = _b_expression(state)) != null) { 54 + node.push(x); 55 + } else { 56 + state.y = y1; 57 + state.x = x1; 58 + return; 59 + } 60 + 61 + if ('b') node.tag = 'b'; 62 + return node; 63 + };" 64 + `; 65 + 3 66 exports[`works together with @babel/plugin-transform-modules-commonjs 1`] = ` 4 67 "\\"use strict\\"; 5 68 6 69 var _reghex = require(\\"reghex\\"); 7 70 8 - var _node_expression = (0, _reghex._pattern)(1), 9 - _node_expression2 = (0, _reghex._pattern)(2); 71 + var _node_expression = (0, _reghex.__pattern)(1), 72 + _node_expression2 = (0, _reghex.__pattern)(2); 10 73 11 - const node = function _node(state) { 12 - var last_index = state.index; 13 - var match, 14 - node = []; 74 + const node = function (state) { 75 + var y1 = state.y, 76 + x1 = state.x; 77 + var node = []; 78 + var x; 15 79 16 - if (match = (0, _reghex._exec)(state, _node_expression)) { 17 - node.push(match); 80 + if ((x = _node_expression(state)) != null) { 81 + node.push(x); 18 82 } else { 19 - state.index = last_index; 83 + state.y = y1; 84 + state.x = x1; 20 85 return; 21 86 } 22 87 23 - if (match = (0, _reghex._exec)(state, _node_expression2)) { 24 - node.push(match); 88 + if ((x = _node_expression2(state)) != null) { 89 + node.push(x); 25 90 } else { 26 - state.index = last_index; 91 + state.y = y1; 92 + state.x = x1; 27 93 return; 28 94 } 29 95 30 - return (0, _reghex.tag)(node, 'node'); 96 + if ('node') node.tag = 'node'; 97 + return node; 31 98 };" 32 99 `; 33 100 101 + exports[`works while only minifying 1`] = ` 102 + "import { match } from 'reghex/macro'; 103 + const node = match('node')([\\"\\", \\"+|\\", \\"+(\\", \\"(\\", \\"?\\", \\"))*\\"], 1, 2, 3, 4, 5);" 104 + `; 105 + 34 106 exports[`works with local recursion 1`] = ` 35 - "import { tag, _exec, _pattern } from 'reghex'; 107 + "import { match as m, tag, __pattern as _pattern } from 'reghex'; 36 108 37 109 var _inner_expression = _pattern(/inner/); 38 110 39 - const inner = function _inner(state) { 40 - var last_index = state.index; 41 - var match, 42 - node = []; 111 + const inner = function (state) { 112 + var y1 = state.y, 113 + x1 = state.x; 114 + var node = []; 115 + var x; 43 116 44 - if (match = _exec(state, _inner_expression)) { 45 - node.push(match); 117 + if ((x = _inner_expression(state)) != null) { 118 + node.push(x); 46 119 } else { 47 - state.index = last_index; 120 + state.y = y1; 121 + state.x = x1; 48 122 return; 49 123 } 50 124 51 - return tag(node, 'inner'); 125 + if ('inner') node.tag = 'inner'; 126 + return node; 52 127 }; 53 128 54 - const node = function _node(state) { 55 - var last_index = state.index; 56 - var match, 57 - node = []; 129 + const node = function (state) { 130 + var y1 = state.y, 131 + x1 = state.x; 132 + var node = []; 133 + var x; 58 134 59 - if (match = inner(state)) { 60 - node.push(match); 135 + if ((x = inner(state)) != null) { 136 + node.push(x); 61 137 } else { 62 - state.index = last_index; 138 + state.y = y1; 139 + state.x = x1; 63 140 return; 64 141 } 65 142 66 - return tag(node, 'node'); 143 + if ('node') node.tag = 'node'; 144 + return node; 145 + };" 146 + `; 147 + 148 + exports[`works with nameless matchers 1`] = ` 149 + "import { match, __pattern as _pattern } from \\"reghex\\"; 150 + 151 + var _objectObject_expression = _pattern(1), 152 + _objectObject_expression2 = _pattern(2), 153 + _objectObject_expression3 = _pattern(3), 154 + _objectObject_expression4 = _pattern(4), 155 + _objectObject_expression5 = _pattern(5); 156 + 157 + const node = function (state) { 158 + var y1 = state.y, 159 + x1 = state.x; 160 + var node = []; 161 + var x; 162 + 163 + alt_2: { 164 + block_2: { 165 + var y2 = state.y, 166 + x2 = state.x; 167 + 168 + if ((x = _objectObject_expression(state)) != null) { 169 + node.push(x); 170 + } else { 171 + state.y = y2; 172 + state.x = x2; 173 + break block_2; 174 + } 175 + 176 + group_2: for (;;) { 177 + var y2 = state.y, 178 + x2 = state.x; 179 + 180 + if ((x = _objectObject_expression(state)) != null) { 181 + node.push(x); 182 + } else { 183 + state.y = y2; 184 + state.x = x2; 185 + break group_2; 186 + } 187 + } 188 + 189 + break alt_2; 190 + } 191 + 192 + if ((x = _objectObject_expression2(state)) != null) { 193 + node.push(x); 194 + } else { 195 + state.y = y1; 196 + state.x = x1; 197 + return; 198 + } 199 + 200 + group_2: for (;;) { 201 + var y2 = state.y, 202 + x2 = state.x; 203 + 204 + if ((x = _objectObject_expression2(state)) != null) { 205 + node.push(x); 206 + } else { 207 + state.y = y2; 208 + state.x = x2; 209 + break group_2; 210 + } 211 + } 212 + 213 + group_2: for (;;) { 214 + var y2 = state.y, 215 + x2 = state.x; 216 + var ln2 = node.length; 217 + 218 + if ((x = _objectObject_expression3(state)) != null) { 219 + node.push(x); 220 + } else { 221 + state.y = y2; 222 + state.x = x2; 223 + node.length = ln2; 224 + break group_2; 225 + } 226 + 227 + var y4 = state.y, 228 + x4 = state.x; 229 + 230 + if ((x = _objectObject_expression4(state)) != null) { 231 + node.push(x); 232 + } else { 233 + state.y = y4; 234 + state.x = x4; 235 + } 236 + 237 + if ((x = _objectObject_expression5(state)) != null) { 238 + node.push(x); 239 + } else { 240 + state.y = y2; 241 + state.x = x2; 242 + node.length = ln2; 243 + break group_2; 244 + } 245 + } 246 + } 247 + 248 + if (null) node.tag = null; 249 + return node; 67 250 };" 68 251 `; 69 252 70 253 exports[`works with non-capturing groups 1`] = ` 71 - "import { _exec, _pattern, tag as _tag } from 'reghex'; 254 + "import { match, __pattern as _pattern } from 'reghex'; 72 255 73 256 var _node_expression = _pattern(1), 74 257 _node_expression2 = _pattern(2), 75 258 _node_expression3 = _pattern(3); 76 259 77 - const node = function _node(state) { 78 - var last_index = state.index; 79 - var match, 80 - node = []; 260 + const node = function (state) { 261 + var y1 = state.y, 262 + x1 = state.x; 263 + var node = []; 264 + var x; 81 265 82 - if (match = _exec(state, _node_expression)) { 83 - node.push(match); 266 + if ((x = _node_expression(state)) != null) { 267 + node.push(x); 84 268 } else { 85 - state.index = last_index; 269 + state.y = y1; 270 + state.x = x1; 86 271 return; 87 272 } 88 273 89 - var length_0 = node.length; 274 + var ln2 = node.length; 90 275 91 - alternation_1: { 92 - block_1: { 93 - var index_1 = state.index; 276 + alt_3: { 277 + block_3: { 278 + var y3 = state.y, 279 + x3 = state.x; 94 280 95 - if (match = _exec(state, _node_expression2)) { 96 - node.push(match); 281 + if ((x = _node_expression2(state)) != null) { 282 + node.push(x); 97 283 } else { 98 - node.length = length_0; 99 - state.index = index_1; 100 - break block_1; 284 + state.y = y3; 285 + state.x = x3; 286 + node.length = ln2; 287 + break block_3; 101 288 } 102 289 103 - break alternation_1; 290 + break alt_3; 104 291 } 105 292 106 - loop_1: for (var iter_1 = 0; true; iter_1++) { 107 - var index_1 = state.index; 293 + if ((x = _node_expression3(state)) == null) { 294 + state.y = y1; 295 + state.x = x1; 296 + node.length = ln2; 297 + return; 298 + } 108 299 109 - if (!_exec(state, _node_expression3)) { 110 - if (iter_1) { 111 - state.index = index_1; 112 - break loop_1; 113 - } 300 + group_3: for (;;) { 301 + var y3 = state.y, 302 + x3 = state.x; 114 303 115 - node.length = length_0; 116 - state.index = last_index; 117 - return; 304 + if ((x = _node_expression3(state)) == null) { 305 + state.y = y3; 306 + state.x = x3; 307 + break group_3; 118 308 } 119 309 } 120 310 } 121 311 122 - return _tag(node, 'node'); 312 + if ('node') node.tag = 'node'; 313 + return node; 314 + };" 315 + `; 316 + 317 + exports[`works with self-referential thunks 1`] = ` 318 + "import { match, tag, __pattern as _pattern } from 'reghex'; 319 + 320 + const inner = function (state) { 321 + var y1 = state.y, 322 + x1 = state.x; 323 + var node = []; 324 + var x; 325 + 326 + if ((x = node(state)) != null) { 327 + node.push(x); 328 + } else { 329 + state.y = y1; 330 + state.x = x1; 331 + return; 332 + } 333 + 334 + if ('inner') node.tag = 'inner'; 335 + return node; 336 + }; 337 + 338 + const node = function (state) { 339 + var y1 = state.y, 340 + x1 = state.x; 341 + var node = []; 342 + var x; 343 + 344 + if ((x = inner(state)) != null) { 345 + node.push(x); 346 + } else { 347 + state.y = y1; 348 + state.x = x1; 349 + return; 350 + } 351 + 352 + if ('node') node.tag = 'node'; 353 + return node; 123 354 };" 124 355 `; 125 356 126 357 exports[`works with standard features 1`] = ` 127 - "import { _exec, _pattern, tag as _tag } from \\"reghex\\"; 358 + "import { match, __pattern as _pattern } from \\"reghex\\"; 128 359 129 360 var _node_expression = _pattern(1), 130 361 _node_expression2 = _pattern(2), ··· 132 363 _node_expression4 = _pattern(4), 133 364 _node_expression5 = _pattern(5); 134 365 135 - const node = function _node(state) { 136 - var last_index = state.index; 137 - var match, 138 - node = []; 366 + const node = function (state) { 367 + var y1 = state.y, 368 + x1 = state.x; 369 + var node = []; 370 + var x; 139 371 140 - block_0: { 141 - var index_0 = state.index; 372 + alt_2: { 373 + block_2: { 374 + var y2 = state.y, 375 + x2 = state.x; 142 376 143 - loop_0: for (var iter_0 = 0; true; iter_0++) { 144 - var index_0 = state.index; 145 - 146 - if (match = _exec(state, _node_expression)) { 147 - node.push(match); 377 + if ((x = _node_expression(state)) != null) { 378 + node.push(x); 148 379 } else { 149 - if (iter_0) { 150 - state.index = index_0; 151 - break loop_0; 152 - } 153 - 154 - state.index = index_0; 155 - break block_0; 380 + state.y = y2; 381 + state.x = x2; 382 + break block_2; 156 383 } 157 - } 158 - 159 - return _tag(node, 'node'); 160 - } 161 384 162 - loop_0: for (var iter_0 = 0; true; iter_0++) { 163 - var index_0 = state.index; 385 + group_2: for (;;) { 386 + var y2 = state.y, 387 + x2 = state.x; 164 388 165 - if (match = _exec(state, _node_expression2)) { 166 - node.push(match); 167 - } else { 168 - if (iter_0) { 169 - state.index = index_0; 170 - break loop_0; 389 + if ((x = _node_expression(state)) != null) { 390 + node.push(x); 391 + } else { 392 + state.y = y2; 393 + state.x = x2; 394 + break group_2; 395 + } 171 396 } 172 397 173 - state.index = last_index; 174 - return; 398 + break alt_2; 175 399 } 176 - } 177 400 178 - loop_0: while (true) { 179 - var index_0 = state.index; 180 - var length_0 = node.length; 181 - 182 - if (match = _exec(state, _node_expression3)) { 183 - node.push(match); 401 + if ((x = _node_expression2(state)) != null) { 402 + node.push(x); 184 403 } else { 185 - node.length = length_0; 186 - state.index = index_0; 187 - break loop_0; 404 + state.y = y1; 405 + state.x = x1; 406 + return; 188 407 } 189 408 190 - var index_2 = state.index; 409 + group_2: for (;;) { 410 + var y2 = state.y, 411 + x2 = state.x; 191 412 192 - if (match = _exec(state, _node_expression4)) { 193 - node.push(match); 194 - } else { 195 - state.index = index_2; 413 + if ((x = _node_expression2(state)) != null) { 414 + node.push(x); 415 + } else { 416 + state.y = y2; 417 + state.x = x2; 418 + break group_2; 419 + } 196 420 } 197 421 198 - if (match = _exec(state, _node_expression5)) { 199 - node.push(match); 200 - } else { 201 - node.length = length_0; 202 - state.index = index_0; 203 - break loop_0; 422 + group_2: for (;;) { 423 + var y2 = state.y, 424 + x2 = state.x; 425 + var ln2 = node.length; 426 + 427 + if ((x = _node_expression3(state)) != null) { 428 + node.push(x); 429 + } else { 430 + state.y = y2; 431 + state.x = x2; 432 + node.length = ln2; 433 + break group_2; 434 + } 435 + 436 + var y4 = state.y, 437 + x4 = state.x; 438 + 439 + if ((x = _node_expression4(state)) != null) { 440 + node.push(x); 441 + } else { 442 + state.y = y4; 443 + state.x = x4; 444 + } 445 + 446 + if ((x = _node_expression5(state)) != null) { 447 + node.push(x); 448 + } else { 449 + state.y = y2; 450 + state.x = x2; 451 + node.length = ln2; 452 + break group_2; 453 + } 204 454 } 205 455 } 206 456 207 - return _tag(node, 'node'); 457 + if ('node') node.tag = 'node'; 458 + return node; 208 459 };" 209 460 `; 210 461 211 462 exports[`works with transform functions 1`] = ` 212 - "import { _exec, _pattern, tag as _tag } from 'reghex'; 463 + "import { match, __pattern as _pattern } from 'reghex'; 213 464 214 465 var _inner_transform = x => x; 215 466 216 - const first = function _inner(state) { 217 - var last_index = state.index; 218 - var match, 219 - node = []; 220 - return _inner_transform(_tag(node, 'inner')); 467 + const first = function (state) { 468 + var y1 = state.y, 469 + x1 = state.x; 470 + var node = []; 471 + var x; 472 + if ('inner') node.tag = 'inner'; 473 + return _inner_transform(node); 221 474 }; 222 475 223 476 const transform = x => x; 224 477 225 - const second = function _node(state) { 226 - var last_index = state.index; 227 - var match, 228 - node = []; 229 - return transform(_tag(node, 'node')); 478 + const second = function (state) { 479 + var y1 = state.y, 480 + x1 = state.x; 481 + var node = []; 482 + var x; 483 + if ('node') node.tag = 'node'; 484 + return transform(node); 230 485 };" 231 486 `;
-574
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 - const state = { input, index: 0 }; 41 - expect(node(state)).toEqual( 42 - result === undefined ? result : reghex.tag(result, 'node') 43 - ); 44 - 45 - // NOTE: After parsing we expect the current index to exactly match the 46 - // sum amount of matched characters 47 - if (result === undefined) { 48 - expect(state.index).toBe(0); 49 - } else { 50 - const index = lastIndex || result.reduce((acc, x) => acc + x.length, 0); 51 - expect(state.index).toBe(index); 52 - } 53 - }; 54 - 55 - describe('required matcher', () => { 56 - const node = match('node')`${/1/}`; 57 - it.each` 58 - input | result 59 - ${'1'} | ${['1']} 60 - ${''} | ${undefined} 61 - `('should return $result when $input is passed', ({ input, result }) => { 62 - expectToParse(node, input, result); 63 - }); 64 - }); 65 - 66 - describe('optional matcher', () => { 67 - const node = match('node')`${/1/}?`; 68 - it.each` 69 - input | result 70 - ${'1'} | ${['1']} 71 - ${'_'} | ${[]} 72 - ${''} | ${[]} 73 - `('should return $result when $input is passed', ({ input, result }) => { 74 - expectToParse(node, input, result); 75 - }); 76 - }); 77 - 78 - describe('star matcher', () => { 79 - const node = match('node')`${/1/}*`; 80 - it.each` 81 - input | result 82 - ${'1'} | ${['1']} 83 - ${'11'} | ${['1', '1']} 84 - ${'111'} | ${['1', '1', '1']} 85 - ${'_'} | ${[]} 86 - ${''} | ${[]} 87 - `('should return $result when "$input" is passed', ({ input, result }) => { 88 - expectToParse(node, input, result); 89 - }); 90 - }); 91 - 92 - describe('plus matcher', () => { 93 - const node = match('node')`${/1/}+`; 94 - it.each` 95 - input | result 96 - ${'1'} | ${['1']} 97 - ${'11'} | ${['1', '1']} 98 - ${'111'} | ${['1', '1', '1']} 99 - ${'_'} | ${undefined} 100 - ${''} | ${undefined} 101 - `('should return $result when "$input" is passed', ({ input, result }) => { 102 - expectToParse(node, input, result); 103 - }); 104 - }); 105 - 106 - describe('optional then required matcher', () => { 107 - const node = match('node')`${/1/}? ${/2/}`; 108 - it.each` 109 - input | result 110 - ${'12'} | ${['1', '2']} 111 - ${'2'} | ${['2']} 112 - ${''} | ${undefined} 113 - `('should return $result when $input is passed', ({ input, result }) => { 114 - expectToParse(node, input, result); 115 - }); 116 - }); 117 - 118 - describe('star then required matcher', () => { 119 - const node = match('node')`${/1/}* ${/2/}`; 120 - it.each` 121 - input | result 122 - ${'12'} | ${['1', '2']} 123 - ${'112'} | ${['1', '1', '2']} 124 - ${'2'} | ${['2']} 125 - ${''} | ${undefined} 126 - `('should return $result when $input is passed', ({ input, result }) => { 127 - expectToParse(node, input, result); 128 - }); 129 - }); 130 - 131 - describe('plus then required matcher', () => { 132 - const node = match('node')`${/1/}+ ${/2/}`; 133 - it.each` 134 - input | result 135 - ${'12'} | ${['1', '2']} 136 - ${'112'} | ${['1', '1', '2']} 137 - ${'2'} | ${undefined} 138 - ${''} | ${undefined} 139 - `('should return $result when $input is passed', ({ input, result }) => { 140 - expectToParse(node, input, result); 141 - }); 142 - }); 143 - 144 - describe('optional group then required matcher', () => { 145 - const node = match('node')`(${/1/} ${/2/})? ${/3/}`; 146 - it.each` 147 - input | result 148 - ${'123'} | ${['1', '2', '3']} 149 - ${'3'} | ${['3']} 150 - ${'_'} | ${undefined} 151 - `('should return $result when $input is passed', ({ input, result }) => { 152 - expectToParse(node, input, result); 153 - }); 154 - }); 155 - 156 - describe('star group then required matcher', () => { 157 - const node = match('node')`(${/1/} ${/2/})* ${/3/}`; 158 - it.each` 159 - input | result 160 - ${'123'} | ${['1', '2', '3']} 161 - ${'12123'} | ${['1', '2', '1', '2', '3']} 162 - ${'3'} | ${['3']} 163 - ${'13'} | ${undefined} 164 - ${'_'} | ${undefined} 165 - `('should return $result when $input is passed', ({ input, result }) => { 166 - expectToParse(node, input, result); 167 - }); 168 - }); 169 - 170 - describe('plus group then required matcher', () => { 171 - const node = match('node')`(${/1/} ${/2/})+ ${/3/}`; 172 - it.each` 173 - input | result 174 - ${'123'} | ${['1', '2', '3']} 175 - ${'12123'} | ${['1', '2', '1', '2', '3']} 176 - ${'3'} | ${undefined} 177 - ${'13'} | ${undefined} 178 - ${'_'} | ${undefined} 179 - `('should return $result when $input is passed', ({ input, result }) => { 180 - expectToParse(node, input, result); 181 - }); 182 - }); 183 - 184 - describe('optional group with nested optional matcher, then required matcher', () => { 185 - const node = match('node')`(${/1/}? ${/2/})? ${/3/}`; 186 - it.each` 187 - input | result 188 - ${'123'} | ${['1', '2', '3']} 189 - ${'23'} | ${['2', '3']} 190 - ${'3'} | ${['3']} 191 - ${'13'} | ${undefined} 192 - ${'_'} | ${undefined} 193 - `('should return $result when $input is passed', ({ input, result }) => { 194 - expectToParse(node, input, result); 195 - }); 196 - }); 197 - 198 - describe('star group with nested optional matcher, then required matcher', () => { 199 - const node = match('node')`(${/1/}? ${/2/})* ${/3/}`; 200 - it.each` 201 - input | result 202 - ${'123'} | ${['1', '2', '3']} 203 - ${'23'} | ${['2', '3']} 204 - ${'223'} | ${['2', '2', '3']} 205 - ${'2123'} | ${['2', '1', '2', '3']} 206 - ${'3'} | ${['3']} 207 - ${'13'} | ${undefined} 208 - ${'_'} | ${undefined} 209 - `('should return $result when $input is passed', ({ input, result }) => { 210 - expectToParse(node, input, result); 211 - }); 212 - }); 213 - 214 - describe('plus group with nested optional matcher, then required matcher', () => { 215 - const node = match('node')`(${/1/}? ${/2/})+ ${/3/}`; 216 - it.each` 217 - input | result 218 - ${'123'} | ${['1', '2', '3']} 219 - ${'23'} | ${['2', '3']} 220 - ${'223'} | ${['2', '2', '3']} 221 - ${'2123'} | ${['2', '1', '2', '3']} 222 - ${'3'} | ${undefined} 223 - ${'13'} | ${undefined} 224 - ${'_'} | ${undefined} 225 - `('should return $result when $input is passed', ({ input, result }) => { 226 - expectToParse(node, input, result); 227 - }); 228 - }); 229 - 230 - describe('plus group with nested plus matcher, then required matcher', () => { 231 - const node = match('node')`(${/1/}+ ${/2/})+ ${/3/}`; 232 - it.each` 233 - input | result 234 - ${'123'} | ${['1', '2', '3']} 235 - ${'1123'} | ${['1', '1', '2', '3']} 236 - ${'12123'} | ${['1', '2', '1', '2', '3']} 237 - ${'121123'} | ${['1', '2', '1', '1', '2', '3']} 238 - ${'3'} | ${undefined} 239 - ${'23'} | ${undefined} 240 - ${'13'} | ${undefined} 241 - ${'_'} | ${undefined} 242 - `('should return $result when $input is passed', ({ input, result }) => { 243 - expectToParse(node, input, result); 244 - }); 245 - }); 246 - 247 - describe('plus group with nested required and plus matcher, then required matcher', () => { 248 - const node = match('node')`(${/1/} ${/2/}+)+ ${/3/}`; 249 - it.each` 250 - input | result 251 - ${'123'} | ${['1', '2', '3']} 252 - ${'1223'} | ${['1', '2', '2', '3']} 253 - ${'122123'} | ${['1', '2', '2', '1', '2', '3']} 254 - ${'13'} | ${undefined} 255 - ${'_'} | ${undefined} 256 - `('should return $result when $input is passed', ({ input, result }) => { 257 - expectToParse(node, input, result); 258 - }); 259 - }); 260 - 261 - describe('nested plus group with nested required and plus matcher, then required matcher or alternate', () => { 262 - const node = match('node')`(${/1/} ${/2/}+)+ ${/3/} | ${/1/}`; 263 - it.each` 264 - input | result 265 - ${'123'} | ${['1', '2', '3']} 266 - ${'1223'} | ${['1', '2', '2', '3']} 267 - ${'122123'} | ${['1', '2', '2', '1', '2', '3']} 268 - ${'1'} | ${['1']} 269 - ${'13'} | ${['1']} 270 - ${'_'} | ${undefined} 271 - `('should return $result when $input is passed', ({ input, result }) => { 272 - expectToParse(node, input, result); 273 - }); 274 - }); 275 - 276 - describe('nested plus group with nested required and plus matcher, then alternate', () => { 277 - const node = match('node')`(${/1/} ${/2/}+)+ (${/3/} | ${/4/})`; 278 - it.each` 279 - input | result 280 - ${'123'} | ${['1', '2', '3']} 281 - ${'124'} | ${['1', '2', '4']} 282 - ${'1223'} | ${['1', '2', '2', '3']} 283 - ${'1224'} | ${['1', '2', '2', '4']} 284 - ${'1'} | ${undefined} 285 - ${'13'} | ${undefined} 286 - ${'_'} | ${undefined} 287 - `('should return $result when $input is passed', ({ input, result }) => { 288 - expectToParse(node, input, result); 289 - }); 290 - }); 291 - 292 - describe('regular alternate', () => { 293 - const node = match('node')`${/1/} | ${/2/} | ${/3/} | ${/4/}`; 294 - it.each` 295 - input | result 296 - ${'1'} | ${['1']} 297 - ${'2'} | ${['2']} 298 - ${'3'} | ${['3']} 299 - ${'4'} | ${['4']} 300 - ${'_'} | ${undefined} 301 - `('should return $result when $input is passed', ({ input, result }) => { 302 - expectToParse(node, input, result); 303 - }); 304 - }); 305 - 306 - describe('nested alternate in nested alternate in alternate', () => { 307 - const node = match('node')`((${/1/} | ${/2/}) | ${/3/}) | ${/4/}`; 308 - it.each` 309 - input | result 310 - ${'1'} | ${['1']} 311 - ${'2'} | ${['2']} 312 - ${'3'} | ${['3']} 313 - ${'4'} | ${['4']} 314 - ${'_'} | ${undefined} 315 - `('should return $result when $input is passed', ({ input, result }) => { 316 - expectToParse(node, input, result); 317 - }); 318 - }); 319 - 320 - describe('alternate after required matcher', () => { 321 - const node = match('node')`${/1/} (${/2/} | ${/3/})`; 322 - it.each` 323 - input | result 324 - ${'12'} | ${['1', '2']} 325 - ${'13'} | ${['1', '3']} 326 - ${'14'} | ${undefined} 327 - ${'3'} | ${undefined} 328 - ${'_'} | ${undefined} 329 - `('should return $result when $input is passed', ({ input, result }) => { 330 - expectToParse(node, input, result); 331 - }); 332 - }); 333 - 334 - describe('alternate with star group and required matcher after required matcher', () => { 335 - const node = match('node')`${/1/} (${/2/}* ${/3/} | ${/4/})`; 336 - it.each` 337 - input | result 338 - ${'123'} | ${['1', '2', '3']} 339 - ${'1223'} | ${['1', '2', '2', '3']} 340 - ${'13'} | ${['1', '3']} 341 - ${'14'} | ${['1', '4']} 342 - ${'12'} | ${undefined} 343 - ${'15'} | ${undefined} 344 - ${'_'} | ${undefined} 345 - `('should return $result when $input is passed', ({ input, result }) => { 346 - expectToParse(node, input, result); 347 - }); 348 - }); 349 - 350 - describe('alternate with plus group and required matcher after required matcher', () => { 351 - const node = match('node')`${/1/} (${/2/}+ ${/3/} | ${/4/})`; 352 - it.each` 353 - input | result 354 - ${'123'} | ${['1', '2', '3']} 355 - ${'1223'} | ${['1', '2', '2', '3']} 356 - ${'14'} | ${['1', '4']} 357 - ${'13'} | ${undefined} 358 - ${'12'} | ${undefined} 359 - ${'15'} | ${undefined} 360 - ${'_'} | ${undefined} 361 - `('should return $result when $input is passed', ({ input, result }) => { 362 - expectToParse(node, input, result); 363 - }); 364 - }); 365 - 366 - describe('alternate with optional and required matcher after required matcher', () => { 367 - const node = match('node')`${/1/} (${/2/}? ${/3/} | ${/4/})`; 368 - it.each` 369 - input | result 370 - ${'123'} | ${['1', '2', '3']} 371 - ${'13'} | ${['1', '3']} 372 - ${'14'} | ${['1', '4']} 373 - ${'12'} | ${undefined} 374 - ${'15'} | ${undefined} 375 - ${'_'} | ${undefined} 376 - `('should return $result when $input is passed', ({ input, result }) => { 377 - expectToParse(node, input, result); 378 - }); 379 - }); 380 - 381 - describe('non-capturing group', () => { 382 - const node = match('node')`${/1/} (?: ${/2/}+)`; 383 - it.each` 384 - input | result | lastIndex 385 - ${'12'} | ${['1']} | ${2} 386 - ${'122'} | ${['1']} | ${3} 387 - ${'13'} | ${undefined} | ${0} 388 - ${'1'} | ${undefined} | ${0} 389 - ${'_'} | ${undefined} | ${0} 390 - `( 391 - 'should return $result when $input is passed', 392 - ({ input, result, lastIndex }) => { 393 - expectToParse(node, input, result, lastIndex); 394 - } 395 - ); 396 - }); 397 - 398 - describe('non-capturing group with plus matcher, then required matcher', () => { 399 - const node = match('node')`(?: ${/1/}+) ${/2/}`; 400 - it.each` 401 - input | result | lastIndex 402 - ${'12'} | ${['2']} | ${2} 403 - ${'112'} | ${['2']} | ${3} 404 - ${'1'} | ${undefined} | ${0} 405 - ${'13'} | ${undefined} | ${0} 406 - ${'2'} | ${undefined} | ${0} 407 - ${'_'} | ${undefined} | ${0} 408 - `( 409 - 'should return $result when $input is passed', 410 - ({ input, result, lastIndex }) => { 411 - expectToParse(node, input, result, lastIndex); 412 - } 413 - ); 414 - }); 415 - 416 - describe('non-capturing group with star group and required matcher, then required matcher', () => { 417 - const node = match('node')`(?: ${/1/}* ${/2/}) ${/3/}`; 418 - it.each` 419 - input | result | lastIndex 420 - ${'123'} | ${['3']} | ${3} 421 - ${'1123'} | ${['3']} | ${4} 422 - ${'23'} | ${['3']} | ${2} 423 - ${'13'} | ${undefined} | ${0} 424 - ${'2'} | ${undefined} | ${0} 425 - ${'_'} | ${undefined} | ${0} 426 - `( 427 - 'should return $result when $input is passed', 428 - ({ input, result, lastIndex }) => { 429 - expectToParse(node, input, result, lastIndex); 430 - } 431 - ); 432 - }); 433 - 434 - describe('non-capturing group with plus group and required matcher, then required matcher', () => { 435 - const node = match('node')`(?: ${/1/}+ ${/2/}) ${/3/}`; 436 - it.each` 437 - input | result | lastIndex 438 - ${'123'} | ${['3']} | ${3} 439 - ${'1123'} | ${['3']} | ${4} 440 - ${'23'} | ${undefined} | ${0} 441 - ${'13'} | ${undefined} | ${0} 442 - ${'2'} | ${undefined} | ${0} 443 - ${'_'} | ${undefined} | ${0} 444 - `( 445 - 'should return $result when $input is passed', 446 - ({ input, result, lastIndex }) => { 447 - expectToParse(node, input, result, lastIndex); 448 - } 449 - ); 450 - }); 451 - 452 - describe('non-capturing group with optional and required matcher, then required matcher', () => { 453 - const node = match('node')`(?: ${/1/}? ${/2/}) ${/3/}`; 454 - it.each` 455 - input | result | lastIndex 456 - ${'123'} | ${['3']} | ${3} 457 - ${'23'} | ${['3']} | ${2} 458 - ${'13'} | ${undefined} | ${0} 459 - ${'2'} | ${undefined} | ${0} 460 - ${'_'} | ${undefined} | ${0} 461 - `( 462 - 'should return $result when $input is passed', 463 - ({ input, result, lastIndex }) => { 464 - expectToParse(node, input, result, lastIndex); 465 - } 466 - ); 467 - }); 468 - 469 - describe('positive lookahead group', () => { 470 - const node = match('node')`(?= ${/1/}) ${/\d/}`; 471 - it.each` 472 - input | result | lastIndex 473 - ${'1'} | ${['1']} | ${1} 474 - ${'13'} | ${['1']} | ${1} 475 - ${'2'} | ${undefined} | ${0} 476 - ${'_'} | ${undefined} | ${0} 477 - `( 478 - 'should return $result when $input is passed', 479 - ({ input, result, lastIndex }) => { 480 - expectToParse(node, input, result, lastIndex); 481 - } 482 - ); 483 - }); 484 - 485 - describe('positive lookahead group with plus matcher', () => { 486 - const node = match('node')`(?= ${/1/}+) ${/\d/}`; 487 - it.each` 488 - input | result | lastIndex 489 - ${'1'} | ${['1']} | ${1} 490 - ${'11'} | ${['1']} | ${1} 491 - ${'12'} | ${['1']} | ${1} 492 - ${'22'} | ${undefined} | ${0} 493 - ${'2'} | ${undefined} | ${0} 494 - ${'_'} | ${undefined} | ${0} 495 - `( 496 - 'should return $result when $input is passed', 497 - ({ input, result, lastIndex }) => { 498 - expectToParse(node, input, result, lastIndex); 499 - } 500 - ); 501 - }); 502 - 503 - describe('positive lookahead group with plus group and required matcher', () => { 504 - const node = match('node')`(?= ${/1/}+ ${/2/}) ${/\d/}`; 505 - it.each` 506 - input | result | lastIndex 507 - ${'12'} | ${['1']} | ${1} 508 - ${'112'} | ${['1']} | ${1} 509 - ${'1123'} | ${['1']} | ${1} 510 - ${'2'} | ${undefined} | ${0} 511 - ${'1'} | ${undefined} | ${0} 512 - ${'2'} | ${undefined} | ${0} 513 - ${'_'} | ${undefined} | ${0} 514 - `( 515 - 'should return $result when $input is passed', 516 - ({ input, result, lastIndex }) => { 517 - expectToParse(node, input, result, lastIndex); 518 - } 519 - ); 520 - }); 521 - 522 - describe('negative lookahead group', () => { 523 - const node = match('node')`(?! ${/1/}) ${/\d/}`; 524 - it.each` 525 - input | result | lastIndex 526 - ${'2'} | ${['2']} | ${1} 527 - ${'23'} | ${['2']} | ${1} 528 - ${'1'} | ${undefined} | ${0} 529 - ${'1'} | ${undefined} | ${0} 530 - ${'_'} | ${undefined} | ${0} 531 - `( 532 - 'should return $result when $input is passed', 533 - ({ input, result, lastIndex }) => { 534 - expectToParse(node, input, result, lastIndex); 535 - } 536 - ); 537 - }); 538 - 539 - describe('negative lookahead group with plus matcher', () => { 540 - const node = match('node')`(?! ${/1/}+) ${/\d/}`; 541 - it.each` 542 - input | result | lastIndex 543 - ${'2'} | ${['2']} | ${1} 544 - ${'21'} | ${['2']} | ${1} 545 - ${'22'} | ${['2']} | ${1} 546 - ${'11'} | ${undefined} | ${0} 547 - ${'1'} | ${undefined} | ${0} 548 - ${'_'} | ${undefined} | ${0} 549 - `( 550 - 'should return $result when $input is passed', 551 - ({ input, result, lastIndex }) => { 552 - expectToParse(node, input, result, lastIndex); 553 - } 554 - ); 555 - }); 556 - 557 - describe('negative lookahead group with plus group and required matcher', () => { 558 - const node = match('node')`(?! ${/1/}+ ${/2/}) ${/\d/}`; 559 - it.each` 560 - input | result | lastIndex 561 - ${'21'} | ${['2']} | ${1} 562 - ${'211'} | ${['2']} | ${1} 563 - ${'113'} | ${['1']} | ${1} 564 - ${'1'} | ${['1']} | ${1} 565 - ${'112'} | ${undefined} | ${0} 566 - ${'12'} | ${undefined} | ${0} 567 - ${'_'} | ${undefined} | ${0} 568 - `( 569 - 'should return $result when $input is passed', 570 - ({ input, result, lastIndex }) => { 571 - expectToParse(node, input, result, lastIndex); 572 - } 573 - ); 574 - });
-404
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 = state.index; */ 10 - class AssignIndexNode { 11 - constructor(id) { 12 - this.id = id; 13 - } 14 - 15 - statement() { 16 - const member = t.memberExpression(ids.state, t.identifier('index')); 17 - return t.variableDeclaration('var', [ 18 - t.variableDeclarator(this.id, member), 19 - ]); 20 - } 21 - } 22 - 23 - /** state.index = id; */ 24 - class RestoreIndexNode { 25 - constructor(id) { 26 - this.id = id; 27 - } 28 - 29 - statement() { 30 - const expression = t.assignmentExpression( 31 - '=', 32 - t.memberExpression(ids.state, t.identifier('index')), 33 - this.id 34 - ); 35 - 36 - return t.expressionStatement(expression); 37 - } 38 - } 39 - 40 - /** var id = node.length; */ 41 - class AssignLengthNode { 42 - constructor(id) { 43 - this.id = id; 44 - } 45 - 46 - statement() { 47 - return t.variableDeclaration('var', [ 48 - t.variableDeclarator( 49 - this.id, 50 - t.memberExpression(ids.node, t.identifier('length')) 51 - ), 52 - ]); 53 - } 54 - } 55 - 56 - /** node.length = id; */ 57 - class RestoreLengthNode { 58 - constructor(id) { 59 - this.id = id; 60 - } 61 - 62 - statement() { 63 - const expression = t.assignmentExpression( 64 - '=', 65 - t.memberExpression(ids.node, t.identifier('length')), 66 - this.id 67 - ); 68 - 69 - return t.expressionStatement(expression); 70 - } 71 - } 72 - 73 - /** return; break id; */ 74 - class AbortNode { 75 - constructor(id) { 76 - this.id = id || null; 77 - } 78 - 79 - statement() { 80 - const statement = this.id ? t.breakStatement(this.id) : t.returnStatement(); 81 - return statement; 82 - } 83 - } 84 - 85 - /** if (condition) { return; break id; } */ 86 - class AbortConditionNode { 87 - constructor(condition, opts) { 88 - this.condition = condition || null; 89 - 90 - this.abort = opts.abort; 91 - this.abortCondition = opts.abortCondition || null; 92 - this.restoreIndex = opts.restoreIndex; 93 - } 94 - 95 - statement() { 96 - return t.ifStatement( 97 - this.condition, 98 - t.blockStatement( 99 - [this.restoreIndex.statement(), this.abort.statement()].filter(Boolean) 100 - ), 101 - this.abortCondition ? this.abortCondition.statement() : null 102 - ); 103 - } 104 - } 105 - 106 - /** Generates a full matcher for an expression */ 107 - class ExpressionNode { 108 - constructor(ast, depth, opts) { 109 - this.ast = ast; 110 - this.depth = depth || 0; 111 - this.capturing = !!opts.capturing; 112 - this.restoreIndex = opts.restoreIndex; 113 - this.restoreLength = opts.restoreLength || null; 114 - this.abortCondition = opts.abortCondition || null; 115 - this.abort = opts.abort || null; 116 - } 117 - 118 - statements() { 119 - const execMatch = this.ast.expression; 120 - const assignMatch = t.assignmentExpression('=', ids.match, execMatch); 121 - 122 - const successNodes = t.blockStatement([ 123 - t.expressionStatement( 124 - t.callExpression(t.memberExpression(ids.node, t.identifier('push')), [ 125 - ids.match, 126 - ]) 127 - ), 128 - ]); 129 - 130 - const abortNodes = t.blockStatement( 131 - [ 132 - this.abortCondition && this.abortCondition.statement(), 133 - this.abort && this.restoreLength && this.restoreLength.statement(), 134 - this.restoreIndex && this.restoreIndex.statement(), 135 - this.abort && this.abort.statement(), 136 - ].filter(Boolean) 137 - ); 138 - 139 - return [ 140 - !this.capturing 141 - ? t.ifStatement(t.unaryExpression('!', execMatch), abortNodes) 142 - : t.ifStatement(assignMatch, successNodes, abortNodes), 143 - ]; 144 - } 145 - } 146 - 147 - /** Generates a full matcher for a group */ 148 - class GroupNode { 149 - constructor(ast, depth, opts) { 150 - this.ast = ast; 151 - this.depth = depth || 0; 152 - if (ast.sequence.length === 1) { 153 - return new ExpressionNode(ast.sequence[0], depth, opts); 154 - } 155 - 156 - const lengthId = t.identifier(`length_${depth}`); 157 - const childOpts = { 158 - ...opts, 159 - capturing: !!opts.capturing && !!ast.capturing, 160 - }; 161 - 162 - this.assignLength = null; 163 - if (!childOpts.restoreLength && childOpts.capturing) { 164 - this.assignLength = new AssignLengthNode(lengthId); 165 - childOpts.restoreLength = new RestoreLengthNode(lengthId); 166 - } 167 - 168 - this.alternation = new AlternationNode(ast.sequence, depth + 1, childOpts); 169 - } 170 - 171 - statements() { 172 - return [ 173 - this.assignLength && this.assignLength.statement(), 174 - ...this.alternation.statements(), 175 - ].filter(Boolean); 176 - } 177 - } 178 - 179 - /** Generates looping logic around another group or expression matcher */ 180 - class QuantifierNode { 181 - constructor(ast, depth, opts) { 182 - const { quantifier } = ast; 183 - this.ast = ast; 184 - this.depth = depth || 0; 185 - 186 - const invertId = t.identifier(`invert_${this.depth}`); 187 - const loopId = t.identifier(`loop_${this.depth}`); 188 - const iterId = t.identifier(`iter_${this.depth}`); 189 - const indexId = t.identifier(`index_${this.depth}`); 190 - const ChildNode = ast.type === 'group' ? GroupNode : ExpressionNode; 191 - const childOpts = { ...opts }; 192 - 193 - this.assignIndex = null; 194 - this.restoreIndex = null; 195 - this.blockId = null; 196 - this.abort = null; 197 - if (ast.type === 'group' && !!ast.lookahead) { 198 - this.restoreIndex = new RestoreIndexNode(indexId); 199 - this.assignIndex = new AssignIndexNode(indexId); 200 - childOpts.restoreIndex = null; 201 - } 202 - 203 - if (ast.type === 'group' && ast.lookahead === 'negative') { 204 - this.blockId = invertId; 205 - this.abort = opts.abort; 206 - childOpts.abort = new AbortNode(invertId); 207 - } 208 - 209 - if (quantifier && !quantifier.singular && quantifier.required) { 210 - childOpts.abortCondition = new AbortConditionNode(iterId, { 211 - ...opts, 212 - restoreIndex: new RestoreIndexNode(indexId), 213 - abort: new AbortNode(loopId), 214 - }); 215 - } else if (quantifier && !quantifier.singular) { 216 - childOpts.restoreLength = null; 217 - childOpts.restoreIndex = new RestoreIndexNode(indexId); 218 - childOpts.abort = new AbortNode(loopId); 219 - childOpts.abortCondition = null; 220 - } else if (quantifier && !quantifier.required) { 221 - childOpts.restoreIndex = new RestoreIndexNode(indexId); 222 - childOpts.abortCondition = null; 223 - childOpts.abort = null; 224 - } 225 - 226 - this.childNode = new ChildNode(ast, depth, childOpts); 227 - } 228 - 229 - statements() { 230 - const { quantifier } = this.ast; 231 - const loopId = t.identifier(`loop_${this.depth}`); 232 - const iterId = t.identifier(`iter_${this.depth}`); 233 - const indexId = t.identifier(`index_${this.depth}`); 234 - const assignIndex = new AssignIndexNode(indexId); 235 - 236 - let statements; 237 - if (quantifier && !quantifier.singular && quantifier.required) { 238 - statements = [ 239 - t.labeledStatement( 240 - loopId, 241 - t.forStatement( 242 - t.variableDeclaration('var', [ 243 - t.variableDeclarator(iterId, t.numericLiteral(0)), 244 - ]), 245 - t.booleanLiteral(true), 246 - t.updateExpression('++', iterId), 247 - t.blockStatement([ 248 - assignIndex.statement(), 249 - ...this.childNode.statements(), 250 - ]) 251 - ) 252 - ), 253 - ]; 254 - } else if (quantifier && !quantifier.singular) { 255 - statements = [ 256 - t.labeledStatement( 257 - loopId, 258 - t.whileStatement( 259 - t.booleanLiteral(true), 260 - t.blockStatement([ 261 - assignIndex.statement(), 262 - ...this.childNode.statements(), 263 - ]) 264 - ) 265 - ), 266 - ]; 267 - } else if (quantifier && !quantifier.required) { 268 - statements = [assignIndex.statement(), ...this.childNode.statements()]; 269 - } else { 270 - statements = this.childNode.statements(); 271 - } 272 - 273 - if (this.restoreIndex && this.assignIndex) { 274 - statements.unshift(this.assignIndex.statement()); 275 - statements.push(this.restoreIndex.statement()); 276 - } 277 - 278 - if (this.blockId) { 279 - statements = [ 280 - t.labeledStatement( 281 - this.blockId, 282 - t.blockStatement([...statements, this.abort.statement()]) 283 - ), 284 - ]; 285 - } 286 - 287 - return statements; 288 - } 289 - } 290 - 291 - /** Generates a matcher of a sequence of sub-matchers for a single sequence */ 292 - class SequenceNode { 293 - constructor(ast, depth, opts) { 294 - this.ast = ast; 295 - this.depth = depth || 0; 296 - 297 - const indexId = t.identifier(`index_${depth}`); 298 - const blockId = t.identifier(`block_${this.depth}`); 299 - 300 - this.returnStatement = opts.returnStatement; 301 - this.assignIndex = ast.alternation ? new AssignIndexNode(indexId) : null; 302 - 303 - this.quantifiers = ast.sequence.map((childAst) => { 304 - return new QuantifierNode(childAst, depth, { 305 - ...opts, 306 - restoreIndex: ast.alternation 307 - ? new RestoreIndexNode(indexId) 308 - : opts.restoreIndex, 309 - abortCondition: ast.alternation ? null : opts.abortCondition, 310 - abort: ast.alternation ? new AbortNode(blockId) : opts.abort, 311 - }); 312 - }); 313 - } 314 - 315 - statements() { 316 - const blockId = t.identifier(`block_${this.depth}`); 317 - const alternationId = t.identifier(`alternation_${this.depth}`); 318 - const statements = this.quantifiers.reduce((block, node) => { 319 - block.push(...node.statements()); 320 - return block; 321 - }, []); 322 - 323 - if (!this.ast.alternation) { 324 - return statements; 325 - } 326 - 327 - const abortNode = 328 - this.depth === 0 ? this.returnStatement : t.breakStatement(alternationId); 329 - 330 - return [ 331 - t.labeledStatement( 332 - blockId, 333 - t.blockStatement([ 334 - this.assignIndex && this.assignIndex.statement(), 335 - ...statements, 336 - abortNode, 337 - ]) 338 - ), 339 - ]; 340 - } 341 - } 342 - 343 - /** Generates matchers for sequences with (or without) alternations */ 344 - class AlternationNode { 345 - constructor(ast, depth, opts) { 346 - this.ast = ast; 347 - this.depth = depth || 0; 348 - this.sequences = []; 349 - for (let current = ast; current; current = current.alternation) { 350 - this.sequences.push(new SequenceNode(current, depth, opts)); 351 - } 352 - } 353 - 354 - statements() { 355 - if (this.sequences.length === 1) { 356 - return this.sequences[0].statements(); 357 - } 358 - 359 - const statements = []; 360 - for (let i = 0; i < this.sequences.length; i++) { 361 - statements.push(...this.sequences[i].statements()); 362 - } 363 - 364 - if (this.depth === 0) { 365 - return statements; 366 - } 367 - 368 - const alternationId = t.identifier(`alternation_${this.depth}`); 369 - return [t.labeledStatement(alternationId, t.blockStatement(statements))]; 370 - } 371 - } 372 - 373 - export class RootNode { 374 - constructor(ast, nameNode, transformNode) { 375 - const indexId = t.identifier('last_index'); 376 - const node = t.callExpression(ids.tag, [ids.node, nameNode]); 377 - 378 - this.returnStatement = t.returnStatement( 379 - transformNode ? t.callExpression(transformNode, [node]) : node 380 - ); 381 - 382 - this.assignIndex = new AssignIndexNode(indexId); 383 - this.node = new AlternationNode(ast, 0, { 384 - returnStatement: this.returnStatement, 385 - restoreIndex: new RestoreIndexNode(indexId, true), 386 - restoreLength: null, 387 - abortCondition: null, 388 - abort: new AbortNode(), 389 - capturing: true, 390 - }); 391 - } 392 - 393 - statements() { 394 - return [ 395 - this.assignIndex.statement(), 396 - t.variableDeclaration('var', [ 397 - t.variableDeclarator(ids.match), 398 - t.variableDeclarator(ids.node, t.arrayExpression()), 399 - ]), 400 - ...this.node.statements(), 401 - this.returnStatement, 402 - ]; 403 - } 404 - }
+2 -2
src/babel/macro.js
··· 1 1 import { createMacro } from 'babel-plugin-macros'; 2 2 import { makeHelpers } from './transform'; 3 3 4 - function reghexMacro({ references, babel: { types: t } }) { 5 - const helpers = makeHelpers(t); 4 + function reghexMacro({ references, babel }) { 5 + const helpers = makeHelpers(babel); 6 6 const defaultRefs = references.default || []; 7 7 8 8 defaultRefs.forEach((ref) => {
+8 -3
src/babel/plugin.js
··· 1 1 import { makeHelpers } from './transform'; 2 2 3 - export default function reghexPlugin({ types }) { 3 + export default function reghexPlugin(babel, opts = {}) { 4 4 let helpers; 5 5 6 6 return { 7 7 name: 'reghex', 8 8 visitor: { 9 9 Program() { 10 - helpers = makeHelpers(types); 10 + helpers = makeHelpers(babel); 11 11 }, 12 12 ImportDeclaration(path) { 13 + if (opts.codegen === false) return; 13 14 helpers.updateImport(path); 14 15 }, 15 16 TaggedTemplateExpression(path) { 16 17 if (helpers.isMatch(path) && helpers.getMatchImport(path)) { 17 - helpers.transformMatch(path); 18 + if (opts.codegen === false) { 19 + helpers.minifyMatch(path); 20 + } else { 21 + helpers.transformMatch(path); 22 + } 18 23 } 19 24 }, 20 25 },
+83 -7
src/babel/plugin.test.js
··· 3 3 4 4 it('works with standard features', () => { 5 5 const code = ` 6 - import match from 'reghex/macro'; 6 + import { match } from 'reghex/macro'; 7 7 8 8 const node = match('node')\` 9 9 \${1}+ | \${2}+ (\${3} ( \${4}? \${5} ) )* ··· 16 16 ).toMatchSnapshot(); 17 17 }); 18 18 19 + it('works with nameless matchers', () => { 20 + const code = ` 21 + import { match } from 'reghex/macro'; 22 + 23 + const node = match()\` 24 + \${1}+ | \${2}+ (\${3} ( \${4}? \${5} ) )* 25 + \`; 26 + `; 27 + 28 + expect( 29 + transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] }) 30 + .code 31 + ).toMatchSnapshot(); 32 + }); 33 + 34 + it('works while only minifying', () => { 35 + const code = ` 36 + import { match } from 'reghex/macro'; 37 + 38 + const node = match('node')\` 39 + \${1}+ | \${2}+ (\${3} ( \${4}? \${5} ) )* 40 + \`; 41 + `; 42 + 43 + expect( 44 + transform(code, { 45 + babelrc: false, 46 + presets: [], 47 + plugins: [[reghexPlugin, { codegen: false }]], 48 + }).code 49 + ).toMatchSnapshot(); 50 + }); 51 + 52 + it('deduplicates hoisted expressions', () => { 53 + const code = ` 54 + import { match } from 'reghex/macro'; 55 + 56 + const re = /1/; 57 + const str = '1'; 58 + 59 + const a = match('a')\` 60 + \${re} 61 + \${str} 62 + \`; 63 + 64 + const b = match('b')\` 65 + \${re} 66 + \${'2'} 67 + \`; 68 + `; 69 + 70 + expect( 71 + transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] }) 72 + .code 73 + ).toMatchSnapshot(); 74 + }); 75 + 19 76 it('works with local recursion', () => { 20 77 // NOTE: A different default name is allowed 21 78 const code = ` 22 - import match_rec, { tag } from 'reghex'; 79 + import { match as m, tag } from 'reghex'; 23 80 24 - const inner = match_rec('inner')\` 81 + const inner = m('inner')\` 25 82 \${/inner/} 26 83 \`; 27 84 28 - const node = match_rec('node')\` 85 + const node = m('node')\` 86 + \${inner} 87 + \`; 88 + `; 89 + 90 + expect( 91 + transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] }) 92 + .code 93 + ).toMatchSnapshot(); 94 + }); 95 + 96 + it('works with self-referential thunks', () => { 97 + const code = ` 98 + import { match, tag } from 'reghex'; 99 + 100 + const inner = match('inner')\` 101 + \${() => node} 102 + \`; 103 + 104 + const node = match('node')\` 29 105 \${inner} 30 106 \`; 31 107 `; ··· 38 114 39 115 it('works with transform functions', () => { 40 116 const code = ` 41 - import match from 'reghex'; 117 + import { match } from 'reghex'; 42 118 43 119 const first = match('inner', x => x)\`\`; 44 120 ··· 54 130 55 131 it('works with non-capturing groups', () => { 56 132 const code = ` 57 - import match from 'reghex'; 133 + import { match } from 'reghex'; 58 134 59 135 const node = match('node')\` 60 136 \${1} (\${2} | (?: \${3})+) ··· 69 145 70 146 it('works together with @babel/plugin-transform-modules-commonjs', () => { 71 147 const code = ` 72 - import match from 'reghex'; 148 + import { match } from 'reghex'; 73 149 74 150 const node = match('node')\` 75 151 \${1} \${2}
-32
src/babel/sharedIds.js
··· 1 - export class SharedIds { 2 - constructor(t) { 3 - this.t = t; 4 - this.execId = t.identifier('_exec'); 5 - this.patternId = t.identifier('_pattern'); 6 - this.tagId = t.identifier('tag'); 7 - } 8 - 9 - get node() { 10 - return this.t.identifier('node'); 11 - } 12 - 13 - get match() { 14 - return this.t.identifier('match'); 15 - } 16 - 17 - get state() { 18 - return this.t.identifier('state'); 19 - } 20 - 21 - get exec() { 22 - return this.t.identifier(this.execId.name); 23 - } 24 - 25 - get pattern() { 26 - return this.t.identifier(this.patternId.name); 27 - } 28 - 29 - get tag() { 30 - return this.t.identifier(this.tagId.name); 31 - } 32 - }
+102 -76
src/babel/transform.js
··· 1 + import { astRoot } from '../codegen'; 1 2 import { parse } from '../parser'; 2 - import { SharedIds } from './sharedIds'; 3 - import { initGenerator, RootNode } from './generator'; 4 3 5 - export function makeHelpers(t) { 4 + export function makeHelpers({ types: t, template }) { 5 + const regexPatternsRe = /^[()\[\]|.+?*]|[^\\][()\[\]|.+?*$^]|\\[wdsWDS]/; 6 6 const importSourceRe = /reghex$|^reghex\/macro/; 7 7 const importName = 'reghex'; 8 - const ids = new SharedIds(t); 9 - initGenerator(ids, t); 10 8 11 9 let _hasUpdatedImport = false; 10 + let _matchId = t.identifier('match'); 11 + let _patternId = t.identifier('__pattern'); 12 + 13 + const _hoistedExpressions = new Map(); 12 14 13 15 return { 14 16 /** Adds the reghex import declaration to the Program scope */ ··· 17 19 if (!importSourceRe.test(path.node.source.value)) return; 18 20 _hasUpdatedImport = true; 19 21 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 22 if (path.node.source.value !== importName) { 29 23 path.node.source = t.stringLiteral(importName); 30 24 } 31 25 26 + _patternId = path.scope.generateUidIdentifier('_pattern'); 32 27 path.node.specifiers.push( 33 - t.importSpecifier( 34 - (ids.execId = path.scope.generateUidIdentifier('exec')), 35 - t.identifier('_exec') 36 - ), 37 - t.importSpecifier( 38 - (ids.patternId = path.scope.generateUidIdentifier('pattern')), 39 - t.identifier('_pattern') 40 - ) 28 + t.importSpecifier(_patternId, t.identifier('__pattern')) 41 29 ); 42 30 43 31 const tagImport = path.node.specifiers.find((node) => { 44 - return t.isImportSpecifier(node) && node.imported.name === 'tag'; 32 + return t.isImportSpecifier(node) && node.imported.name === 'match'; 45 33 }); 34 + 46 35 if (!tagImport) { 47 36 path.node.specifiers.push( 48 37 t.importSpecifier( 49 - (ids.tagId = path.scope.generateUidIdentifier('tag')), 50 - t.identifier('tag') 38 + (_matchId = path.scope.generateUidIdentifier('match')), 39 + t.identifier('match') 51 40 ) 52 41 ); 53 42 } else { 54 - ids.tagId = tagImport.imported; 43 + _matchId = tagImport.imported; 55 44 } 56 45 }, 57 46 ··· 82 71 binding.kind !== 'module' || 83 72 !t.isImportDeclaration(binding.path.parent) || 84 73 !importSourceRe.test(binding.path.parent.source.value) || 85 - !t.isImportDefaultSpecifier(binding.path.node) 74 + !t.isImportSpecifier(binding.path.node) 86 75 ) { 87 76 return null; 88 77 } ··· 94 83 getMatchName(path) { 95 84 t.assertTaggedTemplateExpression(path.node); 96 85 const nameArgumentPath = path.get('tag.arguments.0'); 97 - const { confident, value } = nameArgumentPath.evaluate(); 98 - if (!confident && t.isIdentifier(nameArgumentPath.node)) { 99 - return nameArgumentPath.node.name; 100 - } else if (confident && typeof value === 'string') { 101 - return value; 102 - } else { 103 - return path.scope.generateUidIdentifierBasedOnNode(path.node); 86 + if (nameArgumentPath) { 87 + const { confident, value } = nameArgumentPath.evaluate(); 88 + if (!confident && t.isIdentifier(nameArgumentPath.node)) { 89 + return nameArgumentPath.node.name; 90 + } else if (confident && typeof value === 'string') { 91 + return value; 92 + } 104 93 } 94 + 95 + return path.scope.generateUidIdentifierBasedOnNode(path.node); 105 96 }, 106 97 107 98 /** Given a match, hoists its expressions in front of the match's statement */ 108 - _hoistExpressions(path) { 99 + _prepareExpressions(path) { 109 100 t.assertTaggedTemplateExpression(path.node); 110 101 111 102 const variableDeclarators = []; 112 103 const matchName = this.getMatchName(path); 113 104 114 105 const hoistedExpressions = path.node.quasi.expressions.map( 115 - (expression) => { 106 + (expression, i) => { 116 107 if ( 117 - t.isIdentifier(expression) && 118 - path.scope.hasBinding(expression.name) 108 + t.isArrowFunctionExpression(expression) && 109 + t.isIdentifier(expression.body) 119 110 ) { 111 + expression = expression.body; 112 + } else if ( 113 + (t.isFunctionExpression(expression) || 114 + t.isArrowFunctionExpression(expression)) && 115 + t.isBlockStatement(expression.body) && 116 + expression.body.body.length === 1 && 117 + t.isReturnStatement(expression.body.body[0]) && 118 + t.isIdentifier(expression.body.body[0].argument) 119 + ) { 120 + expression = expression.body.body[0].argument; 121 + } 122 + 123 + const isBindingExpression = 124 + t.isIdentifier(expression) && 125 + path.scope.hasBinding(expression.name); 126 + if (isBindingExpression) { 120 127 const binding = path.scope.getBinding(expression.name); 121 128 if (t.isVariableDeclarator(binding.path.node)) { 122 129 const matchPath = binding.path.get('init'); 123 - if (this.isMatch(matchPath)) return expression; 130 + if (this.isMatch(matchPath)) { 131 + return expression; 132 + } else if (_hoistedExpressions.has(expression.name)) { 133 + return t.identifier(_hoistedExpressions.get(expression.name)); 134 + } 124 135 } 125 136 } 126 137 127 138 const id = path.scope.generateUidIdentifier( 128 - `${matchName}_expression` 139 + isBindingExpression 140 + ? `${expression.name}_expression` 141 + : `${matchName}_expression` 129 142 ); 143 + 130 144 variableDeclarators.push( 131 145 t.variableDeclarator( 132 146 id, 133 - t.callExpression(ids.pattern, [expression]) 147 + t.callExpression(t.identifier(_patternId.name), [expression]) 134 148 ) 135 149 ); 150 + 151 + if (t.isIdentifier(expression)) { 152 + _hoistedExpressions.set(expression.name, id.name); 153 + } 154 + 136 155 return id; 137 156 } 138 157 ); ··· 143 162 .insertBefore(t.variableDeclaration('var', variableDeclarators)); 144 163 } 145 164 146 - return hoistedExpressions; 165 + return hoistedExpressions.map((id) => { 166 + const binding = path.scope.getBinding(id.name); 167 + if (binding && t.isVariableDeclarator(binding.path.node)) { 168 + const matchPath = binding.path.get('init'); 169 + if (this.isMatch(matchPath)) { 170 + return { fn: true, id: id.name }; 171 + } 172 + } 173 + 174 + const input = t.isStringLiteral(id) 175 + ? JSON.stringify(id.value) 176 + : id.name; 177 + return { fn: false, id: input }; 178 + }); 147 179 }, 148 180 149 - _hoistTransform(path) { 181 + _prepareTransform(path) { 150 182 const transformNode = path.node.tag.arguments[1]; 183 + 151 184 if (!transformNode) return null; 152 - if (t.isIdentifier(transformNode)) return transformNode; 185 + if (t.isIdentifier(transformNode)) return transformNode.name; 153 186 154 187 const matchName = this.getMatchName(path); 155 188 const id = path.scope.generateUidIdentifier(`${matchName}_transform`); ··· 158 191 path 159 192 .getStatementParent() 160 193 .insertBefore(t.variableDeclaration('var', [declarator])); 161 - return id; 194 + 195 + return id.name; 196 + }, 197 + 198 + minifyMatch(path) { 199 + const quasis = path.node.quasi.quasis.map((x) => 200 + t.stringLiteral(x.value.cooked.replace(/\s*/g, '')) 201 + ); 202 + const expressions = path.node.quasi.expressions; 203 + const transform = this._prepareTransform(path); 204 + 205 + path.replaceWith( 206 + t.callExpression(path.node.tag, [ 207 + t.arrayExpression(quasis), 208 + ...expressions, 209 + ]) 210 + ); 162 211 }, 163 212 164 213 transformMatch(path) { 165 - if (!path.node.tag.arguments.length) { 166 - throw path 167 - .get('tag') 168 - .buildCodeFrameError( 169 - 'match() must at least be called with a node name' 170 - ); 214 + let name = path.node.tag.arguments[0]; 215 + if (!name) { 216 + name = t.nullLiteral(); 171 217 } 172 218 173 - const matchName = this.getMatchName(path); 174 - const nameNode = path.node.tag.arguments[0]; 175 219 const quasis = path.node.quasi.quasis.map((x) => x.value.cooked); 176 220 177 - // Hoist expressions and wrap them in an execPattern call 178 - const expressions = this._hoistExpressions(path).map((id) => { 179 - // Directly call expression if it's sure to be another matcher 180 - const binding = path.scope.getBinding(id.name); 181 - if (binding && t.isVariableDeclarator(binding.path.node)) { 182 - const matchPath = binding.path.get('init'); 183 - if (this.isMatch(matchPath)) { 184 - return t.callExpression(id, [ids.state]); 185 - } 186 - } 187 - 188 - return t.callExpression(ids.exec, [ids.state, id]); 189 - }); 190 - 191 - // Hoist transform argument if necessary 192 - const transformNode = this._hoistTransform(path); 221 + const expressions = this._prepareExpressions(path); 222 + const transform = this._prepareTransform(path); 193 223 194 224 let ast; 195 225 try { ··· 199 229 throw path.get('quasi').buildCodeFrameError(error.message); 200 230 } 201 231 202 - const generator = new RootNode(ast, nameNode, transformNode); 203 - const body = t.blockStatement(generator.statements()); 204 - const matchFunctionId = path.scope.generateUidIdentifier(matchName); 205 - const matchFunction = t.functionExpression( 206 - matchFunctionId, 207 - [ids.state], 208 - body 232 + const code = astRoot(ast, '%%name%%', transform && '%%transform%%'); 233 + 234 + path.replaceWith( 235 + template.expression(code)(transform ? { name, transform } : { name }) 209 236 ); 210 - path.replaceWith(matchFunction); 211 237 }, 212 238 }; 213 239 }
+203
src/codegen.js
··· 1 + const _state = 'state'; 2 + const _node = 'node'; 3 + const _match = 'x'; 4 + 5 + function js(/* arguments */) { 6 + let body = arguments[0][0]; 7 + for (let i = 1; i < arguments.length; i++) 8 + body = body + arguments[i] + arguments[0][i]; 9 + return body.trim(); 10 + } 11 + 12 + const copy = (prev) => { 13 + const next = {}; 14 + for (const key in prev) next[key] = prev[key]; 15 + return next; 16 + }; 17 + 18 + const assignIndex = (depth) => js` 19 + var y${depth} = ${_state}.y, 20 + x${depth} = ${_state}.x; 21 + `; 22 + 23 + const restoreIndex = (depth) => js` 24 + ${_state}.y = y${depth}; 25 + ${_state}.x = x${depth}; 26 + `; 27 + 28 + const astExpression = (ast, depth, opts) => { 29 + const capture = !!opts.capture && !ast.capture; 30 + const restoreLength = 31 + (opts.length && opts.abort && js`${_node}.length = ln${opts.length};`) || 32 + ''; 33 + const condition = `(${_match} = ${ast.expression.id}(${_state})) ${ 34 + capture ? '!=' : '==' 35 + } null`; 36 + return js` 37 + if (${condition}) ${ 38 + capture 39 + ? js`{ 40 + ${_node}.push(${_match}); 41 + } else ` 42 + : '' 43 + }{ 44 + ${restoreIndex(opts.index)} 45 + ${restoreLength} 46 + ${opts.abort} 47 + } 48 + `; 49 + }; 50 + 51 + const astGroup = (ast, depth, opts) => { 52 + const capture = !!opts.capture && !ast.capture; 53 + 54 + opts = copy(opts); 55 + opts.capture = capture; 56 + 57 + if (!opts.length && capture) { 58 + opts.length = depth; 59 + return js` 60 + ${js`var ln${depth} = ${_node}.length;`} 61 + ${astSequence(ast.sequence, depth + 1, opts)} 62 + `; 63 + } 64 + 65 + return astSequence(ast.sequence, depth + 1, opts); 66 + }; 67 + 68 + const astChild = (ast, depth, opts) => 69 + ast.expression ? astExpression(ast, depth, opts) : astGroup(ast, depth, opts); 70 + 71 + const astQuantifier = (ast, depth, opts) => { 72 + const { index, abort } = opts; 73 + const invert = `inv_${depth}`; 74 + const group = `group_${depth}`; 75 + 76 + opts = copy(opts); 77 + if (ast.capture === '!') { 78 + opts.index = depth; 79 + opts.abort = js`break ${invert}`; 80 + } 81 + 82 + let child; 83 + if (ast.quantifier === '+') { 84 + const starAst = copy(ast); 85 + starAst.quantifier = '*'; 86 + child = js` 87 + ${astChild(ast, depth, opts)} 88 + ${astQuantifier(starAst, depth, opts)} 89 + `; 90 + } else if (ast.quantifier === '*') { 91 + opts.length = 0; 92 + opts.index = depth; 93 + opts.abort = js`break ${group};`; 94 + 95 + child = js` 96 + ${group}: for (;;) { 97 + ${assignIndex(depth)} 98 + ${astChild(ast, depth, opts)} 99 + } 100 + `; 101 + } else if (ast.quantifier === '?' && ast.expression) { 102 + opts.index = depth; 103 + opts.abort = ''; 104 + 105 + child = js` 106 + ${assignIndex(depth)} 107 + ${astChild(ast, depth, opts)} 108 + `; 109 + } else if (ast.quantifier === '?') { 110 + opts.index = depth; 111 + opts.abort = js`break ${group}`; 112 + 113 + child = js` 114 + ${group}: { 115 + ${assignIndex(depth)} 116 + ${astChild(ast, depth, opts)} 117 + } 118 + `; 119 + } else { 120 + child = astChild(ast, depth, opts); 121 + } 122 + 123 + if (ast.capture === '!') { 124 + return js` 125 + ${invert}: { 126 + ${assignIndex(depth)} 127 + ${child} 128 + ${restoreIndex(index)} 129 + ${abort} 130 + } 131 + `; 132 + } else if (ast.capture === '=') { 133 + return js` 134 + ${assignIndex(depth)} 135 + ${child} 136 + ${restoreIndex(depth)} 137 + `; 138 + } else { 139 + return child; 140 + } 141 + }; 142 + 143 + const astSequence = (ast, depth, opts) => { 144 + const alternation = ast.alternation ? `alt_${depth}` : ''; 145 + 146 + let body = ''; 147 + for (; ast; ast = ast.alternation) { 148 + const block = `block_${depth}`; 149 + 150 + let childOpts = opts; 151 + if (ast.alternation) { 152 + childOpts = copy(opts); 153 + childOpts.index = depth; 154 + childOpts.abort = js`break ${block};`; 155 + } 156 + 157 + let sequence = ''; 158 + for (let i = 0; i < ast.length; i++) 159 + sequence += astQuantifier(ast[i], depth, childOpts); 160 + 161 + if (!ast.alternation) { 162 + body += sequence; 163 + } else { 164 + body += js` 165 + ${block}: { 166 + ${assignIndex(depth)} 167 + ${sequence} 168 + break ${alternation}; 169 + } 170 + `; 171 + } 172 + } 173 + 174 + if (!alternation) return body; 175 + 176 + return js` 177 + ${alternation}: { 178 + ${body} 179 + } 180 + `; 181 + }; 182 + 183 + const astRoot = (ast, name, transform) => { 184 + return js` 185 + (function (${_state}) { 186 + ${assignIndex(1)} 187 + var ${_node} = []; 188 + var ${_match}; 189 + 190 + ${astSequence(ast, 2, { 191 + index: 1, 192 + length: 0, 193 + abort: js`return;`, 194 + capture: true, 195 + })} 196 + 197 + if (${name}) ${_node}.tag = ${name}; 198 + return ${transform ? js`(${transform})(${_node})` : _node}; 199 + }) 200 + `; 201 + }; 202 + 203 + export { astRoot };
+71 -28
src/core.js
··· 1 + import { astRoot } from './codegen'; 2 + import { parse as parseDSL } from './parser'; 3 + 1 4 const isStickySupported = typeof /./g.sticky === 'boolean'; 2 5 3 - export const _pattern = (input) => { 4 - if (typeof input === 'function') return input; 6 + const execLambda = (pattern) => { 7 + if (pattern.length) return pattern; 8 + return (state) => pattern()(state); 9 + }; 5 10 6 - const source = typeof input !== 'string' ? input.source : input; 7 - return isStickySupported 8 - ? new RegExp(source, 'y') 9 - : new RegExp(`^(?:${source})`, 'g'); 11 + const execString = (pattern) => { 12 + return (state) => { 13 + if (state.x < state.quasis.length) { 14 + const input = state.quasis[state.x]; 15 + for (let i = 0, l = pattern.length; i < l; i++) 16 + if (input.charCodeAt(state.y + i) !== pattern.charCodeAt(i)) 17 + return null; 18 + state.y += pattern.length; 19 + return pattern; 20 + } 21 + }; 10 22 }; 11 23 12 - export const _exec = (state, pattern) => { 13 - if (typeof pattern === 'function') return pattern(); 24 + const execRegex = (pattern) => { 25 + pattern = isStickySupported 26 + ? new RegExp(pattern.source, 'y') 27 + : new RegExp(pattern.source + '|()', 'g'); 28 + return (state) => { 29 + if (state.x < state.quasis.length) { 30 + const input = state.quasis[state.x]; 31 + pattern.lastIndex = state.y; 32 + let match; 33 + if (isStickySupported) { 34 + if (pattern.test(input)) 35 + match = input.slice(state.y, pattern.lastIndex); 36 + } else { 37 + const x = pattern.exec(input); 38 + if (x[1] == null) match = x[0]; 39 + } 14 40 15 - let match; 16 - if (isStickySupported) { 17 - pattern.lastIndex = state.index; 18 - match = pattern.exec(state.input); 19 - state.index = pattern.lastIndex; 41 + state.y = pattern.lastIndex; 42 + return match; 43 + } 44 + }; 45 + }; 46 + 47 + export const __pattern = (input) => { 48 + if (typeof input === 'function') { 49 + return execLambda(input); 50 + } else if (typeof input === 'string') { 51 + return execString(input); 20 52 } else { 21 - pattern.lastIndex = 0; 22 - match = pattern.exec(state.input.slice(state.input)); 23 - state.index += pattern.lastIndex; 53 + return execRegex(input); 24 54 } 55 + }; 25 56 26 - return match && match[0]; 27 - }; 57 + export const interpolation = (predicate) => (state) => { 58 + let match; 59 + 60 + if ( 61 + state.x < state.expressions.length && 62 + state.y >= state.quasis[state.x].length 63 + ) { 64 + state.y = 0; 65 + match = state.expressions[state.x++]; 66 + if (predicate && match) match = predicate(match); 67 + } 28 68 29 - export const tag = (array, tag) => { 30 - array.tag = tag; 31 - return array; 69 + return match; 32 70 }; 33 71 34 - export const parse = (pattern) => (input) => { 35 - const state = { input, index: 0 }; 36 - return pattern(state); 72 + export const parse = (matcher) => (quasis, ...expressions) => { 73 + if (typeof quasis === 'string') quasis = [quasis]; 74 + const state = { quasis, expressions, x: 0, y: 0 }; 75 + return matcher(state); 37 76 }; 38 77 39 - export const match = (_name) => { 40 - throw new TypeError( 41 - 'This match() function was not transformed. ' + 42 - 'Ensure that the Babel plugin is set up correctly and try again.' 78 + export const match = (name, transform) => (quasis, ...expressions) => { 79 + const ast = parseDSL( 80 + quasis, 81 + expressions.map((_, i) => ({ id: `_${i}` })) 43 82 ); 83 + return new Function( 84 + '_n,_t,' + expressions.map((_expression, i) => `_${i}`).join(','), 85 + 'return ' + astRoot(ast, '_n', transform ? '_t' : null) 86 + )(name, transform, ...expressions.map(__pattern)); 44 87 };
+655
src/core.test.js
··· 1 + import { parse, match, interpolation } from './core'; 2 + 3 + const expectToParse = (node, input, result, lastIndex = 0) => { 4 + const state = { quasis: [input], expressions: [], x: 0, y: 0 }; 5 + if (result) result.tag = 'node'; 6 + expect(node(state)).toEqual(result); 7 + 8 + // NOTE: After parsing we expect the current index to exactly match the 9 + // sum amount of matched characters 10 + if (result === undefined) { 11 + expect(state.y).toBe(0); 12 + } else { 13 + const index = lastIndex || result.reduce((acc, x) => acc + x.length, 0); 14 + expect(state.y).toBe(index); 15 + } 16 + }; 17 + 18 + describe('can create nameless matchers', () => { 19 + it('matches without tagging', () => { 20 + const state = { quasis: ['1'], expressions: [], x: 0, y: 0 }; 21 + const node = match(null)`${/1/}`; 22 + expect(node(state)).toEqual(['1']); 23 + }); 24 + }); 25 + 26 + describe('required matcher', () => { 27 + const node = match('node')`${/1/}`; 28 + it.each` 29 + input | result 30 + ${'1'} | ${['1']} 31 + ${''} | ${undefined} 32 + `('should return $result when $input is passed', ({ input, result }) => { 33 + expectToParse(node, input, result); 34 + }); 35 + 36 + it('matches empty regex patterns', () => { 37 + const node = match('node')`${/[ ]*/}`; 38 + expectToParse(node, '', ['']); 39 + }); 40 + }); 41 + 42 + describe('optional matcher', () => { 43 + const node = match('node')`${/1/}?`; 44 + it.each` 45 + input | result 46 + ${'1'} | ${['1']} 47 + ${'_'} | ${[]} 48 + ${''} | ${[]} 49 + `('should return $result when $input is passed', ({ input, result }) => { 50 + expectToParse(node, input, result); 51 + }); 52 + }); 53 + 54 + describe('star matcher', () => { 55 + const node = match('node')`${/1/}*`; 56 + it.each` 57 + input | result 58 + ${'1'} | ${['1']} 59 + ${'11'} | ${['1', '1']} 60 + ${'111'} | ${['1', '1', '1']} 61 + ${'_'} | ${[]} 62 + ${''} | ${[]} 63 + `('should return $result when "$input" is passed', ({ input, result }) => { 64 + expectToParse(node, input, result); 65 + }); 66 + }); 67 + 68 + describe('plus matcher', () => { 69 + const node = match('node')`${/1/}+`; 70 + it.each` 71 + input | result 72 + ${'1'} | ${['1']} 73 + ${'11'} | ${['1', '1']} 74 + ${'111'} | ${['1', '1', '1']} 75 + ${'_'} | ${undefined} 76 + ${''} | ${undefined} 77 + `('should return $result when "$input" is passed', ({ input, result }) => { 78 + expectToParse(node, input, result); 79 + }); 80 + }); 81 + 82 + describe('optional then required matcher', () => { 83 + const node = match('node')`${/1/}? ${/2/}`; 84 + it.each` 85 + input | result 86 + ${'12'} | ${['1', '2']} 87 + ${'2'} | ${['2']} 88 + ${''} | ${undefined} 89 + `('should return $result when $input is passed', ({ input, result }) => { 90 + expectToParse(node, input, result); 91 + }); 92 + }); 93 + 94 + describe('star then required matcher', () => { 95 + const node = match('node')`${/1/}* ${/2/}`; 96 + it.each` 97 + input | result 98 + ${'12'} | ${['1', '2']} 99 + ${'112'} | ${['1', '1', '2']} 100 + ${'2'} | ${['2']} 101 + ${''} | ${undefined} 102 + `('should return $result when $input is passed', ({ input, result }) => { 103 + expectToParse(node, input, result); 104 + }); 105 + }); 106 + 107 + describe('plus then required matcher', () => { 108 + const node = match('node')`${/1/}+ ${/2/}`; 109 + it.each` 110 + input | result 111 + ${'12'} | ${['1', '2']} 112 + ${'112'} | ${['1', '1', '2']} 113 + ${'2'} | ${undefined} 114 + ${''} | ${undefined} 115 + `('should return $result when $input is passed', ({ input, result }) => { 116 + expectToParse(node, input, result); 117 + }); 118 + }); 119 + 120 + describe('optional group then required matcher', () => { 121 + const node = match('node')`(${/1/} ${/2/})? ${/3/}`; 122 + it.each` 123 + input | result 124 + ${'123'} | ${['1', '2', '3']} 125 + ${'3'} | ${['3']} 126 + ${'23'} | ${undefined} 127 + ${'_'} | ${undefined} 128 + `('should return $result when $input is passed', ({ input, result }) => { 129 + expectToParse(node, input, result); 130 + }); 131 + }); 132 + 133 + describe('star group then required matcher', () => { 134 + const node = match('node')`(${/1/} ${/2/})* ${/3/}`; 135 + it.each` 136 + input | result 137 + ${'123'} | ${['1', '2', '3']} 138 + ${'12123'} | ${['1', '2', '1', '2', '3']} 139 + ${'3'} | ${['3']} 140 + ${'23'} | ${undefined} 141 + ${'13'} | ${undefined} 142 + ${'_'} | ${undefined} 143 + `('should return $result when $input is passed', ({ input, result }) => { 144 + expectToParse(node, input, result); 145 + }); 146 + }); 147 + 148 + describe('plus group then required matcher', () => { 149 + const node = match('node')`(${/1/} ${/2/})+ ${/3/}`; 150 + it.each` 151 + input | result 152 + ${'123'} | ${['1', '2', '3']} 153 + ${'12123'} | ${['1', '2', '1', '2', '3']} 154 + ${'23'} | ${undefined} 155 + ${'3'} | ${undefined} 156 + ${'13'} | ${undefined} 157 + ${'_'} | ${undefined} 158 + `('should return $result when $input is passed', ({ input, result }) => { 159 + expectToParse(node, input, result); 160 + }); 161 + }); 162 + 163 + describe('optional group with nested optional matcher, then required matcher', () => { 164 + const node = match('node')`(${/1/}? ${/2/})? ${/3/}`; 165 + it.each` 166 + input | result 167 + ${'123'} | ${['1', '2', '3']} 168 + ${'23'} | ${['2', '3']} 169 + ${'3'} | ${['3']} 170 + ${'13'} | ${undefined} 171 + ${'_'} | ${undefined} 172 + `('should return $result when $input is passed', ({ input, result }) => { 173 + expectToParse(node, input, result); 174 + }); 175 + }); 176 + 177 + describe('star group with nested optional matcher, then required matcher', () => { 178 + const node = match('node')`(${/1/}? ${/2/})* ${/3/}`; 179 + it.each` 180 + input | result 181 + ${'123'} | ${['1', '2', '3']} 182 + ${'23'} | ${['2', '3']} 183 + ${'223'} | ${['2', '2', '3']} 184 + ${'2123'} | ${['2', '1', '2', '3']} 185 + ${'3'} | ${['3']} 186 + ${'13'} | ${undefined} 187 + ${'_'} | ${undefined} 188 + `('should return $result when $input is passed', ({ input, result }) => { 189 + expectToParse(node, input, result); 190 + }); 191 + }); 192 + 193 + describe('plus group with nested optional matcher, then required matcher', () => { 194 + const node = match('node')`(${/1/}? ${/2/})+ ${/3/}`; 195 + it.each` 196 + input | result 197 + ${'123'} | ${['1', '2', '3']} 198 + ${'23'} | ${['2', '3']} 199 + ${'223'} | ${['2', '2', '3']} 200 + ${'2123'} | ${['2', '1', '2', '3']} 201 + ${'3'} | ${undefined} 202 + ${'13'} | ${undefined} 203 + ${'_'} | ${undefined} 204 + `('should return $result when $input is passed', ({ input, result }) => { 205 + expectToParse(node, input, result); 206 + }); 207 + }); 208 + 209 + describe('plus group with nested plus matcher, then required matcher', () => { 210 + const node = match('node')`(${/1/}+ ${/2/})+ ${/3/}`; 211 + it.each` 212 + input | result 213 + ${'123'} | ${['1', '2', '3']} 214 + ${'1123'} | ${['1', '1', '2', '3']} 215 + ${'12123'} | ${['1', '2', '1', '2', '3']} 216 + ${'121123'} | ${['1', '2', '1', '1', '2', '3']} 217 + ${'3'} | ${undefined} 218 + ${'23'} | ${undefined} 219 + ${'13'} | ${undefined} 220 + ${'_'} | ${undefined} 221 + `('should return $result when $input is passed', ({ input, result }) => { 222 + expectToParse(node, input, result); 223 + }); 224 + }); 225 + 226 + describe('plus group with nested required and plus matcher, then required matcher', () => { 227 + const node = match('node')`(${/1/} ${/2/}+)+ ${/3/}`; 228 + it.each` 229 + input | result 230 + ${'123'} | ${['1', '2', '3']} 231 + ${'1223'} | ${['1', '2', '2', '3']} 232 + ${'122123'} | ${['1', '2', '2', '1', '2', '3']} 233 + ${'13'} | ${undefined} 234 + ${'_'} | ${undefined} 235 + `('should return $result when $input is passed', ({ input, result }) => { 236 + expectToParse(node, input, result); 237 + }); 238 + }); 239 + 240 + describe('nested plus group with nested required and plus matcher, then required matcher or alternate', () => { 241 + const node = match('node')`(${/1/} ${/2/}+)+ ${/3/} | ${/1/}`; 242 + it.each` 243 + input | result 244 + ${'123'} | ${['1', '2', '3']} 245 + ${'1223'} | ${['1', '2', '2', '3']} 246 + ${'122123'} | ${['1', '2', '2', '1', '2', '3']} 247 + ${'1'} | ${['1']} 248 + ${'13'} | ${['1']} 249 + ${'_'} | ${undefined} 250 + `('should return $result when $input is passed', ({ input, result }) => { 251 + expectToParse(node, input, result); 252 + }); 253 + }); 254 + 255 + describe('nested plus group with nested required and plus matcher, then alternate', () => { 256 + const node = match('node')`(${/1/} ${/2/}+)+ (${/3/} | ${/4/})`; 257 + it.each` 258 + input | result 259 + ${'123'} | ${['1', '2', '3']} 260 + ${'124'} | ${['1', '2', '4']} 261 + ${'1223'} | ${['1', '2', '2', '3']} 262 + ${'1224'} | ${['1', '2', '2', '4']} 263 + ${'1'} | ${undefined} 264 + ${'13'} | ${undefined} 265 + ${'_'} | ${undefined} 266 + `('should return $result when $input is passed', ({ input, result }) => { 267 + expectToParse(node, input, result); 268 + }); 269 + }); 270 + 271 + describe('regular alternate', () => { 272 + const node = match('node')`${/1/} | ${/2/} | ${/3/} | ${/4/}`; 273 + it.each` 274 + input | result 275 + ${'1'} | ${['1']} 276 + ${'2'} | ${['2']} 277 + ${'3'} | ${['3']} 278 + ${'4'} | ${['4']} 279 + ${'_'} | ${undefined} 280 + `('should return $result when $input is passed', ({ input, result }) => { 281 + expectToParse(node, input, result); 282 + }); 283 + }); 284 + 285 + describe('nested alternate in nested alternate in alternate', () => { 286 + const node = match('node')`((${/1/} | ${/2/}) | ${/3/}) | ${/4/}`; 287 + it.each` 288 + input | result 289 + ${'1'} | ${['1']} 290 + ${'2'} | ${['2']} 291 + ${'3'} | ${['3']} 292 + ${'4'} | ${['4']} 293 + ${'_'} | ${undefined} 294 + `('should return $result when $input is passed', ({ input, result }) => { 295 + expectToParse(node, input, result); 296 + }); 297 + }); 298 + 299 + describe('alternate after required matcher', () => { 300 + const node = match('node')`${/1/} (${/2/} | ${/3/})`; 301 + it.each` 302 + input | result 303 + ${'12'} | ${['1', '2']} 304 + ${'13'} | ${['1', '3']} 305 + ${'14'} | ${undefined} 306 + ${'3'} | ${undefined} 307 + ${'_'} | ${undefined} 308 + `('should return $result when $input is passed', ({ input, result }) => { 309 + expectToParse(node, input, result); 310 + }); 311 + }); 312 + 313 + describe('alternate with star group and required matcher after required matcher', () => { 314 + const node = match('node')`${/1/} (${/2/}* ${/3/} | ${/4/})`; 315 + it.each` 316 + input | result 317 + ${'123'} | ${['1', '2', '3']} 318 + ${'1223'} | ${['1', '2', '2', '3']} 319 + ${'13'} | ${['1', '3']} 320 + ${'14'} | ${['1', '4']} 321 + ${'12'} | ${undefined} 322 + ${'15'} | ${undefined} 323 + ${'_'} | ${undefined} 324 + `('should return $result when $input is passed', ({ input, result }) => { 325 + expectToParse(node, input, result); 326 + }); 327 + }); 328 + 329 + describe('alternate with plus group and required matcher after required matcher', () => { 330 + const node = match('node')`${/1/} (${/2/}+ ${/3/} | ${/4/})`; 331 + it.each` 332 + input | result 333 + ${'123'} | ${['1', '2', '3']} 334 + ${'1223'} | ${['1', '2', '2', '3']} 335 + ${'14'} | ${['1', '4']} 336 + ${'13'} | ${undefined} 337 + ${'12'} | ${undefined} 338 + ${'15'} | ${undefined} 339 + ${'_'} | ${undefined} 340 + `('should return $result when $input is passed', ({ input, result }) => { 341 + expectToParse(node, input, result); 342 + }); 343 + }); 344 + 345 + describe('alternate with optional and required matcher after required matcher', () => { 346 + const node = match('node')`${/1/} (${/2/}? ${/3/} | ${/4/})`; 347 + it.each` 348 + input | result 349 + ${'123'} | ${['1', '2', '3']} 350 + ${'13'} | ${['1', '3']} 351 + ${'14'} | ${['1', '4']} 352 + ${'12'} | ${undefined} 353 + ${'15'} | ${undefined} 354 + ${'_'} | ${undefined} 355 + `('should return $result when $input is passed', ({ input, result }) => { 356 + expectToParse(node, input, result); 357 + }); 358 + }); 359 + 360 + describe('non-capturing group', () => { 361 + const node = match('node')`${/1/} (?: ${/2/}+)`; 362 + it.each` 363 + input | result | lastIndex 364 + ${'12'} | ${['1']} | ${2} 365 + ${'122'} | ${['1']} | ${3} 366 + ${'13'} | ${undefined} | ${0} 367 + ${'1'} | ${undefined} | ${0} 368 + ${'_'} | ${undefined} | ${0} 369 + `( 370 + 'should return $result when $input is passed', 371 + ({ input, result, lastIndex }) => { 372 + expectToParse(node, input, result, lastIndex); 373 + } 374 + ); 375 + }); 376 + 377 + describe('non-capturing shorthand', () => { 378 + const node = match('node')`${/1/} :${/2/}+`; 379 + it.each` 380 + input | result | lastIndex 381 + ${'12'} | ${['1']} | ${2} 382 + ${'122'} | ${['1']} | ${3} 383 + ${'13'} | ${undefined} | ${0} 384 + ${'1'} | ${undefined} | ${0} 385 + ${'_'} | ${undefined} | ${0} 386 + `( 387 + 'should return $result when $input is passed', 388 + ({ input, result, lastIndex }) => { 389 + expectToParse(node, input, result, lastIndex); 390 + } 391 + ); 392 + }); 393 + 394 + describe('non-capturing group with plus matcher, then required matcher', () => { 395 + const node = match('node')`(?: ${/1/}+) ${/2/}`; 396 + it.each` 397 + input | result | lastIndex 398 + ${'12'} | ${['2']} | ${2} 399 + ${'112'} | ${['2']} | ${3} 400 + ${'1'} | ${undefined} | ${0} 401 + ${'13'} | ${undefined} | ${0} 402 + ${'2'} | ${undefined} | ${0} 403 + ${'_'} | ${undefined} | ${0} 404 + `( 405 + 'should return $result when $input is passed', 406 + ({ input, result, lastIndex }) => { 407 + expectToParse(node, input, result, lastIndex); 408 + } 409 + ); 410 + }); 411 + 412 + describe('non-capturing group with star group and required matcher, then required matcher', () => { 413 + const node = match('node')`(?: ${/1/}* ${/2/}) ${/3/}`; 414 + it.each` 415 + input | result | lastIndex 416 + ${'123'} | ${['3']} | ${3} 417 + ${'1123'} | ${['3']} | ${4} 418 + ${'23'} | ${['3']} | ${2} 419 + ${'13'} | ${undefined} | ${0} 420 + ${'2'} | ${undefined} | ${0} 421 + ${'_'} | ${undefined} | ${0} 422 + `( 423 + 'should return $result when $input is passed', 424 + ({ input, result, lastIndex }) => { 425 + expectToParse(node, input, result, lastIndex); 426 + } 427 + ); 428 + }); 429 + 430 + describe('non-capturing group with plus group and required matcher, then required matcher', () => { 431 + const node = match('node')`(?: ${/1/}+ ${/2/}) ${/3/}`; 432 + it.each` 433 + input | result | lastIndex 434 + ${'123'} | ${['3']} | ${3} 435 + ${'1123'} | ${['3']} | ${4} 436 + ${'23'} | ${undefined} | ${0} 437 + ${'13'} | ${undefined} | ${0} 438 + ${'2'} | ${undefined} | ${0} 439 + ${'_'} | ${undefined} | ${0} 440 + `( 441 + 'should return $result when $input is passed', 442 + ({ input, result, lastIndex }) => { 443 + expectToParse(node, input, result, lastIndex); 444 + } 445 + ); 446 + }); 447 + 448 + describe('non-capturing group with optional and required matcher, then required matcher', () => { 449 + const node = match('node')`(?: ${/1/}? ${/2/}) ${/3/}`; 450 + it.each` 451 + input | result | lastIndex 452 + ${'123'} | ${['3']} | ${3} 453 + ${'23'} | ${['3']} | ${2} 454 + ${'13'} | ${undefined} | ${0} 455 + ${'2'} | ${undefined} | ${0} 456 + ${'_'} | ${undefined} | ${0} 457 + `( 458 + 'should return $result when $input is passed', 459 + ({ input, result, lastIndex }) => { 460 + expectToParse(node, input, result, lastIndex); 461 + } 462 + ); 463 + }); 464 + 465 + describe('positive lookahead group', () => { 466 + const node = match('node')`(?= ${/1/}) ${/\d/}`; 467 + it.each` 468 + input | result | lastIndex 469 + ${'1'} | ${['1']} | ${1} 470 + ${'13'} | ${['1']} | ${1} 471 + ${'2'} | ${undefined} | ${0} 472 + ${'_'} | ${undefined} | ${0} 473 + `( 474 + 'should return $result when $input is passed', 475 + ({ input, result, lastIndex }) => { 476 + expectToParse(node, input, result, lastIndex); 477 + } 478 + ); 479 + }); 480 + 481 + describe('positive lookahead shorthand', () => { 482 + const node = match('node')`=${/1/} ${/\d/}`; 483 + it.each` 484 + input | result | lastIndex 485 + ${'1'} | ${['1']} | ${1} 486 + ${'13'} | ${['1']} | ${1} 487 + ${'2'} | ${undefined} | ${0} 488 + ${'_'} | ${undefined} | ${0} 489 + `( 490 + 'should return $result when $input is passed', 491 + ({ input, result, lastIndex }) => { 492 + expectToParse(node, input, result, lastIndex); 493 + } 494 + ); 495 + }); 496 + 497 + describe('positive lookahead group with plus matcher', () => { 498 + const node = match('node')`(?= ${/1/}+) ${/\d/}`; 499 + it.each` 500 + input | result | lastIndex 501 + ${'1'} | ${['1']} | ${1} 502 + ${'11'} | ${['1']} | ${1} 503 + ${'12'} | ${['1']} | ${1} 504 + ${'22'} | ${undefined} | ${0} 505 + ${'2'} | ${undefined} | ${0} 506 + ${'_'} | ${undefined} | ${0} 507 + `( 508 + 'should return $result when $input is passed', 509 + ({ input, result, lastIndex }) => { 510 + expectToParse(node, input, result, lastIndex); 511 + } 512 + ); 513 + }); 514 + 515 + describe('positive lookahead group with plus group and required matcher', () => { 516 + const node = match('node')`(?= ${/1/}+ ${/2/}) ${/\d/}`; 517 + it.each` 518 + input | result | lastIndex 519 + ${'12'} | ${['1']} | ${1} 520 + ${'112'} | ${['1']} | ${1} 521 + ${'1123'} | ${['1']} | ${1} 522 + ${'2'} | ${undefined} | ${0} 523 + ${'1'} | ${undefined} | ${0} 524 + ${'2'} | ${undefined} | ${0} 525 + ${'_'} | ${undefined} | ${0} 526 + `( 527 + 'should return $result when $input is passed', 528 + ({ input, result, lastIndex }) => { 529 + expectToParse(node, input, result, lastIndex); 530 + } 531 + ); 532 + }); 533 + 534 + describe('negative lookahead group', () => { 535 + const node = match('node')`(?! ${/1/}) ${/\d/}`; 536 + it.each` 537 + input | result | lastIndex 538 + ${'2'} | ${['2']} | ${1} 539 + ${'23'} | ${['2']} | ${1} 540 + ${'1'} | ${undefined} | ${0} 541 + ${'1'} | ${undefined} | ${0} 542 + ${'_'} | ${undefined} | ${0} 543 + `( 544 + 'should return $result when $input is passed', 545 + ({ input, result, lastIndex }) => { 546 + expectToParse(node, input, result, lastIndex); 547 + } 548 + ); 549 + }); 550 + 551 + describe('negative lookahead shorthand', () => { 552 + const node = match('node')`!${/1/} ${/\d/}`; 553 + it.each` 554 + input | result | lastIndex 555 + ${'2'} | ${['2']} | ${1} 556 + ${'23'} | ${['2']} | ${1} 557 + ${'1'} | ${undefined} | ${0} 558 + ${'1'} | ${undefined} | ${0} 559 + ${'_'} | ${undefined} | ${0} 560 + `( 561 + 'should return $result when $input is passed', 562 + ({ input, result, lastIndex }) => { 563 + expectToParse(node, input, result, lastIndex); 564 + } 565 + ); 566 + }); 567 + 568 + describe('longer negative lookahead group', () => { 569 + const node = match('node')`${/1/} (?! ${/2/} ${/3/}) ${/\d/} ${/\d/}`; 570 + it.each` 571 + input | result | lastIndex 572 + ${'145'} | ${['1', '4', '5']} | ${3} 573 + ${'124'} | ${['1', '2', '4']} | ${3} 574 + ${'123'} | ${undefined} | ${0} 575 + ${'2'} | ${undefined} | ${0} 576 + ${'_'} | ${undefined} | ${0} 577 + `( 578 + 'should return $result when $input is passed', 579 + ({ input, result, lastIndex }) => { 580 + expectToParse(node, input, result, lastIndex); 581 + } 582 + ); 583 + }); 584 + 585 + describe('negative lookahead group with plus matcher', () => { 586 + const node = match('node')`(?! ${/1/}+) ${/\d/}`; 587 + it.each` 588 + input | result | lastIndex 589 + ${'2'} | ${['2']} | ${1} 590 + ${'21'} | ${['2']} | ${1} 591 + ${'22'} | ${['2']} | ${1} 592 + ${'11'} | ${undefined} | ${0} 593 + ${'1'} | ${undefined} | ${0} 594 + ${'_'} | ${undefined} | ${0} 595 + `( 596 + 'should return $result when $input is passed', 597 + ({ input, result, lastIndex }) => { 598 + expectToParse(node, input, result, lastIndex); 599 + } 600 + ); 601 + }); 602 + 603 + describe('negative lookahead group with plus group and required matcher', () => { 604 + const node = match('node')`(?! ${/1/}+ ${/2/}) ${/\d/}`; 605 + it.each` 606 + input | result | lastIndex 607 + ${'21'} | ${['2']} | ${1} 608 + ${'211'} | ${['2']} | ${1} 609 + ${'113'} | ${['1']} | ${1} 610 + ${'1'} | ${['1']} | ${1} 611 + ${'112'} | ${undefined} | ${0} 612 + ${'12'} | ${undefined} | ${0} 613 + ${'_'} | ${undefined} | ${0} 614 + `( 615 + 'should return $result when $input is passed', 616 + ({ input, result, lastIndex }) => { 617 + expectToParse(node, input, result, lastIndex); 618 + } 619 + ); 620 + }); 621 + 622 + describe('interpolation parsing', () => { 623 + const node = match('node')` 624 + ${/1/} 625 + ${interpolation((x) => (x > 1 ? x : null))} 626 + ${/3/} 627 + `; 628 + 629 + it('matches interpolations', () => { 630 + const expected = ['1', 2, '3']; 631 + expected.tag = 'node'; 632 + expect(parse(node)`1${2}3`).toEqual(expected); 633 + }); 634 + 635 + it('does not match invalid inputs', () => { 636 + expect(parse(node)`13`).toBe(undefined); 637 + expect(parse(node)`13${2}`).toBe(undefined); 638 + expect(parse(node)`${2}13`).toBe(undefined); 639 + expect(parse(node)`1${1}3`).toBe(undefined); 640 + }); 641 + }); 642 + 643 + describe('string matching', () => { 644 + const node = match('node')` 645 + ${'1'} 646 + ${'2'} 647 + `; 648 + 649 + it('matches strings', () => { 650 + const expected = ['1', '2']; 651 + expected.tag = 'node'; 652 + expect(parse(node)('12')).toEqual(expected); 653 + expect(parse(node)('13')).toBe(undefined); 654 + }); 655 + });
+35 -78
src/parser.js
··· 1 + const syntaxError = (char) => { 2 + throw new SyntaxError('Unexpected token "' + char + '"'); 3 + }; 4 + 1 5 export const parse = (quasis, expressions) => { 2 6 let quasiIndex = 0; 3 7 let stackIndex = 0; 4 8 5 9 const sequenceStack = []; 6 - const rootSequence = { 7 - type: 'sequence', 8 - sequence: [], 9 - alternation: null, 10 - }; 10 + const rootSequence = []; 11 11 12 12 let currentGroup = null; 13 13 let lastMatch; 14 14 let currentSequence = rootSequence; 15 + let capture; 15 16 16 - while (stackIndex < quasis.length + expressions.length) { 17 + for ( 18 + let quasiIndex = 0, stackIndex = 0; 19 + stackIndex < quasis.length + expressions.length; 20 + stackIndex++ 21 + ) { 17 22 if (stackIndex % 2 !== 0) { 18 23 const expression = expressions[stackIndex++ >> 1]; 19 - 20 - currentSequence.sequence.push({ 21 - type: 'expression', 22 - expression, 23 - quantifier: null, 24 - }); 24 + currentSequence.push({ expression, capture }); 25 + capture = undefined; 25 26 } 26 27 27 28 const quasi = quasis[stackIndex >> 1]; 28 - while (quasiIndex < quasi.length) { 29 + for (quasiIndex = 0; quasiIndex < quasi.length; ) { 29 30 const char = quasi[quasiIndex++]; 30 - 31 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) { 32 + } else if (char === '|' && currentSequence.length) { 33 + currentSequence = currentSequence.alternation = []; 34 + } else if (char === ')' && currentSequence.length) { 42 35 currentGroup = null; 43 36 currentSequence = sequenceStack.pop(); 44 - if (currentSequence) continue; 37 + if (!currentSequence) syntaxError(char); 45 38 } 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 39 sequenceStack.push(currentSequence); 59 - currentSequence.sequence.push(currentGroup); 40 + currentSequence.push((currentGroup = { sequence: [], capture })); 60 41 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; 42 + capture = undefined; 43 + } else if (char === ':' || char === '=' || char === '!') { 44 + capture = char; 45 + const nextChar = quasi[quasiIndex]; 46 + if (quasi[quasiIndex] && quasi[quasiIndex] !== '(') syntaxError(char); 47 + } else if (char === '?' && !currentSequence.length && currentGroup) { 48 + capture = quasi[quasiIndex++]; 49 + if (capture === ':' || capture === '=' || capture === '!') { 50 + currentGroup.capture = capture; 51 + capture = undefined; 52 + } else { 53 + syntaxError(char); 83 54 } 84 55 } else if ( 85 56 (char === '?' || char === '+' || char === '*') && 86 - (lastMatch = 87 - currentSequence.sequence[currentSequence.sequence.length - 1]) 57 + (lastMatch = currentSequence[currentSequence.length - 1]) 88 58 ) { 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; 59 + lastMatch.quantifier = char; 60 + } else { 61 + syntaxError(char); 100 62 } 101 - 102 - throw new SyntaxError('Unexpected token ' + char); 103 63 } 104 - 105 - stackIndex++; 106 - quasiIndex = 0; 107 64 } 108 65 109 66 return rootSequence;
+86 -118
src/parser.test.js
··· 2 2 3 3 const parseTag = (quasis, ...expressions) => parse(quasis, expressions); 4 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 5 it('supports parsing expressions with quantifiers', () => { 20 6 let ast; 21 7 22 8 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 - }); 9 + expect(ast).toHaveProperty('0.quantifier', '?'); 29 10 30 11 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 - }); 12 + expect(ast).toHaveProperty('0.quantifier', '+'); 37 13 38 14 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 - }); 15 + expect(ast).toHaveProperty('0.quantifier', '*'); 45 16 }); 46 17 47 18 it('supports top-level alternations', () => { 48 19 let ast; 49 20 50 21 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); 22 + expect(ast).toHaveProperty('length', 1); 23 + expect(ast).toHaveProperty('0.expression', 1); 24 + expect(ast).toHaveProperty('alternation.0.expression', 2); 56 25 57 26 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 - ); 27 + expect(ast).toHaveProperty('0.quantifier', '?'); 63 28 }); 64 29 65 30 it('supports groups with quantifiers', () => { 66 31 let ast; 67 32 68 33 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); 34 + expect(ast).toHaveProperty('length', 1); 35 + expect(ast).toHaveProperty('0.sequence.length', 2); 36 + expect(ast).toHaveProperty('0.sequence.0.expression', 1); 37 + expect(ast).toHaveProperty('0.sequence.1.expression', 2); 74 38 75 39 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 - ); 40 + expect(ast).toHaveProperty('length', 1); 41 + expect(ast).toHaveProperty('0.quantifier', '?'); 42 + expect(ast).toHaveProperty('0.sequence.0.quantifier', undefined); 84 43 }); 85 44 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 - }); 45 + describe('non-capturing syntax', () => { 46 + it('supports regex-like syntax', () => { 47 + const ast = parseTag`(?: ${1})`; 48 + expect(ast).toHaveProperty('length', 1); 49 + expect(ast).toHaveProperty('0.capture', ':'); 50 + expect(ast).toHaveProperty('0.sequence.length', 1); 51 + }); 52 + 53 + it('supports shorthand', () => { 54 + let ast = parseTag`:${1}`; 55 + expect(ast).toHaveProperty('length', 1); 56 + expect(ast).toHaveProperty('0.capture', ':'); 57 + expect(ast).toHaveProperty('0.expression', 1); 58 + ast = parseTag`:(${1})`; 59 + expect(ast).toHaveProperty('length', 1); 60 + expect(ast).toHaveProperty('0.capture', ':'); 61 + expect(ast).toHaveProperty('0.sequence.length', 1); 62 + }); 94 63 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); 64 + it('fails on invalid usage', () => { 65 + expect(() => parseTag`${1} : ${2}`).toThrow(); 66 + expect(() => parseTag`${1} :|${2}`).toThrow(); 67 + }); 102 68 }); 103 69 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); 70 + describe('positive lookaheads syntax', () => { 71 + it('supports regex-like syntax', () => { 72 + const ast = parseTag`(?= ${1})`; 73 + expect(ast).toHaveProperty('length', 1); 74 + expect(ast).toHaveProperty('0.capture', '='); 75 + expect(ast).toHaveProperty('0.sequence.length', 1); 76 + }); 77 + 78 + it('supports shorthand', () => { 79 + let ast = parseTag`=${1}`; 80 + expect(ast).toHaveProperty('length', 1); 81 + expect(ast).toHaveProperty('0.capture', '='); 82 + expect(ast).toHaveProperty('0.expression', 1); 83 + ast = parseTag`=(${1})`; 84 + expect(ast).toHaveProperty('length', 1); 85 + expect(ast).toHaveProperty('0.capture', '='); 86 + expect(ast).toHaveProperty('0.sequence.length', 1); 87 + }); 111 88 }); 112 89 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(); 90 + describe('negative lookaheads syntax', () => { 91 + it('supports regex-like syntax', () => { 92 + const ast = parseTag`(?! ${1})`; 93 + expect(ast).toHaveProperty('length', 1); 94 + expect(ast).toHaveProperty('0.capture', '!'); 95 + expect(ast).toHaveProperty('0.sequence.length', 1); 96 + }); 97 + 98 + it('supports shorthand', () => { 99 + let ast = parseTag`!${1}`; 100 + expect(ast).toHaveProperty('length', 1); 101 + expect(ast).toHaveProperty('0.capture', '!'); 102 + expect(ast).toHaveProperty('0.expression', 1); 103 + ast = parseTag`!(${1})`; 104 + expect(ast).toHaveProperty('length', 1); 105 + expect(ast).toHaveProperty('0.capture', '!'); 106 + expect(ast).toHaveProperty('0.sequence.length', 1); 107 + }); 117 108 }); 118 109 119 110 it('supports groups with alternates', () => { 120 111 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", 112 + Array [ 113 + Object { 114 + "capture": undefined, 115 + "sequence": Array [ 116 + Object { 117 + "capture": undefined, 118 + "expression": 1, 148 119 }, 149 - "type": "group", 150 - }, 151 - Object { 152 - "expression": 3, 153 - "quantifier": null, 154 - "type": "expression", 155 - }, 156 - ], 157 - "type": "sequence", 158 - } 120 + ], 121 + }, 122 + Object { 123 + "capture": undefined, 124 + "expression": 3, 125 + }, 126 + ] 159 127 `); 160 128 });
+1463 -1868
yarn.lock
··· 2 2 # yarn lockfile v1 3 3 4 4 5 + "@ampproject/remapping@0.2.0": 6 + version "0.2.0" 7 + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-0.2.0.tgz#07290a5c0f5eac8a4c33d38aa0d15a3416db432e" 8 + integrity sha512-a4EztS9/GOVQjX5Ol+Iz33TFhaXvYBF7aB6D8+Qz0/SCIxOm3UNRhGZiwcCuJ8/Ifc6NCogp3S48kc5hFxRpUw== 9 + dependencies: 10 + "@jridgewell/resolve-uri" "1.0.0" 11 + sourcemap-codec "1.4.8" 12 + 13 + "@ampproject/rollup-plugin-closure-compiler@^0.27.0": 14 + version "0.27.0" 15 + resolved "https://registry.yarnpkg.com/@ampproject/rollup-plugin-closure-compiler/-/rollup-plugin-closure-compiler-0.27.0.tgz#fd98e7257946242cc6f3eaf8ae18d4a67a99ed40" 16 + integrity sha512-stpAOn2ZZEJuAV39HFw9cnKJYNhEeHtcsoa83orpLDhSxsxSbVEKwHaWlFBaQYpQRSOdapC4eJhJnCzocZxnqg== 17 + dependencies: 18 + "@ampproject/remapping" "0.2.0" 19 + acorn "7.3.1" 20 + acorn-walk "7.1.1" 21 + estree-walker "2.0.1" 22 + google-closure-compiler "20210808.0.0" 23 + magic-string "0.25.7" 24 + uuid "8.1.0" 25 + 5 26 "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": 6 27 version "7.8.3" 7 28 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" ··· 9 30 dependencies: 10 31 "@babel/highlight" "^7.8.3" 11 32 12 - "@babel/core@7.9.6", "@babel/core@^7.1.0", "@babel/core@^7.7.5": 33 + "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": 34 + version "7.14.5" 35 + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" 36 + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== 37 + dependencies: 38 + "@babel/highlight" "^7.14.5" 39 + 40 + "@babel/compat-data@^7.15.0": 41 + version "7.15.0" 42 + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" 43 + integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== 44 + 45 + "@babel/core@7.15.0", "@babel/core@^7.7.2": 46 + version "7.15.0" 47 + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.0.tgz#749e57c68778b73ad8082775561f67f5196aafa8" 48 + integrity sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw== 49 + dependencies: 50 + "@babel/code-frame" "^7.14.5" 51 + "@babel/generator" "^7.15.0" 52 + "@babel/helper-compilation-targets" "^7.15.0" 53 + "@babel/helper-module-transforms" "^7.15.0" 54 + "@babel/helpers" "^7.14.8" 55 + "@babel/parser" "^7.15.0" 56 + "@babel/template" "^7.14.5" 57 + "@babel/traverse" "^7.15.0" 58 + "@babel/types" "^7.15.0" 59 + convert-source-map "^1.7.0" 60 + debug "^4.1.0" 61 + gensync "^1.0.0-beta.2" 62 + json5 "^2.1.2" 63 + semver "^6.3.0" 64 + source-map "^0.5.0" 65 + 66 + "@babel/core@^7.1.0", "@babel/core@^7.7.5": 13 67 version "7.9.6" 14 68 resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" 15 69 integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== ··· 31 85 semver "^5.4.1" 32 86 source-map "^0.5.0" 33 87 88 + "@babel/generator@^7.15.0", "@babel/generator@^7.7.2": 89 + version "7.15.0" 90 + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" 91 + integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== 92 + dependencies: 93 + "@babel/types" "^7.15.0" 94 + jsesc "^2.5.1" 95 + source-map "^0.5.0" 96 + 34 97 "@babel/generator@^7.9.6": 35 98 version "7.9.6" 36 99 resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" ··· 41 104 lodash "^4.17.13" 42 105 source-map "^0.5.0" 43 106 107 + "@babel/helper-compilation-targets@^7.15.0": 108 + version "7.15.0" 109 + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" 110 + integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== 111 + dependencies: 112 + "@babel/compat-data" "^7.15.0" 113 + "@babel/helper-validator-option" "^7.14.5" 114 + browserslist "^4.16.6" 115 + semver "^6.3.0" 116 + 117 + "@babel/helper-function-name@^7.14.5": 118 + version "7.14.5" 119 + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" 120 + integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== 121 + dependencies: 122 + "@babel/helper-get-function-arity" "^7.14.5" 123 + "@babel/template" "^7.14.5" 124 + "@babel/types" "^7.14.5" 125 + 44 126 "@babel/helper-function-name@^7.9.5": 45 127 version "7.9.5" 46 128 resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" ··· 50 132 "@babel/template" "^7.8.3" 51 133 "@babel/types" "^7.9.5" 52 134 135 + "@babel/helper-get-function-arity@^7.14.5": 136 + version "7.14.5" 137 + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" 138 + integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== 139 + dependencies: 140 + "@babel/types" "^7.14.5" 141 + 53 142 "@babel/helper-get-function-arity@^7.8.3": 54 143 version "7.8.3" 55 144 resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" 56 145 integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== 57 146 dependencies: 58 147 "@babel/types" "^7.8.3" 148 + 149 + "@babel/helper-hoist-variables@^7.14.5": 150 + version "7.14.5" 151 + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" 152 + integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== 153 + dependencies: 154 + "@babel/types" "^7.14.5" 155 + 156 + "@babel/helper-member-expression-to-functions@^7.15.0": 157 + version "7.15.0" 158 + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" 159 + integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== 160 + dependencies: 161 + "@babel/types" "^7.15.0" 59 162 60 163 "@babel/helper-member-expression-to-functions@^7.8.3": 61 164 version "7.8.3" ··· 64 167 dependencies: 65 168 "@babel/types" "^7.8.3" 66 169 67 - "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": 170 + "@babel/helper-module-imports@^7.14.5": 171 + version "7.14.5" 172 + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" 173 + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== 174 + dependencies: 175 + "@babel/types" "^7.14.5" 176 + 177 + "@babel/helper-module-imports@^7.8.3": 68 178 version "7.8.3" 69 179 resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" 70 180 integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== 71 181 dependencies: 72 182 "@babel/types" "^7.8.3" 73 183 184 + "@babel/helper-module-transforms@^7.15.0": 185 + version "7.15.0" 186 + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" 187 + integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== 188 + dependencies: 189 + "@babel/helper-module-imports" "^7.14.5" 190 + "@babel/helper-replace-supers" "^7.15.0" 191 + "@babel/helper-simple-access" "^7.14.8" 192 + "@babel/helper-split-export-declaration" "^7.14.5" 193 + "@babel/helper-validator-identifier" "^7.14.9" 194 + "@babel/template" "^7.14.5" 195 + "@babel/traverse" "^7.15.0" 196 + "@babel/types" "^7.15.0" 197 + 74 198 "@babel/helper-module-transforms@^7.9.0": 75 199 version "7.9.0" 76 200 resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" ··· 84 208 "@babel/types" "^7.9.0" 85 209 lodash "^4.17.13" 86 210 211 + "@babel/helper-optimise-call-expression@^7.14.5": 212 + version "7.14.5" 213 + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" 214 + integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== 215 + dependencies: 216 + "@babel/types" "^7.14.5" 217 + 87 218 "@babel/helper-optimise-call-expression@^7.8.3": 88 219 version "7.8.3" 89 220 resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" ··· 96 227 resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" 97 228 integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== 98 229 230 + "@babel/helper-plugin-utils@^7.10.4": 231 + version "7.10.4" 232 + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" 233 + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== 234 + 235 + "@babel/helper-plugin-utils@^7.14.5": 236 + version "7.14.5" 237 + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" 238 + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== 239 + 240 + "@babel/helper-replace-supers@^7.15.0": 241 + version "7.15.0" 242 + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" 243 + integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== 244 + dependencies: 245 + "@babel/helper-member-expression-to-functions" "^7.15.0" 246 + "@babel/helper-optimise-call-expression" "^7.14.5" 247 + "@babel/traverse" "^7.15.0" 248 + "@babel/types" "^7.15.0" 249 + 99 250 "@babel/helper-replace-supers@^7.8.6": 100 251 version "7.9.6" 101 252 resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" ··· 106 257 "@babel/traverse" "^7.9.6" 107 258 "@babel/types" "^7.9.6" 108 259 260 + "@babel/helper-simple-access@^7.14.8": 261 + version "7.14.8" 262 + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" 263 + integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== 264 + dependencies: 265 + "@babel/types" "^7.14.8" 266 + 109 267 "@babel/helper-simple-access@^7.8.3": 110 268 version "7.8.3" 111 269 resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" ··· 114 272 "@babel/template" "^7.8.3" 115 273 "@babel/types" "^7.8.3" 116 274 275 + "@babel/helper-split-export-declaration@^7.14.5": 276 + version "7.14.5" 277 + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" 278 + integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== 279 + dependencies: 280 + "@babel/types" "^7.14.5" 281 + 117 282 "@babel/helper-split-export-declaration@^7.8.3": 118 283 version "7.8.3" 119 284 resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" ··· 121 286 dependencies: 122 287 "@babel/types" "^7.8.3" 123 288 289 + "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": 290 + version "7.14.9" 291 + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" 292 + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== 293 + 124 294 "@babel/helper-validator-identifier@^7.9.5": 125 295 version "7.9.5" 126 296 resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" 127 297 integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== 128 298 299 + "@babel/helper-validator-option@^7.14.5": 300 + version "7.14.5" 301 + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" 302 + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== 303 + 304 + "@babel/helpers@^7.14.8": 305 + version "7.15.3" 306 + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.3.tgz#c96838b752b95dcd525b4e741ed40bb1dc2a1357" 307 + integrity sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g== 308 + dependencies: 309 + "@babel/template" "^7.14.5" 310 + "@babel/traverse" "^7.15.0" 311 + "@babel/types" "^7.15.0" 312 + 129 313 "@babel/helpers@^7.9.6": 130 314 version "7.9.6" 131 315 resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" ··· 135 319 "@babel/traverse" "^7.9.6" 136 320 "@babel/types" "^7.9.6" 137 321 322 + "@babel/highlight@^7.14.5": 323 + version "7.14.5" 324 + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 325 + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 326 + dependencies: 327 + "@babel/helper-validator-identifier" "^7.14.5" 328 + chalk "^2.0.0" 329 + js-tokens "^4.0.0" 330 + 138 331 "@babel/highlight@^7.8.3": 139 332 version "7.8.3" 140 333 resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" ··· 148 341 version "7.9.6" 149 342 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" 150 343 integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== 344 + 345 + "@babel/parser@^7.14.5", "@babel/parser@^7.15.0", "@babel/parser@^7.7.2": 346 + version "7.15.3" 347 + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.3.tgz#3416d9bea748052cfcb63dbcc27368105b1ed862" 348 + integrity sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA== 151 349 152 350 "@babel/plugin-syntax-async-generators@^7.8.4": 153 351 version "7.8.4" ··· 169 367 integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== 170 368 dependencies: 171 369 "@babel/helper-plugin-utils" "^7.8.3" 370 + 371 + "@babel/plugin-syntax-import-meta@^7.8.3": 372 + version "7.10.4" 373 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" 374 + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== 375 + dependencies: 376 + "@babel/helper-plugin-utils" "^7.10.4" 172 377 173 378 "@babel/plugin-syntax-json-strings@^7.8.3": 174 379 version "7.8.3" ··· 219 424 dependencies: 220 425 "@babel/helper-plugin-utils" "^7.8.0" 221 426 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== 427 + "@babel/plugin-syntax-top-level-await@^7.8.3": 428 + version "7.14.5" 429 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" 430 + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== 226 431 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" 432 + "@babel/helper-plugin-utils" "^7.14.5" 433 + 434 + "@babel/plugin-syntax-typescript@^7.7.2": 435 + version "7.14.5" 436 + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" 437 + integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== 438 + dependencies: 439 + "@babel/helper-plugin-utils" "^7.14.5" 440 + 441 + "@babel/plugin-transform-modules-commonjs@^7.15.0": 442 + version "7.15.0" 443 + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.0.tgz#3305896e5835f953b5cdb363acd9e8c2219a5281" 444 + integrity sha512-3H/R9s8cXcOGE8kgMlmjYYC9nqr5ELiPkJn4q0mypBrjhYQoc+5/Maq69vV4xRPWnkzZuwJPf5rArxpB/35Cig== 445 + dependencies: 446 + "@babel/helper-module-transforms" "^7.15.0" 447 + "@babel/helper-plugin-utils" "^7.14.5" 448 + "@babel/helper-simple-access" "^7.14.8" 230 449 babel-plugin-dynamic-import-node "^2.3.3" 231 450 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== 451 + "@babel/plugin-transform-template-literals@^7.14.5": 452 + version "7.14.5" 453 + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" 454 + integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== 455 + dependencies: 456 + "@babel/helper-plugin-utils" "^7.14.5" 457 + 458 + "@babel/template@^7.14.5": 459 + version "7.14.5" 460 + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" 461 + integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== 236 462 dependencies: 237 - "@babel/helper-plugin-utils" "^7.8.3" 463 + "@babel/code-frame" "^7.14.5" 464 + "@babel/parser" "^7.14.5" 465 + "@babel/types" "^7.14.5" 238 466 239 467 "@babel/template@^7.3.3", "@babel/template@^7.8.3", "@babel/template@^7.8.6": 240 468 version "7.8.6" ··· 260 488 globals "^11.1.0" 261 489 lodash "^4.17.13" 262 490 491 + "@babel/traverse@^7.15.0", "@babel/traverse@^7.7.2": 492 + version "7.15.0" 493 + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" 494 + integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== 495 + dependencies: 496 + "@babel/code-frame" "^7.14.5" 497 + "@babel/generator" "^7.15.0" 498 + "@babel/helper-function-name" "^7.14.5" 499 + "@babel/helper-hoist-variables" "^7.14.5" 500 + "@babel/helper-split-export-declaration" "^7.14.5" 501 + "@babel/parser" "^7.15.0" 502 + "@babel/types" "^7.15.0" 503 + debug "^4.1.0" 504 + globals "^11.1.0" 505 + 263 506 "@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 507 version "7.9.6" 265 508 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" ··· 269 512 lodash "^4.17.13" 270 513 to-fast-properties "^2.0.0" 271 514 515 + "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.0": 516 + version "7.15.0" 517 + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" 518 + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== 519 + dependencies: 520 + "@babel/helper-validator-identifier" "^7.14.9" 521 + to-fast-properties "^2.0.0" 522 + 272 523 "@bcoe/v8-coverage@^0.2.3": 273 524 version "0.2.3" 274 525 resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 275 526 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 527 285 528 "@istanbuljs/load-nyc-config@^1.0.0": 286 529 version "1.0.0" ··· 297 540 resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" 298 541 integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== 299 542 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== 543 + "@jest/console@^27.1.0": 544 + version "27.1.0" 545 + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.1.0.tgz#de13b603cb1d389b50c0dc6296e86e112381e43c" 546 + integrity sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ== 304 547 dependencies: 305 - "@jest/types" "^26.0.1" 548 + "@jest/types" "^27.1.0" 549 + "@types/node" "*" 306 550 chalk "^4.0.0" 307 - jest-message-util "^26.0.1" 308 - jest-util "^26.0.1" 551 + jest-message-util "^27.1.0" 552 + jest-util "^27.1.0" 309 553 slash "^3.0.0" 310 554 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== 555 + "@jest/core@^27.1.0": 556 + version "27.1.0" 557 + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.1.0.tgz#622220f18032f5869e579cecbe744527238648bf" 558 + integrity sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA== 315 559 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" 560 + "@jest/console" "^27.1.0" 561 + "@jest/reporters" "^27.1.0" 562 + "@jest/test-result" "^27.1.0" 563 + "@jest/transform" "^27.1.0" 564 + "@jest/types" "^27.1.0" 565 + "@types/node" "*" 321 566 ansi-escapes "^4.2.1" 322 567 chalk "^4.0.0" 568 + emittery "^0.8.1" 323 569 exit "^0.1.2" 324 570 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" 571 + jest-changed-files "^27.1.0" 572 + jest-config "^27.1.0" 573 + jest-haste-map "^27.1.0" 574 + jest-message-util "^27.1.0" 575 + jest-regex-util "^27.0.6" 576 + jest-resolve "^27.1.0" 577 + jest-resolve-dependencies "^27.1.0" 578 + jest-runner "^27.1.0" 579 + jest-runtime "^27.1.0" 580 + jest-snapshot "^27.1.0" 581 + jest-util "^27.1.0" 582 + jest-validate "^27.1.0" 583 + jest-watcher "^27.1.0" 584 + micromatch "^4.0.4" 339 585 p-each-series "^2.1.0" 340 586 rimraf "^3.0.0" 341 587 slash "^3.0.0" 342 588 strip-ansi "^6.0.0" 343 589 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== 590 + "@jest/environment@^27.1.0": 591 + version "27.1.0" 592 + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.1.0.tgz#c7224a67004759ec203d8fa44e8bc0db93f66c44" 593 + integrity sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ== 348 594 dependencies: 349 - "@jest/fake-timers" "^26.0.1" 350 - "@jest/types" "^26.0.1" 351 - jest-mock "^26.0.1" 595 + "@jest/fake-timers" "^27.1.0" 596 + "@jest/types" "^27.1.0" 597 + "@types/node" "*" 598 + jest-mock "^27.1.0" 352 599 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== 600 + "@jest/fake-timers@^27.1.0": 601 + version "27.1.0" 602 + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.1.0.tgz#c0b343d8a16af17eab2cb6862e319947c0ea2abe" 603 + integrity sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA== 357 604 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" 605 + "@jest/types" "^27.1.0" 606 + "@sinonjs/fake-timers" "^7.0.2" 607 + "@types/node" "*" 608 + jest-message-util "^27.1.0" 609 + jest-mock "^27.1.0" 610 + jest-util "^27.1.0" 363 611 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== 612 + "@jest/globals@^27.1.0": 613 + version "27.1.0" 614 + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.1.0.tgz#e093a49c718dd678a782c197757775534c88d3f2" 615 + integrity sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g== 368 616 dependencies: 369 - "@jest/environment" "^26.0.1" 370 - "@jest/types" "^26.0.1" 371 - expect "^26.0.1" 617 + "@jest/environment" "^27.1.0" 618 + "@jest/types" "^27.1.0" 619 + expect "^27.1.0" 372 620 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== 621 + "@jest/reporters@^27.1.0": 622 + version "27.1.0" 623 + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.1.0.tgz#02ed1e6601552c2f6447378533f77aad002781d4" 624 + integrity sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw== 377 625 dependencies: 378 626 "@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" 627 + "@jest/console" "^27.1.0" 628 + "@jest/test-result" "^27.1.0" 629 + "@jest/transform" "^27.1.0" 630 + "@jest/types" "^27.1.0" 383 631 chalk "^4.0.0" 384 632 collect-v8-coverage "^1.0.0" 385 633 exit "^0.1.2" 386 634 glob "^7.1.2" 387 635 graceful-fs "^4.2.4" 388 636 istanbul-lib-coverage "^3.0.0" 389 - istanbul-lib-instrument "^4.0.0" 637 + istanbul-lib-instrument "^4.0.3" 390 638 istanbul-lib-report "^3.0.0" 391 639 istanbul-lib-source-maps "^4.0.0" 392 640 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" 641 + jest-haste-map "^27.1.0" 642 + jest-resolve "^27.1.0" 643 + jest-util "^27.1.0" 644 + jest-worker "^27.1.0" 397 645 slash "^3.0.0" 398 646 source-map "^0.6.0" 399 647 string-length "^4.0.1" 400 648 terminal-link "^2.0.0" 401 - v8-to-istanbul "^4.1.3" 402 - optionalDependencies: 403 - node-notifier "^7.0.0" 649 + v8-to-istanbul "^8.0.0" 404 650 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== 651 + "@jest/source-map@^27.0.6": 652 + version "27.0.6" 653 + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" 654 + integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== 409 655 dependencies: 410 656 callsites "^3.0.0" 411 657 graceful-fs "^4.2.4" 412 658 source-map "^0.6.0" 413 659 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== 660 + "@jest/test-result@^27.1.0": 661 + version "27.1.0" 662 + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.1.0.tgz#9345ae5f97f6a5287af9ebd54716cd84331d42e8" 663 + integrity sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A== 418 664 dependencies: 419 - "@jest/console" "^26.0.1" 420 - "@jest/types" "^26.0.1" 665 + "@jest/console" "^27.1.0" 666 + "@jest/types" "^27.1.0" 421 667 "@types/istanbul-lib-coverage" "^2.0.0" 422 668 collect-v8-coverage "^1.0.0" 423 669 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== 670 + "@jest/test-sequencer@^27.1.0": 671 + version "27.1.0" 672 + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz#04e8b3bd735570d3d48865e74977a14dc99bff2d" 673 + integrity sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A== 428 674 dependencies: 429 - "@jest/test-result" "^26.0.1" 675 + "@jest/test-result" "^27.1.0" 430 676 graceful-fs "^4.2.4" 431 - jest-haste-map "^26.0.1" 432 - jest-runner "^26.0.1" 433 - jest-runtime "^26.0.1" 677 + jest-haste-map "^27.1.0" 678 + jest-runtime "^27.1.0" 434 679 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== 680 + "@jest/transform@^27.1.0": 681 + version "27.1.0" 682 + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.1.0.tgz#962e385517e3d1f62827fa39c305edcc3ca8544b" 683 + integrity sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ== 439 684 dependencies: 440 685 "@babel/core" "^7.1.0" 441 - "@jest/types" "^26.0.1" 686 + "@jest/types" "^27.1.0" 442 687 babel-plugin-istanbul "^6.0.0" 443 688 chalk "^4.0.0" 444 689 convert-source-map "^1.4.0" 445 690 fast-json-stable-stringify "^2.0.0" 446 691 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" 692 + jest-haste-map "^27.1.0" 693 + jest-regex-util "^27.0.6" 694 + jest-util "^27.1.0" 695 + micromatch "^4.0.4" 451 696 pirates "^4.0.1" 452 697 slash "^3.0.0" 453 698 source-map "^0.6.1" 454 699 write-file-atomic "^3.0.0" 455 700 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== 701 + "@jest/types@^27.1.0": 702 + version "27.1.0" 703 + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.1.0.tgz#674a40325eab23c857ebc0689e7e191a3c5b10cc" 704 + integrity sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g== 460 705 dependencies: 461 706 "@types/istanbul-lib-coverage" "^2.0.0" 462 - "@types/istanbul-reports" "^1.1.1" 463 - "@types/yargs" "^15.0.0" 707 + "@types/istanbul-reports" "^3.0.0" 708 + "@types/node" "*" 709 + "@types/yargs" "^16.0.0" 464 710 chalk "^4.0.0" 465 711 712 + "@jridgewell/resolve-uri@1.0.0": 713 + version "1.0.0" 714 + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz#3fdf5798f0b49e90155896f6291df186eac06c83" 715 + integrity sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA== 716 + 466 717 "@rollup/plugin-buble@^0.21.3": 467 718 version "0.21.3" 468 719 resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz#1649a915b1d051a4f430d40e7734a7f67a69b33e" ··· 472 723 "@types/buble" "^0.19.2" 473 724 buble "^0.20.0" 474 725 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== 726 + "@rollup/plugin-commonjs@^20.0.0": 727 + version "20.0.0" 728 + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz#3246872dcbcb18a54aaa6277a8c7d7f1b155b745" 729 + integrity sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg== 479 730 dependencies: 480 - "@rollup/pluginutils" "^3.0.8" 731 + "@rollup/pluginutils" "^3.1.0" 481 732 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" 733 + estree-walker "^2.0.1" 734 + glob "^7.1.6" 735 + is-reference "^1.2.1" 736 + magic-string "^0.25.7" 737 + resolve "^1.17.0" 487 738 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== 739 + "@rollup/plugin-node-resolve@^13.0.4": 740 + version "13.0.4" 741 + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz#b10222f4145a019740acb7738402130d848660c0" 742 + integrity sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w== 492 743 dependencies: 493 - "@rollup/pluginutils" "^3.0.8" 494 - "@types/resolve" "0.0.8" 744 + "@rollup/pluginutils" "^3.1.0" 745 + "@types/resolve" "1.17.1" 495 746 builtin-modules "^3.1.0" 747 + deepmerge "^4.2.2" 496 748 is-module "^1.0.0" 497 - resolve "^1.14.2" 749 + resolve "^1.19.0" 498 750 499 751 "@rollup/pluginutils@^3.0.8": 500 752 version "3.0.10" ··· 505 757 estree-walker "^1.0.1" 506 758 picomatch "^2.2.2" 507 759 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== 760 + "@rollup/pluginutils@^3.1.0": 761 + version "3.1.0" 762 + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" 763 + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== 512 764 dependencies: 513 - any-observable "^0.3.0" 765 + "@types/estree" "0.0.39" 766 + estree-walker "^1.0.1" 767 + picomatch "^2.2.2" 768 + 769 + "@rollup/pluginutils@^4.1.1": 770 + version "4.1.1" 771 + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 772 + integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 773 + dependencies: 774 + estree-walker "^2.0.1" 775 + picomatch "^2.2.2" 514 776 515 777 "@sinonjs/commons@^1.7.0": 516 778 version "1.7.2" ··· 519 781 dependencies: 520 782 type-detect "4.0.8" 521 783 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== 784 + "@sinonjs/fake-timers@^7.0.2": 785 + version "7.1.2" 786 + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" 787 + integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== 526 788 dependencies: 527 789 "@sinonjs/commons" "^1.7.0" 528 790 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== 791 + "@sucrase/jest-plugin@^2.1.1": 792 + version "2.1.1" 793 + resolved "https://registry.yarnpkg.com/@sucrase/jest-plugin/-/jest-plugin-2.1.1.tgz#b1e5192e7057fec159151b6aed96eb5b3c08d5c4" 794 + integrity sha512-1j+exUcbLRgka2lq/i0IVOYcmrMW1wYPtxJY/+RvZkAQG9GD7lygj5OiHWFKWmynltAg9+x1d5NWQQYNdBTkpQ== 795 + dependencies: 796 + sucrase "^3.18.0" 797 + 798 + "@tootallnate/once@1": 799 + version "1.1.2" 800 + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 801 + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 802 + 803 + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": 804 + version "7.1.15" 805 + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" 806 + integrity sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew== 533 807 dependencies: 534 808 "@babel/parser" "^7.1.0" 535 809 "@babel/types" "^7.0.0" ··· 559 833 dependencies: 560 834 "@babel/types" "^7.3.0" 561 835 836 + "@types/babel__traverse@^7.0.4": 837 + version "7.14.2" 838 + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" 839 + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== 840 + dependencies: 841 + "@babel/types" "^7.3.0" 842 + 562 843 "@types/buble@^0.19.2": 563 844 version "0.19.2" 564 845 resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" ··· 570 851 version "1.1.1" 571 852 resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 572 853 integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 854 + 855 + "@types/estree@*": 856 + version "0.0.50" 857 + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" 858 + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== 573 859 574 860 "@types/estree@0.0.39": 575 861 version "0.0.39" ··· 595 881 dependencies: 596 882 "@types/istanbul-lib-coverage" "*" 597 883 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== 884 + "@types/istanbul-reports@^3.0.0": 885 + version "3.0.1" 886 + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 887 + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== 602 888 dependencies: 603 - "@types/istanbul-lib-coverage" "*" 604 889 "@types/istanbul-lib-report" "*" 605 890 606 891 "@types/node@*": ··· 608 893 resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" 609 894 integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== 610 895 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 896 "@types/parse-json@^4.0.0": 617 897 version "4.0.0" 618 898 resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 619 899 integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 620 900 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== 901 + "@types/prettier@^2.1.5": 902 + version "2.3.2" 903 + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" 904 + integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== 625 905 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== 906 + "@types/resolve@1.17.1": 907 + version "1.17.1" 908 + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" 909 + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== 630 910 dependencies: 631 911 "@types/node" "*" 632 912 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== 913 + "@types/stack-utils@^2.0.0": 914 + version "2.0.1" 915 + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" 916 + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== 637 917 638 918 "@types/yargs-parser@*": 639 919 version "15.0.0" 640 920 resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" 641 921 integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== 642 922 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== 923 + "@types/yargs@^16.0.0": 924 + version "16.0.4" 925 + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" 926 + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== 647 927 dependencies: 648 928 "@types/yargs-parser" "*" 649 929 ··· 651 931 version "2.0.3" 652 932 resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" 653 933 integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== 934 + 935 + abab@^2.0.5: 936 + version "2.0.5" 937 + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" 938 + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== 654 939 655 940 acorn-dynamic-import@^4.0.0: 656 941 version "4.0.0" ··· 670 955 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 671 956 integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 672 957 673 - acorn-walk@^7.1.1: 958 + acorn-walk@7.1.1, acorn-walk@^7.1.1: 674 959 version "7.1.1" 675 960 resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" 676 961 integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== 677 962 963 + acorn@7.3.1: 964 + version "7.3.1" 965 + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" 966 + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== 967 + 678 968 acorn@^6.4.1: 679 969 version "6.4.1" 680 970 resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" ··· 684 974 version "7.2.0" 685 975 resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" 686 976 integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== 977 + 978 + acorn@^8.2.4: 979 + version "8.4.1" 980 + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" 981 + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== 982 + 983 + agent-base@6: 984 + version "6.0.2" 985 + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 986 + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 987 + dependencies: 988 + debug "4" 687 989 688 990 aggregate-error@^3.0.0: 689 991 version "3.0.1" ··· 693 995 clean-stack "^2.0.0" 694 996 indent-string "^4.0.0" 695 997 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== 998 + ansi-colors@^4.1.1: 999 + version "4.1.1" 1000 + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 1001 + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 710 1002 711 1003 ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: 712 1004 version "4.3.1" ··· 735 1027 "@types/color-name" "^1.1.1" 736 1028 color-convert "^2.0.1" 737 1029 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== 1030 + ansi-styles@^5.0.0: 1031 + version "5.2.0" 1032 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 1033 + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 742 1034 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" 1035 + any-promise@^1.0.0: 1036 + version "1.3.0" 1037 + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 1038 + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= 750 1039 751 1040 anymatch@^3.0.3: 752 1041 version "3.1.1" ··· 763 1052 dependencies: 764 1053 sprintf-js "~1.0.2" 765 1054 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 1055 astral-regex@^2.0.0: 804 1056 version "2.0.0" 805 1057 resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" ··· 810 1062 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 811 1063 integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 812 1064 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== 1065 + babel-jest@^27.1.0: 1066 + version "27.1.0" 1067 + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.1.0.tgz#e96ca04554fd32274439869e2b6d24de9d91bc4e" 1068 + integrity sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA== 832 1069 dependencies: 833 - "@jest/transform" "^26.0.1" 834 - "@jest/types" "^26.0.1" 835 - "@types/babel__core" "^7.1.7" 1070 + "@jest/transform" "^27.1.0" 1071 + "@jest/types" "^27.1.0" 1072 + "@types/babel__core" "^7.1.14" 836 1073 babel-plugin-istanbul "^6.0.0" 837 - babel-preset-jest "^26.0.0" 1074 + babel-preset-jest "^27.0.6" 838 1075 chalk "^4.0.0" 839 1076 graceful-fs "^4.2.4" 840 1077 slash "^3.0.0" 841 1078 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== 1079 + babel-plugin-closure-elimination@^1.3.2: 1080 + version "1.3.2" 1081 + resolved "https://registry.yarnpkg.com/babel-plugin-closure-elimination/-/babel-plugin-closure-elimination-1.3.2.tgz#2c9a90360bdf888fd3b3694391a745a70ce18c34" 1082 + integrity sha512-GJnezbVp5ejiwh74fXJPznsrrWHR9bTuJV20FhXivbgEtg1WyNG/9KaDyHEpfU7G9iB6Gy+F2UffYLZ7DJh+Jw== 846 1083 847 1084 babel-plugin-dynamic-import-node@^2.3.3: 848 1085 version "2.3.3" ··· 862 1099 istanbul-lib-instrument "^4.0.0" 863 1100 test-exclude "^6.0.0" 864 1101 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== 1102 + babel-plugin-jest-hoist@^27.0.6: 1103 + version "27.0.6" 1104 + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" 1105 + integrity sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw== 869 1106 dependencies: 870 1107 "@babel/template" "^7.3.3" 871 1108 "@babel/types" "^7.3.3" 1109 + "@types/babel__core" "^7.0.0" 872 1110 "@types/babel__traverse" "^7.0.6" 873 1111 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== 1112 + babel-preset-current-node-syntax@^1.0.0: 1113 + version "1.0.1" 1114 + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" 1115 + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== 878 1116 dependencies: 879 1117 "@babel/plugin-syntax-async-generators" "^7.8.4" 880 1118 "@babel/plugin-syntax-bigint" "^7.8.3" 881 1119 "@babel/plugin-syntax-class-properties" "^7.8.3" 1120 + "@babel/plugin-syntax-import-meta" "^7.8.3" 882 1121 "@babel/plugin-syntax-json-strings" "^7.8.3" 883 1122 "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 884 1123 "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" ··· 886 1125 "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 887 1126 "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 888 1127 "@babel/plugin-syntax-optional-chaining" "^7.8.3" 1128 + "@babel/plugin-syntax-top-level-await" "^7.8.3" 889 1129 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== 1130 + babel-preset-jest@^27.0.6: 1131 + version "27.0.6" 1132 + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" 1133 + integrity sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw== 894 1134 dependencies: 895 - babel-plugin-jest-hoist "^26.0.0" 896 - babel-preset-current-node-syntax "^0.1.2" 1135 + babel-plugin-jest-hoist "^27.0.6" 1136 + babel-preset-current-node-syntax "^1.0.0" 897 1137 898 1138 balanced-match@^1.0.0: 899 1139 version "1.0.0" 900 1140 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 901 1141 integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 902 1142 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 1143 brace-expansion@^1.1.7: 924 1144 version "1.1.11" 925 1145 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" ··· 928 1148 balanced-match "^1.0.0" 929 1149 concat-map "0.0.1" 930 1150 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 1151 braces@^3.0.1: 948 1152 version "3.0.2" 949 1153 resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" ··· 955 1159 version "1.0.0" 956 1160 resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 957 1161 integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== 1162 + 1163 + browserslist@^4.16.6: 1164 + version "4.16.8" 1165 + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.8.tgz#cb868b0b554f137ba6e33de0ecff2eda403c4fb0" 1166 + integrity sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ== 1167 + dependencies: 1168 + caniuse-lite "^1.0.30001251" 1169 + colorette "^1.3.0" 1170 + electron-to-chromium "^1.3.811" 1171 + escalade "^3.1.1" 1172 + node-releases "^1.1.75" 958 1173 959 1174 bser@2.1.1: 960 1175 version "2.1.1" ··· 986 1201 resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 987 1202 integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 988 1203 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 1204 callsites@^3.0.0: 1005 1205 version "3.1.0" 1006 1206 resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 1007 1207 integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1008 1208 1009 - camelcase@^5.0.0, camelcase@^5.3.1: 1209 + camelcase@^5.3.1: 1010 1210 version "5.3.1" 1011 1211 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 1012 1212 integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 1013 1213 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== 1214 + camelcase@^6.2.0: 1215 + version "6.2.0" 1216 + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 1217 + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 1018 1218 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" 1219 + caniuse-lite@^1.0.30001251: 1220 + version "1.0.30001252" 1221 + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001252.tgz#cb16e4e3dafe948fc4a9bb3307aea054b912019a" 1222 + integrity sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw== 1025 1223 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: 1224 + chalk@2.x, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: 1032 1225 version "2.4.2" 1033 1226 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1034 1227 integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== ··· 1037 1230 escape-string-regexp "^1.0.5" 1038 1231 supports-color "^5.3.0" 1039 1232 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 1233 chalk@^4.0.0: 1049 1234 version "4.0.0" 1050 1235 resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" ··· 1053 1238 ansi-styles "^4.1.0" 1054 1239 supports-color "^7.1.0" 1055 1240 1241 + chalk@^4.1.0, chalk@^4.1.1: 1242 + version "4.1.2" 1243 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 1244 + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 1245 + dependencies: 1246 + ansi-styles "^4.1.0" 1247 + supports-color "^7.1.0" 1248 + 1056 1249 char-regex@^1.0.2: 1057 1250 version "1.0.2" 1058 1251 resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" ··· 1063 1256 resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 1064 1257 integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 1065 1258 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" 1259 + ci-info@^3.1.1: 1260 + version "3.2.0" 1261 + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" 1262 + integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== 1263 + 1264 + cjs-module-lexer@^1.0.0: 1265 + version "1.2.2" 1266 + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" 1267 + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== 1075 1268 1076 1269 clean-stack@^2.0.0: 1077 1270 version "2.2.0" ··· 1093 1286 slice-ansi "^3.0.0" 1094 1287 string-width "^4.2.0" 1095 1288 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== 1289 + cliui@^7.0.2: 1290 + version "7.0.4" 1291 + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 1292 + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 1100 1293 dependencies: 1101 1294 string-width "^4.2.0" 1102 1295 strip-ansi "^6.0.0" 1103 - wrap-ansi "^6.2.0" 1296 + wrap-ansi "^7.0.0" 1104 1297 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= 1298 + clone-buffer@^1.0.0: 1299 + version "1.0.0" 1300 + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" 1301 + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= 1302 + 1303 + clone-stats@^1.0.0: 1304 + version "1.0.0" 1305 + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" 1306 + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= 1307 + 1308 + clone@^2.1.1: 1309 + version "2.1.2" 1310 + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" 1311 + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= 1312 + 1313 + cloneable-readable@^1.0.0: 1314 + version "1.1.3" 1315 + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" 1316 + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== 1317 + dependencies: 1318 + inherits "^2.0.1" 1319 + process-nextick-args "^2.0.0" 1320 + readable-stream "^2.3.5" 1109 1321 1110 1322 co@^4.6.0: 1111 1323 version "4.6.0" ··· 1116 1328 version "1.0.1" 1117 1329 resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 1118 1330 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 1331 1128 1332 color-convert@^1.9.0: 1129 1333 version "1.9.3" ··· 1149 1353 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1150 1354 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1151 1355 1152 - combined-stream@^1.0.6, combined-stream@~1.0.6: 1356 + colorette@^1.2.2, colorette@^1.3.0: 1357 + version "1.3.0" 1358 + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" 1359 + integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== 1360 + 1361 + combined-stream@^1.0.8: 1153 1362 version "1.0.8" 1154 1363 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1155 1364 integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1156 1365 dependencies: 1157 1366 delayed-stream "~1.0.0" 1158 1367 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== 1368 + commander@^4.0.0: 1369 + version "4.1.1" 1370 + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" 1371 + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== 1372 + 1373 + commander@^7.2.0: 1374 + version "7.2.0" 1375 + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 1376 + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 1163 1377 1164 1378 commondir@^1.0.1: 1165 1379 version "1.0.1" ··· 1171 1385 resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" 1172 1386 integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== 1173 1387 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 1388 concat-map@0.0.1: 1180 1389 version "0.0.1" 1181 1390 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" ··· 1188 1397 dependencies: 1189 1398 safe-buffer "~5.1.1" 1190 1399 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: 1400 + core-util-is@~1.0.0: 1197 1401 version "1.0.2" 1198 1402 resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1199 1403 integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 1200 1404 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== 1405 + cosmiconfig@^7.0.0: 1406 + version "7.0.1" 1407 + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" 1408 + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== 1205 1409 dependencies: 1206 1410 "@types/parse-json" "^4.0.0" 1207 - import-fresh "^3.1.0" 1411 + import-fresh "^3.2.1" 1208 1412 parse-json "^5.0.0" 1209 1413 path-type "^4.0.0" 1210 - yaml "^1.7.2" 1414 + yaml "^1.10.0" 1211 1415 1212 - cross-spawn@^6.0.0, cross-spawn@^6.0.5: 1416 + cross-spawn@^6.0.5: 1213 1417 version "6.0.5" 1214 1418 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 1215 1419 integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== ··· 1220 1424 shebang-command "^1.2.0" 1221 1425 which "^1.2.9" 1222 1426 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== 1427 + cross-spawn@^7.0.3: 1428 + version "7.0.3" 1429 + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1430 + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 1227 1431 dependencies: 1228 1432 path-key "^3.1.0" 1229 1433 shebang-command "^2.0.0" ··· 1239 1443 resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 1240 1444 integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 1241 1445 1242 - cssstyle@^2.2.0: 1446 + cssstyle@^2.3.0: 1243 1447 version "2.3.0" 1244 1448 resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 1245 1449 integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 1246 1450 dependencies: 1247 1451 cssom "~0.3.6" 1248 1452 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 1453 data-urls@^2.0.0: 1257 1454 version "2.0.0" 1258 1455 resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" ··· 1262 1459 whatwg-mimetype "^2.3.0" 1263 1460 whatwg-url "^8.0.0" 1264 1461 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== 1462 + debug@4, debug@^4.3.1: 1463 + version "4.3.2" 1464 + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 1465 + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 1269 1466 dependencies: 1270 - ms "2.0.0" 1467 + ms "2.1.2" 1271 1468 1272 1469 debug@^4.1.0, debug@^4.1.1: 1273 1470 version "4.1.1" ··· 1276 1473 dependencies: 1277 1474 ms "^2.1.1" 1278 1475 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= 1476 + decimal.js@^10.2.1: 1477 + version "10.3.1" 1478 + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" 1479 + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== 1293 1480 1294 1481 dedent@^0.7.0: 1295 1482 version "0.7.0" ··· 1306 1493 resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 1307 1494 integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 1308 1495 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 1496 define-properties@^1.1.2, define-properties@^1.1.3: 1317 1497 version "1.1.3" 1318 1498 resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" ··· 1320 1500 dependencies: 1321 1501 object-keys "^1.0.12" 1322 1502 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 1503 delayed-stream@~1.0.0: 1346 1504 version "1.0.0" 1347 1505 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" ··· 1352 1510 resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1353 1511 integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1354 1512 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== 1513 + diff-sequences@^27.0.6: 1514 + version "27.0.6" 1515 + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" 1516 + integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== 1359 1517 1360 1518 domexception@^2.0.1: 1361 1519 version "2.0.1" ··· 1364 1522 dependencies: 1365 1523 webidl-conversions "^5.0.0" 1366 1524 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" 1525 + electron-to-chromium@^1.3.811: 1526 + version "1.3.822" 1527 + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.822.tgz#7036edc7f669b0aa79e9801dc5f56866c6ddc0b2" 1528 + integrity sha512-k7jG5oYYHxF4jx6PcqwHX3JVME/OjzolqOZiIogi9xtsfsmTjTdie4x88OakYFPEa8euciTgCCzvVNwvmjHb1Q== 1374 1529 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== 1530 + emittery@^0.8.1: 1531 + version "0.8.1" 1532 + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" 1533 + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== 1379 1534 1380 1535 emoji-regex@^8.0.0: 1381 1536 version "8.0.0" 1382 1537 resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1383 1538 integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1384 1539 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== 1540 + enquirer@^2.3.6: 1541 + version "2.3.6" 1542 + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 1543 + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 1396 1544 dependencies: 1397 - ansi-colors "^3.2.1" 1545 + ansi-colors "^4.1.1" 1398 1546 1399 1547 error-ex@^1.3.1: 1400 1548 version "1.3.2" ··· 1429 1577 is-date-object "^1.0.1" 1430 1578 is-symbol "^1.0.2" 1431 1579 1580 + escalade@^3.1.1: 1581 + version "3.1.1" 1582 + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1583 + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1584 + 1432 1585 escape-string-regexp@^1.0.5: 1433 1586 version "1.0.5" 1434 1587 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" ··· 1439 1592 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1440 1593 integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1441 1594 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== 1595 + escodegen@^2.0.0: 1596 + version "2.0.0" 1597 + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" 1598 + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== 1446 1599 dependencies: 1447 1600 esprima "^4.0.1" 1448 - estraverse "^4.2.0" 1601 + estraverse "^5.2.0" 1449 1602 esutils "^2.0.2" 1450 1603 optionator "^0.8.1" 1451 1604 optionalDependencies: ··· 1456 1609 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1457 1610 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1458 1611 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== 1612 + estraverse@^5.2.0: 1613 + version "5.2.0" 1614 + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 1615 + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 1463 1616 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== 1617 + estree-walker@2.0.1, estree-walker@^2.0.1: 1618 + version "2.0.1" 1619 + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" 1620 + integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== 1468 1621 1469 1622 estree-walker@^1.0.1: 1470 1623 version "1.0.1" ··· 1476 1629 resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1477 1630 integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1478 1631 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== 1632 + execa@^5.0.0: 1633 + version "5.1.1" 1634 + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 1635 + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 1501 1636 dependencies: 1502 - cross-spawn "^7.0.0" 1503 - get-stream "^5.0.0" 1504 - human-signals "^1.1.1" 1637 + cross-spawn "^7.0.3" 1638 + get-stream "^6.0.0" 1639 + human-signals "^2.1.0" 1505 1640 is-stream "^2.0.0" 1506 1641 merge-stream "^2.0.0" 1507 - npm-run-path "^4.0.0" 1508 - onetime "^5.1.0" 1509 - signal-exit "^3.0.2" 1642 + npm-run-path "^4.0.1" 1643 + onetime "^5.1.2" 1644 + signal-exit "^3.0.3" 1510 1645 strip-final-newline "^2.0.0" 1511 1646 1512 1647 exit@^0.1.2: ··· 1514 1649 resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1515 1650 integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= 1516 1651 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= 1652 + expect@^27.1.0: 1653 + version "27.1.0" 1654 + resolved "https://registry.yarnpkg.com/expect/-/expect-27.1.0.tgz#380de0abb3a8f2299c4c6c66bbe930483b5dba9b" 1655 + integrity sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug== 1546 1656 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== 1657 + "@jest/types" "^27.1.0" 1658 + ansi-styles "^5.0.0" 1659 + jest-get-type "^27.0.6" 1660 + jest-matcher-utils "^27.1.0" 1661 + jest-message-util "^27.1.0" 1662 + jest-regex-util "^27.0.6" 1590 1663 1591 1664 fast-json-stable-stringify@^2.0.0: 1592 1665 version "2.1.0" ··· 1605 1678 dependencies: 1606 1679 bser "2.1.1" 1607 1680 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 1681 fill-range@^7.0.1: 1626 1682 version "7.0.1" 1627 1683 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" ··· 1637 1693 locate-path "^5.0.0" 1638 1694 path-exists "^4.0.0" 1639 1695 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== 1696 + find-up@^5.0.0: 1697 + version "5.0.0" 1698 + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 1699 + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1644 1700 dependencies: 1645 - semver-regex "^2.0.0" 1701 + locate-path "^6.0.0" 1702 + path-exists "^4.0.0" 1646 1703 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= 1704 + find-versions@^4.0.0: 1705 + version "4.0.0" 1706 + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" 1707 + integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== 1708 + dependencies: 1709 + semver-regex "^3.1.2" 1656 1710 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== 1711 + form-data@^3.0.0: 1712 + version "3.0.1" 1713 + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 1714 + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 1661 1715 dependencies: 1662 1716 asynckit "^0.4.0" 1663 - combined-stream "^1.0.6" 1717 + combined-stream "^1.0.8" 1664 1718 mime-types "^2.1.12" 1665 1719 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 1720 fs.realpath@^1.0.0: 1674 1721 version "1.0.0" 1675 1722 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1676 1723 integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1677 1724 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== 1725 + fsevents@^2.3.2, fsevents@~2.3.2: 1726 + version "2.3.2" 1727 + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1728 + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1682 1729 1683 1730 function-bind@^1.1.1: 1684 1731 version "1.1.1" ··· 1690 1737 resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" 1691 1738 integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== 1692 1739 1693 - get-caller-file@^2.0.1: 1740 + gensync@^1.0.0-beta.2: 1741 + version "1.0.0-beta.2" 1742 + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1743 + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1744 + 1745 + get-caller-file@^2.0.5: 1694 1746 version "2.0.5" 1695 1747 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1696 1748 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== ··· 1700 1752 resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 1701 1753 integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 1702 1754 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" 1755 + get-stream@^6.0.0: 1756 + version "6.0.1" 1757 + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1758 + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1728 1759 1729 - glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: 1760 + glob@7.1.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: 1730 1761 version "7.1.6" 1731 1762 resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1732 1763 integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== ··· 1738 1769 once "^1.3.0" 1739 1770 path-is-absolute "^1.0.0" 1740 1771 1772 + glob@^7.1.6: 1773 + version "7.1.7" 1774 + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 1775 + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 1776 + dependencies: 1777 + fs.realpath "^1.0.0" 1778 + inflight "^1.0.4" 1779 + inherits "2" 1780 + minimatch "^3.0.4" 1781 + once "^1.3.0" 1782 + path-is-absolute "^1.0.0" 1783 + 1741 1784 globals@^11.1.0: 1742 1785 version "11.12.0" 1743 1786 resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1744 1787 integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1745 1788 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== 1789 + google-closure-compiler-java@^20210808.0.0: 1790 + version "20210808.0.0" 1791 + resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20210808.0.0.tgz#9722073e2ace0ed1a9934423e6277c9994418e84" 1792 + integrity sha512-7dEQfBzOdwdjwa/Pq8VAypNBKyWRrOcKjnNYOO9gEg2hjh8XVMeQzTqw4uANfVvvANGdE/JjD+HF6zHVgLRwjg== 1750 1793 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= 1794 + google-closure-compiler-linux@^20210808.0.0: 1795 + version "20210808.0.0" 1796 + resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20210808.0.0.tgz#42b844cef30cce6570d21f5d75c71f1af36fc070" 1797 + integrity sha512-byKi5ITUiWRvEIcQo76i1siVnOwrTmG+GNcBG4cJ7x8IE6+4ki9rG5pUe4+DOYHkfk52XU6XHt9aAAgCcFDKpg== 1755 1798 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= 1799 + google-closure-compiler-osx@^20210808.0.0: 1800 + version "20210808.0.0" 1801 + resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20210808.0.0.tgz#6fe601c80d19a998d2703de6bb5a8c4d41f75e24" 1802 + integrity sha512-iwyAY6dGj1FrrBdmfwKXkjtTGJnqe8F+9WZbfXxiBjkWLtIsJt2dD1+q7g/sw3w8mdHrGQAdxtDZP/usMwj/Rg== 1760 1803 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== 1804 + google-closure-compiler-windows@^20210808.0.0: 1805 + version "20210808.0.0" 1806 + resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20210808.0.0.tgz#f907fa046d8a25d820485cb4482fbd5bada9cf03" 1807 + integrity sha512-VI+UUYwtGWDYwpiixrWRD8EklHgl6PMbiEaHxQSrQbH8PDXytwaOKqmsaH2lWYd5Y/BOZie2MzjY7F5JI69q1w== 1808 + 1809 + google-closure-compiler@20210808.0.0: 1810 + version "20210808.0.0" 1811 + resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20210808.0.0.tgz#0638e71f1073f71682277200db71d0ea05b3de1d" 1812 + integrity sha512-+R2+P1tT1lEnDDGk8b+WXfyVZgWjcCK9n1mmZe8pMEzPaPWxqK7GMetLVWnqfTDJ5Q+LRspOiFBv3Is+0yuhCA== 1765 1813 dependencies: 1766 - ajv "^6.5.5" 1767 - har-schema "^2.0.0" 1814 + chalk "2.x" 1815 + google-closure-compiler-java "^20210808.0.0" 1816 + minimist "1.x" 1817 + vinyl "2.x" 1818 + vinyl-sourcemaps-apply "^0.2.0" 1819 + optionalDependencies: 1820 + google-closure-compiler-linux "^20210808.0.0" 1821 + google-closure-compiler-osx "^20210808.0.0" 1822 + google-closure-compiler-windows "^20210808.0.0" 1823 + 1824 + graceful-fs@^4.1.2, graceful-fs@^4.2.4: 1825 + version "4.2.4" 1826 + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 1827 + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 1768 1828 1769 1829 has-flag@^3.0.0: 1770 1830 version "3.0.0" ··· 1781 1841 resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1782 1842 integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1783 1843 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 1844 has@^1.0.3: 1816 1845 version "1.0.3" 1817 1846 resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" ··· 1836 1865 resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1837 1866 integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1838 1867 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= 1868 + http-proxy-agent@^4.0.1: 1869 + version "4.0.1" 1870 + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 1871 + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 1843 1872 dependencies: 1844 - assert-plus "^1.0.0" 1845 - jsprim "^1.2.2" 1846 - sshpk "^1.7.0" 1873 + "@tootallnate/once" "1" 1874 + agent-base "6" 1875 + debug "4" 1847 1876 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== 1877 + https-proxy-agent@^5.0.0: 1878 + version "5.0.0" 1879 + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 1880 + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 1881 + dependencies: 1882 + agent-base "6" 1883 + debug "4" 1852 1884 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== 1885 + human-signals@^2.1.0: 1886 + version "2.1.0" 1887 + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1888 + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1889 + 1890 + husky-v4@^4.3.8: 1891 + version "4.3.8" 1892 + resolved "https://registry.yarnpkg.com/husky-v4/-/husky-v4-4.3.8.tgz#af3be56a8b62b941371b5190e265f76dd1af2e57" 1893 + integrity sha512-M7A9u/t6BnT/qbDzKb7SdXhr8qLTGTkqZL6YLDDM20jfCdmpIMEuO384LvYXSBcgv50oIgNWI/IaO3g4A4ShjA== 1857 1894 dependencies: 1858 1895 chalk "^4.0.0" 1859 1896 ci-info "^2.0.0" 1860 1897 compare-versions "^3.6.0" 1861 - cosmiconfig "^6.0.0" 1862 - find-versions "^3.2.0" 1898 + cosmiconfig "^7.0.0" 1899 + find-versions "^4.0.0" 1863 1900 opencollective-postinstall "^2.0.2" 1864 - pkg-dir "^4.2.0" 1901 + pkg-dir "^5.0.0" 1865 1902 please-upgrade-node "^3.2.0" 1866 1903 slash "^3.0.0" 1867 1904 which-pm-runs "^1.0.0" ··· 1873 1910 dependencies: 1874 1911 safer-buffer ">= 2.1.2 < 3" 1875 1912 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== 1913 + import-fresh@^3.2.1: 1914 + version "3.3.0" 1915 + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1916 + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1880 1917 dependencies: 1881 1918 parent-module "^1.0.0" 1882 1919 resolve-from "^4.0.0" ··· 1907 1944 once "^1.3.0" 1908 1945 wrappy "1" 1909 1946 1910 - inherits@2: 1947 + inherits@2, inherits@^2.0.1, inherits@~2.0.3: 1911 1948 version "2.0.4" 1912 1949 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1913 1950 integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1914 1951 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 1952 is-arrayish@^0.2.1: 1935 1953 version "0.2.1" 1936 1954 resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1937 1955 integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1938 1956 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 1957 is-callable@^1.1.4, is-callable@^1.1.5: 1945 1958 version "1.1.5" 1946 1959 resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 1947 1960 integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 1948 1961 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== 1962 + is-ci@^3.0.0: 1963 + version "3.0.0" 1964 + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" 1965 + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== 1953 1966 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" 1967 + ci-info "^3.1.1" 1962 1968 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== 1969 + is-core-module@^2.2.0: 1970 + version "2.6.0" 1971 + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" 1972 + integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== 1967 1973 dependencies: 1968 - kind-of "^6.0.0" 1974 + has "^1.0.3" 1969 1975 1970 1976 is-date-object@^1.0.1: 1971 1977 version "1.0.2" 1972 1978 resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1973 1979 integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1974 1980 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 1981 is-fullwidth-code-point@^3.0.0: 2011 1982 version "3.0.0" 2012 1983 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" ··· 2021 1992 version "1.0.0" 2022 1993 resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 2023 1994 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 1995 2032 1996 is-number@^7.0.0: 2033 1997 version "7.0.0" ··· 2039 2003 resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 2040 2004 integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 2041 2005 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= 2006 + is-potential-custom-element-name@^1.0.1: 2007 + version "1.0.1" 2008 + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" 2009 + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== 2053 2010 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== 2011 + is-reference@^1.2.1: 2012 + version "1.2.1" 2013 + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" 2014 + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== 2058 2015 dependencies: 2059 - "@types/estree" "0.0.39" 2016 + "@types/estree" "*" 2060 2017 2061 2018 is-regex@^1.0.5: 2062 2019 version "1.0.5" ··· 2070 2027 resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 2071 2028 integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 2072 2029 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 2030 is-stream@^2.0.0: 2079 2031 version "2.0.0" 2080 2032 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" ··· 2087 2039 dependencies: 2088 2040 has-symbols "^1.0.1" 2089 2041 2090 - is-typedarray@^1.0.0, is-typedarray@~1.0.0: 2042 + is-typedarray@^1.0.0: 2091 2043 version "1.0.0" 2092 2044 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 2093 2045 integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 2094 2046 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== 2047 + is-unicode-supported@^0.1.0: 2048 + version "0.1.0" 2049 + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 2050 + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 2099 2051 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: 2052 + isarray@~1.0.0: 2108 2053 version "1.0.0" 2109 2054 resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 2110 2055 integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= ··· 2114 2059 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 2115 2060 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 2116 2061 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 2062 istanbul-lib-coverage@^3.0.0: 2135 2063 version "3.0.0" 2136 2064 resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" 2137 2065 integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== 2138 2066 2139 - istanbul-lib-instrument@^4.0.0: 2067 + istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: 2140 2068 version "4.0.3" 2141 2069 resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" 2142 2070 integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== ··· 2172 2100 html-escaper "^2.0.0" 2173 2101 istanbul-lib-report "^3.0.0" 2174 2102 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== 2103 + jest-changed-files@^27.1.0: 2104 + version "27.1.0" 2105 + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.1.0.tgz#42da6ea00f06274172745729d55f42b60a9dffe0" 2106 + integrity sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg== 2107 + dependencies: 2108 + "@jest/types" "^27.1.0" 2109 + execa "^5.0.0" 2110 + throat "^6.0.1" 2111 + 2112 + jest-circus@^27.1.0: 2113 + version "27.1.0" 2114 + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.1.0.tgz#24c280c90a625ea57da20ee231d25b1621979a57" 2115 + integrity sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA== 2179 2116 dependencies: 2180 - "@jest/types" "^26.0.1" 2181 - execa "^4.0.0" 2182 - throat "^5.0.0" 2117 + "@jest/environment" "^27.1.0" 2118 + "@jest/test-result" "^27.1.0" 2119 + "@jest/types" "^27.1.0" 2120 + "@types/node" "*" 2121 + chalk "^4.0.0" 2122 + co "^4.6.0" 2123 + dedent "^0.7.0" 2124 + expect "^27.1.0" 2125 + is-generator-fn "^2.0.0" 2126 + jest-each "^27.1.0" 2127 + jest-matcher-utils "^27.1.0" 2128 + jest-message-util "^27.1.0" 2129 + jest-runtime "^27.1.0" 2130 + jest-snapshot "^27.1.0" 2131 + jest-util "^27.1.0" 2132 + pretty-format "^27.1.0" 2133 + slash "^3.0.0" 2134 + stack-utils "^2.0.3" 2135 + throat "^6.0.1" 2183 2136 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== 2137 + jest-cli@^27.1.0: 2138 + version "27.1.0" 2139 + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.1.0.tgz#118438e4d11cf6fb66cb2b2eb5778817eab3daeb" 2140 + integrity sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw== 2188 2141 dependencies: 2189 - "@jest/core" "^26.0.1" 2190 - "@jest/test-result" "^26.0.1" 2191 - "@jest/types" "^26.0.1" 2142 + "@jest/core" "^27.1.0" 2143 + "@jest/test-result" "^27.1.0" 2144 + "@jest/types" "^27.1.0" 2192 2145 chalk "^4.0.0" 2193 2146 exit "^0.1.2" 2194 2147 graceful-fs "^4.2.4" 2195 2148 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" 2149 + jest-config "^27.1.0" 2150 + jest-util "^27.1.0" 2151 + jest-validate "^27.1.0" 2200 2152 prompts "^2.0.1" 2201 - yargs "^15.3.1" 2153 + yargs "^16.0.3" 2202 2154 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== 2155 + jest-config@^27.1.0: 2156 + version "27.1.0" 2157 + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.1.0.tgz#e6826e2baaa34c07c3839af86466870e339d9ada" 2158 + integrity sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg== 2207 2159 dependencies: 2208 2160 "@babel/core" "^7.1.0" 2209 - "@jest/test-sequencer" "^26.0.1" 2210 - "@jest/types" "^26.0.1" 2211 - babel-jest "^26.0.1" 2161 + "@jest/test-sequencer" "^27.1.0" 2162 + "@jest/types" "^27.1.0" 2163 + babel-jest "^27.1.0" 2212 2164 chalk "^4.0.0" 2213 2165 deepmerge "^4.2.2" 2214 2166 glob "^7.1.1" 2215 2167 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" 2168 + is-ci "^3.0.0" 2169 + jest-circus "^27.1.0" 2170 + jest-environment-jsdom "^27.1.0" 2171 + jest-environment-node "^27.1.0" 2172 + jest-get-type "^27.0.6" 2173 + jest-jasmine2 "^27.1.0" 2174 + jest-regex-util "^27.0.6" 2175 + jest-resolve "^27.1.0" 2176 + jest-runner "^27.1.0" 2177 + jest-util "^27.1.0" 2178 + jest-validate "^27.1.0" 2179 + micromatch "^4.0.4" 2180 + pretty-format "^27.1.0" 2226 2181 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== 2182 + jest-diff@^27.1.0: 2183 + version "27.1.0" 2184 + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.1.0.tgz#c7033f25add95e2218f3c7f4c3d7b634ab6b3cd2" 2185 + integrity sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg== 2231 2186 dependencies: 2232 2187 chalk "^4.0.0" 2233 - diff-sequences "^26.0.0" 2234 - jest-get-type "^26.0.0" 2235 - pretty-format "^26.0.1" 2188 + diff-sequences "^27.0.6" 2189 + jest-get-type "^27.0.6" 2190 + pretty-format "^27.1.0" 2236 2191 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== 2192 + jest-docblock@^27.0.6: 2193 + version "27.0.6" 2194 + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" 2195 + integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== 2241 2196 dependencies: 2242 2197 detect-newline "^3.0.0" 2243 2198 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== 2199 + jest-each@^27.1.0: 2200 + version "27.1.0" 2201 + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.1.0.tgz#36ac75f7aeecb3b8da2a8e617ccb30a446df408c" 2202 + integrity sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg== 2248 2203 dependencies: 2249 - "@jest/types" "^26.0.1" 2204 + "@jest/types" "^27.1.0" 2250 2205 chalk "^4.0.0" 2251 - jest-get-type "^26.0.0" 2252 - jest-util "^26.0.1" 2253 - pretty-format "^26.0.1" 2206 + jest-get-type "^27.0.6" 2207 + jest-util "^27.1.0" 2208 + pretty-format "^27.1.0" 2254 2209 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== 2210 + jest-environment-jsdom@^27.1.0: 2211 + version "27.1.0" 2212 + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.1.0.tgz#5fb3eb8a67e02e6cc623640388d5f90e33075f18" 2213 + integrity sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ== 2259 2214 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" 2215 + "@jest/environment" "^27.1.0" 2216 + "@jest/fake-timers" "^27.1.0" 2217 + "@jest/types" "^27.1.0" 2218 + "@types/node" "*" 2219 + jest-mock "^27.1.0" 2220 + jest-util "^27.1.0" 2221 + jsdom "^16.6.0" 2266 2222 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== 2223 + jest-environment-node@^27.1.0: 2224 + version "27.1.0" 2225 + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.1.0.tgz#feea6b765f1fd4582284d4f1007df2b0a8d15b7f" 2226 + integrity sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw== 2271 2227 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" 2228 + "@jest/environment" "^27.1.0" 2229 + "@jest/fake-timers" "^27.1.0" 2230 + "@jest/types" "^27.1.0" 2231 + "@types/node" "*" 2232 + jest-mock "^27.1.0" 2233 + jest-util "^27.1.0" 2277 2234 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== 2235 + jest-get-type@^27.0.6: 2236 + version "27.0.6" 2237 + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" 2238 + integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== 2282 2239 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== 2240 + jest-haste-map@^27.1.0: 2241 + version "27.1.0" 2242 + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.1.0.tgz#a39f456823bd6a74e3c86ad25f6fa870428326bf" 2243 + integrity sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg== 2287 2244 dependencies: 2288 - "@jest/types" "^26.0.1" 2245 + "@jest/types" "^27.1.0" 2289 2246 "@types/graceful-fs" "^4.1.2" 2247 + "@types/node" "*" 2290 2248 anymatch "^3.0.3" 2291 2249 fb-watchman "^2.0.0" 2292 2250 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" 2251 + jest-regex-util "^27.0.6" 2252 + jest-serializer "^27.0.6" 2253 + jest-util "^27.1.0" 2254 + jest-worker "^27.1.0" 2255 + micromatch "^4.0.4" 2298 2256 walker "^1.0.7" 2299 - which "^2.0.2" 2300 2257 optionalDependencies: 2301 - fsevents "^2.1.2" 2258 + fsevents "^2.3.2" 2302 2259 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== 2260 + jest-jasmine2@^27.1.0: 2261 + version "27.1.0" 2262 + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.1.0.tgz#324a3de0b2ee20d238b2b5b844acc4571331a206" 2263 + integrity sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ== 2307 2264 dependencies: 2308 2265 "@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" 2266 + "@jest/environment" "^27.1.0" 2267 + "@jest/source-map" "^27.0.6" 2268 + "@jest/test-result" "^27.1.0" 2269 + "@jest/types" "^27.1.0" 2270 + "@types/node" "*" 2313 2271 chalk "^4.0.0" 2314 2272 co "^4.6.0" 2315 - expect "^26.0.1" 2273 + expect "^27.1.0" 2316 2274 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" 2275 + jest-each "^27.1.0" 2276 + jest-matcher-utils "^27.1.0" 2277 + jest-message-util "^27.1.0" 2278 + jest-runtime "^27.1.0" 2279 + jest-snapshot "^27.1.0" 2280 + jest-util "^27.1.0" 2281 + pretty-format "^27.1.0" 2282 + throat "^6.0.1" 2325 2283 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== 2284 + jest-leak-detector@^27.1.0: 2285 + version "27.1.0" 2286 + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.1.0.tgz#fe7eb633c851e06280ec4dd248067fe232c00a79" 2287 + integrity sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA== 2330 2288 dependencies: 2331 - jest-get-type "^26.0.0" 2332 - pretty-format "^26.0.1" 2289 + jest-get-type "^27.0.6" 2290 + pretty-format "^27.1.0" 2333 2291 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== 2292 + jest-matcher-utils@^27.1.0: 2293 + version "27.1.0" 2294 + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz#68afda0885db1f0b9472ce98dc4c535080785301" 2295 + integrity sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ== 2338 2296 dependencies: 2339 2297 chalk "^4.0.0" 2340 - jest-diff "^26.0.1" 2341 - jest-get-type "^26.0.0" 2342 - pretty-format "^26.0.1" 2298 + jest-diff "^27.1.0" 2299 + jest-get-type "^27.0.6" 2300 + pretty-format "^27.1.0" 2343 2301 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== 2302 + jest-message-util@^27.1.0: 2303 + version "27.1.0" 2304 + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.1.0.tgz#e77692c84945d1d10ef00afdfd3d2c20bd8fb468" 2305 + integrity sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ== 2348 2306 dependencies: 2349 - "@babel/code-frame" "^7.0.0" 2350 - "@jest/types" "^26.0.1" 2351 - "@types/stack-utils" "^1.0.1" 2307 + "@babel/code-frame" "^7.12.13" 2308 + "@jest/types" "^27.1.0" 2309 + "@types/stack-utils" "^2.0.0" 2352 2310 chalk "^4.0.0" 2353 2311 graceful-fs "^4.2.4" 2354 - micromatch "^4.0.2" 2312 + micromatch "^4.0.4" 2313 + pretty-format "^27.1.0" 2355 2314 slash "^3.0.0" 2356 - stack-utils "^2.0.2" 2315 + stack-utils "^2.0.3" 2357 2316 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== 2317 + jest-mock@^27.1.0: 2318 + version "27.1.0" 2319 + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.1.0.tgz#7ca6e4d09375c071661642d1c14c4711f3ab4b4f" 2320 + integrity sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w== 2362 2321 dependencies: 2363 - "@jest/types" "^26.0.1" 2322 + "@jest/types" "^27.1.0" 2323 + "@types/node" "*" 2364 2324 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== 2325 + jest-pnp-resolver@^1.2.2: 2326 + version "1.2.2" 2327 + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" 2328 + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== 2369 2329 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== 2330 + jest-regex-util@^27.0.6: 2331 + version "27.0.6" 2332 + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" 2333 + integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== 2374 2334 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== 2335 + jest-resolve-dependencies@^27.1.0: 2336 + version "27.1.0" 2337 + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.0.tgz#d32ea4a2c82f76410f6157d0ec6cde24fbff2317" 2338 + integrity sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ== 2379 2339 dependencies: 2380 - "@jest/types" "^26.0.1" 2381 - jest-regex-util "^26.0.0" 2382 - jest-snapshot "^26.0.1" 2340 + "@jest/types" "^27.1.0" 2341 + jest-regex-util "^27.0.6" 2342 + jest-snapshot "^27.1.0" 2383 2343 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== 2344 + jest-resolve@^27.1.0: 2345 + version "27.1.0" 2346 + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.1.0.tgz#bb22303c9e240cccdda28562e3c6fbcc6a23ac86" 2347 + integrity sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA== 2388 2348 dependencies: 2389 - "@jest/types" "^26.0.1" 2349 + "@jest/types" "^27.1.0" 2390 2350 chalk "^4.0.0" 2351 + escalade "^3.1.1" 2391 2352 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" 2353 + jest-haste-map "^27.1.0" 2354 + jest-pnp-resolver "^1.2.2" 2355 + jest-util "^27.1.0" 2356 + jest-validate "^27.1.0" 2357 + resolve "^1.20.0" 2396 2358 slash "^3.0.0" 2397 2359 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== 2360 + jest-runner@^27.1.0: 2361 + version "27.1.0" 2362 + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.1.0.tgz#1b28d114fb3b67407b8354c9385d47395e8ff83f" 2363 + integrity sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw== 2402 2364 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" 2365 + "@jest/console" "^27.1.0" 2366 + "@jest/environment" "^27.1.0" 2367 + "@jest/test-result" "^27.1.0" 2368 + "@jest/transform" "^27.1.0" 2369 + "@jest/types" "^27.1.0" 2370 + "@types/node" "*" 2407 2371 chalk "^4.0.0" 2372 + emittery "^0.8.1" 2408 2373 exit "^0.1.2" 2409 2374 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" 2375 + jest-docblock "^27.0.6" 2376 + jest-environment-jsdom "^27.1.0" 2377 + jest-environment-node "^27.1.0" 2378 + jest-haste-map "^27.1.0" 2379 + jest-leak-detector "^27.1.0" 2380 + jest-message-util "^27.1.0" 2381 + jest-resolve "^27.1.0" 2382 + jest-runtime "^27.1.0" 2383 + jest-util "^27.1.0" 2384 + jest-worker "^27.1.0" 2420 2385 source-map-support "^0.5.6" 2421 - throat "^5.0.0" 2386 + throat "^6.0.1" 2422 2387 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== 2388 + jest-runtime@^27.1.0: 2389 + version "27.1.0" 2390 + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.1.0.tgz#1a98d984ffebc16a0b4f9eaad8ab47c00a750cf5" 2391 + integrity sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A== 2427 2392 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" 2393 + "@jest/console" "^27.1.0" 2394 + "@jest/environment" "^27.1.0" 2395 + "@jest/fake-timers" "^27.1.0" 2396 + "@jest/globals" "^27.1.0" 2397 + "@jest/source-map" "^27.0.6" 2398 + "@jest/test-result" "^27.1.0" 2399 + "@jest/transform" "^27.1.0" 2400 + "@jest/types" "^27.1.0" 2401 + "@types/yargs" "^16.0.0" 2437 2402 chalk "^4.0.0" 2403 + cjs-module-lexer "^1.0.0" 2438 2404 collect-v8-coverage "^1.0.0" 2405 + execa "^5.0.0" 2439 2406 exit "^0.1.2" 2440 2407 glob "^7.1.3" 2441 2408 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" 2409 + jest-haste-map "^27.1.0" 2410 + jest-message-util "^27.1.0" 2411 + jest-mock "^27.1.0" 2412 + jest-regex-util "^27.0.6" 2413 + jest-resolve "^27.1.0" 2414 + jest-snapshot "^27.1.0" 2415 + jest-util "^27.1.0" 2416 + jest-validate "^27.1.0" 2451 2417 slash "^3.0.0" 2452 2418 strip-bom "^4.0.0" 2453 - yargs "^15.3.1" 2419 + yargs "^16.0.3" 2454 2420 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== 2421 + jest-serializer@^27.0.6: 2422 + version "27.0.6" 2423 + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" 2424 + integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== 2459 2425 dependencies: 2426 + "@types/node" "*" 2460 2427 graceful-fs "^4.2.4" 2461 2428 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== 2429 + jest-snapshot@^27.1.0: 2430 + version "27.1.0" 2431 + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.1.0.tgz#2a063ab90064017a7e9302528be7eaea6da12d17" 2432 + integrity sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA== 2466 2433 dependencies: 2434 + "@babel/core" "^7.7.2" 2435 + "@babel/generator" "^7.7.2" 2436 + "@babel/parser" "^7.7.2" 2437 + "@babel/plugin-syntax-typescript" "^7.7.2" 2438 + "@babel/traverse" "^7.7.2" 2467 2439 "@babel/types" "^7.0.0" 2468 - "@jest/types" "^26.0.1" 2469 - "@types/prettier" "^2.0.0" 2440 + "@jest/transform" "^27.1.0" 2441 + "@jest/types" "^27.1.0" 2442 + "@types/babel__traverse" "^7.0.4" 2443 + "@types/prettier" "^2.1.5" 2444 + babel-preset-current-node-syntax "^1.0.0" 2470 2445 chalk "^4.0.0" 2471 - expect "^26.0.1" 2446 + expect "^27.1.0" 2472 2447 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" 2448 + jest-diff "^27.1.0" 2449 + jest-get-type "^27.0.6" 2450 + jest-haste-map "^27.1.0" 2451 + jest-matcher-utils "^27.1.0" 2452 + jest-message-util "^27.1.0" 2453 + jest-resolve "^27.1.0" 2454 + jest-util "^27.1.0" 2479 2455 natural-compare "^1.4.0" 2480 - pretty-format "^26.0.1" 2456 + pretty-format "^27.1.0" 2481 2457 semver "^7.3.2" 2482 2458 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== 2459 + jest-util@^27.1.0: 2460 + version "27.1.0" 2461 + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.1.0.tgz#06a53777a8cb7e4940ca8e20bf9c67dd65d9bd68" 2462 + integrity sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w== 2487 2463 dependencies: 2488 - "@jest/types" "^26.0.1" 2464 + "@jest/types" "^27.1.0" 2465 + "@types/node" "*" 2489 2466 chalk "^4.0.0" 2490 2467 graceful-fs "^4.2.4" 2491 - is-ci "^2.0.0" 2492 - make-dir "^3.0.0" 2468 + is-ci "^3.0.0" 2469 + picomatch "^2.2.3" 2493 2470 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== 2471 + jest-validate@^27.1.0: 2472 + version "27.1.0" 2473 + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.1.0.tgz#d9e82024c5e3f5cef52a600cfc456793a84c0998" 2474 + integrity sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA== 2498 2475 dependencies: 2499 - "@jest/types" "^26.0.1" 2500 - camelcase "^6.0.0" 2476 + "@jest/types" "^27.1.0" 2477 + camelcase "^6.2.0" 2501 2478 chalk "^4.0.0" 2502 - jest-get-type "^26.0.0" 2479 + jest-get-type "^27.0.6" 2503 2480 leven "^3.1.0" 2504 - pretty-format "^26.0.1" 2481 + pretty-format "^27.1.0" 2505 2482 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== 2483 + jest-watcher@^27.1.0: 2484 + version "27.1.0" 2485 + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.1.0.tgz#2511fcddb0e969a400f3d1daa74265f93f13ce93" 2486 + integrity sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ== 2510 2487 dependencies: 2511 - "@jest/test-result" "^26.0.1" 2512 - "@jest/types" "^26.0.1" 2488 + "@jest/test-result" "^27.1.0" 2489 + "@jest/types" "^27.1.0" 2490 + "@types/node" "*" 2513 2491 ansi-escapes "^4.2.1" 2514 2492 chalk "^4.0.0" 2515 - jest-util "^26.0.1" 2493 + jest-util "^27.1.0" 2516 2494 string-length "^4.0.1" 2517 2495 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== 2496 + jest-worker@^27.1.0: 2497 + version "27.1.0" 2498 + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.1.0.tgz#65f4a88e37148ed984ba8ca8492d6b376938c0aa" 2499 + integrity sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg== 2522 2500 dependencies: 2501 + "@types/node" "*" 2523 2502 merge-stream "^2.0.0" 2524 - supports-color "^7.0.0" 2503 + supports-color "^8.0.0" 2525 2504 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== 2505 + jest@^27.1.0: 2506 + version "27.1.0" 2507 + resolved "https://registry.yarnpkg.com/jest/-/jest-27.1.0.tgz#eaab62dfdc02d8b7c814cd27b8d2d92bc46d3d69" 2508 + integrity sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg== 2530 2509 dependencies: 2531 - "@jest/core" "^26.0.1" 2510 + "@jest/core" "^27.1.0" 2532 2511 import-local "^3.0.2" 2533 - jest-cli "^26.0.1" 2512 + jest-cli "^27.1.0" 2534 2513 2535 2514 js-tokens@^4.0.0: 2536 2515 version "4.0.0" ··· 2545 2524 argparse "^1.0.7" 2546 2525 esprima "^4.0.0" 2547 2526 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== 2527 + jsdom@^16.6.0: 2528 + version "16.7.0" 2529 + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" 2530 + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== 2557 2531 dependencies: 2558 - abab "^2.0.3" 2559 - acorn "^7.1.1" 2532 + abab "^2.0.5" 2533 + acorn "^8.2.4" 2560 2534 acorn-globals "^6.0.0" 2561 2535 cssom "^0.4.4" 2562 - cssstyle "^2.2.0" 2536 + cssstyle "^2.3.0" 2563 2537 data-urls "^2.0.0" 2564 - decimal.js "^10.2.0" 2538 + decimal.js "^10.2.1" 2565 2539 domexception "^2.0.1" 2566 - escodegen "^1.14.1" 2540 + escodegen "^2.0.0" 2541 + form-data "^3.0.0" 2567 2542 html-encoding-sniffer "^2.0.1" 2568 - is-potential-custom-element-name "^1.0.0" 2543 + http-proxy-agent "^4.0.1" 2544 + https-proxy-agent "^5.0.0" 2545 + is-potential-custom-element-name "^1.0.1" 2569 2546 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" 2547 + parse5 "6.0.1" 2548 + saxes "^5.0.1" 2574 2549 symbol-tree "^3.2.4" 2575 - tough-cookie "^3.0.1" 2550 + tough-cookie "^4.0.0" 2576 2551 w3c-hr-time "^1.0.2" 2577 2552 w3c-xmlserializer "^2.0.0" 2578 - webidl-conversions "^6.0.0" 2553 + webidl-conversions "^6.1.0" 2579 2554 whatwg-encoding "^1.0.5" 2580 2555 whatwg-mimetype "^2.3.0" 2581 - whatwg-url "^8.0.0" 2582 - ws "^7.2.3" 2556 + whatwg-url "^8.5.0" 2557 + ws "^7.4.6" 2583 2558 xml-name-validator "^3.0.0" 2584 2559 2585 2560 jsesc@^2.5.1: ··· 2597 2572 resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 2598 2573 integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 2599 2574 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 2575 json5@^2.1.2: 2616 2576 version "2.1.3" 2617 2577 resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" ··· 2619 2579 dependencies: 2620 2580 minimist "^1.2.5" 2621 2581 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 2582 kleur@^3.0.3: 2657 2583 version "3.0.3" 2658 2584 resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" ··· 2676 2602 resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 2677 2603 integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 2678 2604 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== 2605 + lint-staged@^11.1.2: 2606 + version "11.1.2" 2607 + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90" 2608 + integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w== 2683 2609 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" 2610 + chalk "^4.1.1" 2611 + cli-truncate "^2.1.0" 2612 + commander "^7.2.0" 2613 + cosmiconfig "^7.0.0" 2614 + debug "^4.3.1" 2615 + enquirer "^2.3.6" 2616 + execa "^5.0.0" 2617 + listr2 "^3.8.2" 2618 + log-symbols "^4.1.0" 2619 + micromatch "^4.0.4" 2693 2620 normalize-path "^3.0.0" 2694 2621 please-upgrade-node "^3.2.0" 2695 2622 string-argv "0.3.1" 2696 2623 stringify-object "^3.3.0" 2697 2624 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== 2625 + listr2@^3.8.2: 2626 + version "3.11.0" 2627 + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.0.tgz#9771b02407875aa78e73d6e0ff6541bbec0aaee9" 2628 + integrity sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ== 2702 2629 dependencies: 2703 - "@samverschueren/stream-to-observable" "^0.3.0" 2704 - chalk "^3.0.0" 2705 - cli-cursor "^3.1.0" 2706 2630 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" 2631 + colorette "^1.2.2" 2711 2632 log-update "^4.0.0" 2712 2633 p-map "^4.0.0" 2713 - pad "^3.2.0" 2714 - rxjs "^6.3.3" 2634 + rxjs "^6.6.7" 2715 2635 through "^2.3.8" 2716 - uuid "^7.0.2" 2636 + wrap-ansi "^7.0.0" 2717 2637 2718 2638 load-json-file@^4.0.0: 2719 2639 version "4.0.0" ··· 2732 2652 dependencies: 2733 2653 p-locate "^4.1.0" 2734 2654 2655 + locate-path@^6.0.0: 2656 + version "6.0.0" 2657 + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 2658 + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 2659 + dependencies: 2660 + p-locate "^5.0.0" 2661 + 2735 2662 lodash.sortby@^4.7.0: 2736 2663 version "4.7.0" 2737 2664 resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 2738 2665 integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= 2739 2666 2740 - lodash@^4.17.13, lodash@^4.17.15: 2667 + lodash@^4.17.13: 2741 2668 version "4.17.15" 2742 2669 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 2743 2670 integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 2744 2671 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== 2672 + lodash@^4.7.0: 2673 + version "4.17.21" 2674 + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 2675 + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 2676 + 2677 + log-symbols@^4.1.0: 2678 + version "4.1.0" 2679 + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 2680 + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 2749 2681 dependencies: 2750 - chalk "^2.4.2" 2682 + chalk "^4.1.0" 2683 + is-unicode-supported "^0.1.0" 2751 2684 2752 2685 log-update@^4.0.0: 2753 2686 version "4.0.0" ··· 2759 2692 slice-ansi "^4.0.0" 2760 2693 wrap-ansi "^6.2.0" 2761 2694 2762 - magic-string@^0.25.0, magic-string@^0.25.2, magic-string@^0.25.7: 2695 + magic-string@0.25.7, magic-string@^0.25.0, magic-string@^0.25.7: 2763 2696 version "0.25.7" 2764 2697 resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 2765 2698 integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== ··· 2780 2713 dependencies: 2781 2714 tmpl "1.0.x" 2782 2715 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 2716 memorystream@^0.3.1: 2796 2717 version "0.3.1" 2797 2718 resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" ··· 2802 2723 resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2803 2724 integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2804 2725 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== 2726 + micromatch@^4.0.4: 2727 + version "4.0.4" 2728 + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 2729 + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 2828 2730 dependencies: 2829 2731 braces "^3.0.1" 2830 - picomatch "^2.0.5" 2732 + picomatch "^2.2.3" 2831 2733 2832 2734 mime-db@1.44.0: 2833 2735 version "1.44.0" 2834 2736 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 2835 2737 integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 2836 2738 2837 - mime-types@^2.1.12, mime-types@~2.1.19: 2739 + mime-types@^2.1.12: 2838 2740 version "2.1.27" 2839 2741 resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 2840 2742 integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== ··· 2853 2755 dependencies: 2854 2756 brace-expansion "^1.1.7" 2855 2757 2856 - minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: 2758 + minimist@1.x, minimist@^1.2.5: 2857 2759 version "1.2.5" 2858 2760 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2859 2761 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2860 2762 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: 2763 + ms@2.1.2, ms@^2.1.1: 2875 2764 version "2.1.2" 2876 2765 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2877 2766 integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2878 2767 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== 2768 + mz@^2.7.0: 2769 + version "2.7.0" 2770 + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" 2771 + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== 2883 2772 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" 2773 + any-promise "^1.0.0" 2774 + object-assign "^4.0.1" 2775 + thenify-all "^1.0.0" 2895 2776 2896 2777 natural-compare@^1.4.0: 2897 2778 version "1.4.0" ··· 2913 2794 resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" 2914 2795 integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= 2915 2796 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" 2797 + node-releases@^1.1.75: 2798 + version "1.1.75" 2799 + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.75.tgz#6dd8c876b9897a1b8e5a02de26afa79bb54ebbfe" 2800 + integrity sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw== 2927 2801 2928 - normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: 2802 + normalize-package-data@^2.3.2: 2929 2803 version "2.5.0" 2930 2804 resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 2931 2805 integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== ··· 2934 2808 resolve "^1.10.0" 2935 2809 semver "2 || 3 || 4 || 5" 2936 2810 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 2811 2945 2812 normalize-path@^3.0.0: 2946 2813 version "3.0.0" ··· 2962 2829 shell-quote "^1.6.1" 2963 2830 string.prototype.padend "^3.0.0" 2964 2831 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: 2832 + npm-run-path@^4.0.1: 2973 2833 version "4.0.1" 2974 2834 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2975 2835 integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== ··· 2981 2841 resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 2982 2842 integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 2983 2843 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" 2844 + object-assign@^4.0.1: 2845 + version "4.1.1" 2846 + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2847 + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 2997 2848 2998 2849 object-inspect@^1.7.0: 2999 2850 version "1.7.0" ··· 3005 2856 resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 3006 2857 integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 3007 2858 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 2859 object.assign@^4.1.0: 3016 2860 version "4.1.0" 3017 2861 resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" ··· 3022 2866 has-symbols "^1.0.0" 3023 2867 object-keys "^1.0.11" 3024 2868 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: 2869 + once@^1.3.0: 3033 2870 version "1.4.0" 3034 2871 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 3035 2872 integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= ··· 3043 2880 dependencies: 3044 2881 mimic-fn "^2.1.0" 3045 2882 2883 + onetime@^5.1.2: 2884 + version "5.1.2" 2885 + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2886 + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2887 + dependencies: 2888 + mimic-fn "^2.1.0" 2889 + 3046 2890 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== 2891 + version "2.0.3" 2892 + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" 2893 + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== 3050 2894 3051 2895 optionator@^0.8.1: 3052 2896 version "0.8.3" ··· 3065 2909 resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" 3066 2910 integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== 3067 2911 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 2912 p-limit@^2.2.0: 3074 2913 version "2.3.0" 3075 2914 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" ··· 3077 2916 dependencies: 3078 2917 p-try "^2.0.0" 3079 2918 2919 + p-limit@^3.0.2: 2920 + version "3.1.0" 2921 + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2922 + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2923 + dependencies: 2924 + yocto-queue "^0.1.0" 2925 + 3080 2926 p-locate@^4.1.0: 3081 2927 version "4.1.0" 3082 2928 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" ··· 3084 2930 dependencies: 3085 2931 p-limit "^2.2.0" 3086 2932 2933 + p-locate@^5.0.0: 2934 + version "5.0.0" 2935 + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 2936 + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 2937 + dependencies: 2938 + p-limit "^3.0.2" 2939 + 3087 2940 p-map@^4.0.0: 3088 2941 version "4.0.0" 3089 2942 resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" ··· 3095 2948 version "2.2.0" 3096 2949 resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 3097 2950 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 2951 3106 2952 parent-module@^1.0.0: 3107 2953 version "1.0.1" ··· 3128 2974 json-parse-better-errors "^1.0.1" 3129 2975 lines-and-columns "^1.1.6" 3130 2976 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= 2977 + parse5@6.0.1: 2978 + version "6.0.1" 2979 + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 2980 + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 3140 2981 3141 2982 path-exists@^4.0.0: 3142 2983 version "4.0.0" ··· 3148 2989 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 3149 2990 integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 3150 2991 3151 - path-key@^2.0.0, path-key@^2.0.1: 2992 + path-key@^2.0.1: 3152 2993 version "2.0.1" 3153 2994 resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 3154 2995 integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= ··· 3175 3016 resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 3176 3017 integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 3177 3018 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: 3019 + picomatch@^2.0.4, picomatch@^2.2.2: 3184 3020 version "2.2.2" 3185 3021 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 3186 3022 integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 3023 + 3024 + picomatch@^2.2.3: 3025 + version "2.3.0" 3026 + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 3027 + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 3187 3028 3188 3029 pidtree@^0.3.0: 3189 3030 version "0.3.1" ··· 3209 3050 dependencies: 3210 3051 find-up "^4.0.0" 3211 3052 3053 + pkg-dir@^5.0.0: 3054 + version "5.0.0" 3055 + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" 3056 + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== 3057 + dependencies: 3058 + find-up "^5.0.0" 3059 + 3212 3060 please-upgrade-node@^3.2.0: 3213 3061 version "3.2.0" 3214 3062 resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" ··· 3216 3064 dependencies: 3217 3065 semver-compare "^1.0.0" 3218 3066 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 3067 prelude-ls@~1.1.2: 3225 3068 version "1.1.2" 3226 3069 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 3227 3070 integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 3228 3071 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== 3072 + prettier@^2.3.2: 3073 + version "2.3.2" 3074 + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" 3075 + integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== 3233 3076 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== 3077 + pretty-format@^27.1.0: 3078 + version "27.1.0" 3079 + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.1.0.tgz#022f3fdb19121e0a2612f3cff8d724431461b9ca" 3080 + integrity sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA== 3238 3081 dependencies: 3239 - "@jest/types" "^26.0.1" 3082 + "@jest/types" "^27.1.0" 3240 3083 ansi-regex "^5.0.0" 3241 - ansi-styles "^4.0.0" 3242 - react-is "^16.12.0" 3084 + ansi-styles "^5.0.0" 3085 + react-is "^17.0.1" 3086 + 3087 + process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: 3088 + version "2.0.1" 3089 + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 3090 + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 3243 3091 3244 3092 prompts@^2.0.1: 3245 3093 version "2.3.2" ··· 3249 3097 kleur "^3.0.3" 3250 3098 sisteransi "^1.0.4" 3251 3099 3252 - psl@^1.1.28: 3100 + psl@^1.1.33: 3253 3101 version "1.8.0" 3254 3102 resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 3255 3103 integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 3256 3104 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: 3105 + punycode@^2.1.1: 3266 3106 version "2.1.1" 3267 3107 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 3268 3108 integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 3269 3109 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" 3110 + react-is@^17.0.1: 3111 + version "17.0.2" 3112 + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" 3113 + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== 3288 3114 3289 3115 read-pkg@^3.0.0: 3290 3116 version "3.0.0" ··· 3295 3121 normalize-package-data "^2.3.2" 3296 3122 path-type "^3.0.0" 3297 3123 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== 3124 + readable-stream@^2.3.5: 3125 + version "2.3.7" 3126 + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 3127 + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 3302 3128 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" 3129 + core-util-is "~1.0.0" 3130 + inherits "~2.0.3" 3131 + isarray "~1.0.0" 3132 + process-nextick-args "~2.0.0" 3133 + safe-buffer "~5.1.1" 3134 + string_decoder "~1.1.1" 3135 + util-deprecate "~1.0.1" 3307 3136 3308 3137 regenerate-unicode-properties@^8.0.2: 3309 3138 version "8.2.0" ··· 3317 3146 resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 3318 3147 integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 3319 3148 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 3149 regexpu-core@4.5.4: 3329 3150 version "4.5.4" 3330 3151 resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" ··· 3354 3175 resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 3355 3176 integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 3356 3177 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" 3178 + replace-ext@^1.0.0: 3179 + version "1.0.1" 3180 + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" 3181 + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== 3408 3182 3409 3183 require-directory@^2.1.1: 3410 3184 version "2.1.1" 3411 3185 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 3412 3186 integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 3413 3187 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 3188 resolve-cwd@^3.0.0: 3420 3189 version "3.0.0" 3421 3190 resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" ··· 3433 3202 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 3434 3203 integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 3435 3204 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: 3205 + resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: 3442 3206 version "1.17.0" 3443 3207 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 3444 3208 integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 3445 3209 dependencies: 3446 3210 path-parse "^1.0.6" 3447 3211 3212 + resolve@^1.19.0, resolve@^1.20.0: 3213 + version "1.20.0" 3214 + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 3215 + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 3216 + dependencies: 3217 + is-core-module "^2.2.0" 3218 + path-parse "^1.0.6" 3219 + 3448 3220 restore-cursor@^3.1.0: 3449 3221 version "3.1.0" 3450 3222 resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" ··· 3453 3225 onetime "^5.1.0" 3454 3226 signal-exit "^3.0.2" 3455 3227 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 3228 rimraf@^3.0.0, rimraf@^3.0.2: 3462 3229 version "3.0.2" 3463 3230 resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" ··· 3465 3232 dependencies: 3466 3233 glob "^7.1.3" 3467 3234 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== 3235 + rollup@^2.56.3: 3236 + version "2.56.3" 3237 + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.3.tgz#b63edadd9851b0d618a6d0e6af8201955a77aeff" 3238 + integrity sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg== 3487 3239 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== 3240 + fsevents "~2.3.2" 3494 3241 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== 3242 + rxjs@^6.6.7: 3243 + version "6.6.7" 3244 + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" 3245 + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== 3499 3246 dependencies: 3500 3247 tslib "^1.9.0" 3501 3248 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: 3249 + safe-buffer@~5.1.0, safe-buffer@~5.1.1: 3508 3250 version "5.1.2" 3509 3251 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 3510 3252 integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 3511 3253 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: 3254 + "safer-buffer@>= 2.1.2 < 3": 3520 3255 version "2.1.2" 3521 3256 resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 3522 3257 integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 3523 3258 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: 3259 + saxes@^5.0.1: 3540 3260 version "5.0.1" 3541 3261 resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 3542 3262 integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== ··· 3548 3268 resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 3549 3269 integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 3550 3270 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== 3271 + semver-regex@^3.1.2: 3272 + version "3.1.2" 3273 + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" 3274 + integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== 3555 3275 3556 3276 "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: 3557 3277 version "5.7.1" ··· 3563 3283 resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 3564 3284 integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 3565 3285 3566 - semver@^7.2.1, semver@^7.3.2: 3286 + semver@^7.3.2: 3567 3287 version "7.3.2" 3568 3288 resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 3569 3289 integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 3570 3290 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 3291 shebang-command@^1.2.0: 3587 3292 version "1.2.0" 3588 3293 resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" ··· 3612 3317 resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 3613 3318 integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 3614 3319 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: 3320 + signal-exit@^3.0.2, signal-exit@^3.0.3: 3621 3321 version "3.0.3" 3622 3322 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 3623 3323 integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== ··· 3650 3350 astral-regex "^2.0.0" 3651 3351 is-fullwidth-code-point "^3.0.0" 3652 3352 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 3353 source-map-support@^0.5.6: 3695 3354 version "0.5.19" 3696 3355 resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" ··· 3699 3358 buffer-from "^1.0.0" 3700 3359 source-map "^0.6.0" 3701 3360 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: 3361 + source-map@^0.5.0, source-map@^0.5.1: 3708 3362 version "0.5.7" 3709 3363 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 3710 3364 integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= ··· 3719 3373 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 3720 3374 integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 3721 3375 3722 - sourcemap-codec@^1.4.4: 3376 + sourcemap-codec@1.4.8, sourcemap-codec@^1.4.4: 3723 3377 version "1.4.8" 3724 3378 resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 3725 3379 integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== ··· 3750 3404 resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 3751 3405 integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 3752 3406 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 3407 sprintf-js@~1.0.2: 3761 3408 version "1.0.3" 3762 3409 resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3763 3410 integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 3764 3411 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== 3412 + stack-utils@^2.0.3: 3413 + version "2.0.3" 3414 + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" 3415 + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== 3784 3416 dependencies: 3785 3417 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 3418 3800 3419 string-argv@0.3.1: 3801 3420 version "0.3.1" ··· 3861 3480 define-properties "^1.1.3" 3862 3481 es-abstract "^1.17.5" 3863 3482 3483 + string_decoder@~1.1.1: 3484 + version "1.1.1" 3485 + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 3486 + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 3487 + dependencies: 3488 + safe-buffer "~5.1.0" 3489 + 3864 3490 stringify-object@^3.3.0: 3865 3491 version "3.3.0" 3866 3492 resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" ··· 3887 3513 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 3888 3514 integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 3889 3515 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 3516 strip-final-newline@^2.0.0: 3896 3517 version "2.0.0" 3897 3518 resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 3898 3519 integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 3899 3520 3521 + sucrase@^3.18.0: 3522 + version "3.20.1" 3523 + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.20.1.tgz#1c055e97d0fab2f9857f02461364075b3a4ab226" 3524 + integrity sha512-BIG59HaJOxNct9Va6KvT5yzBA/rcMGetzvZyTx0ZdCcspIbpJTPS64zuAfYlJuOj+3WaI5JOdA+F0bJQQi8ZiQ== 3525 + dependencies: 3526 + commander "^4.0.0" 3527 + glob "7.1.6" 3528 + lines-and-columns "^1.1.6" 3529 + mz "^2.7.0" 3530 + pirates "^4.0.1" 3531 + ts-interface-checker "^0.1.9" 3532 + 3900 3533 supports-color@^5.3.0: 3901 3534 version "5.5.0" 3902 3535 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" ··· 3911 3544 dependencies: 3912 3545 has-flag "^4.0.0" 3913 3546 3547 + supports-color@^8.0.0: 3548 + version "8.1.1" 3549 + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 3550 + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 3551 + dependencies: 3552 + has-flag "^4.0.0" 3553 + 3914 3554 supports-hyperlinks@^2.0.0: 3915 3555 version "2.1.0" 3916 3556 resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" ··· 3941 3581 glob "^7.1.4" 3942 3582 minimatch "^3.0.4" 3943 3583 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== 3584 + thenify-all@^1.0.0: 3585 + version "1.6.0" 3586 + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" 3587 + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= 3588 + dependencies: 3589 + thenify ">= 3.1.0 < 4" 3590 + 3591 + "thenify@>= 3.1.0 < 4": 3592 + version "3.3.1" 3593 + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" 3594 + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== 3595 + dependencies: 3596 + any-promise "^1.0.0" 3597 + 3598 + throat@^6.0.1: 3599 + version "6.0.1" 3600 + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" 3601 + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== 3948 3602 3949 3603 through@^2.3.8: 3950 3604 version "2.3.8" ··· 3961 3615 resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 3962 3616 integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 3963 3617 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 3618 to-regex-range@^5.0.1: 3980 3619 version "5.0.1" 3981 3620 resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" ··· 3983 3622 dependencies: 3984 3623 is-number "^7.0.0" 3985 3624 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== 3625 + tough-cookie@^4.0.0: 3626 + version "4.0.0" 3627 + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" 3628 + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== 4008 3629 dependencies: 4009 - ip-regex "^2.1.0" 4010 - psl "^1.1.28" 3630 + psl "^1.1.33" 4011 3631 punycode "^2.1.1" 3632 + universalify "^0.1.2" 4012 3633 4013 3634 tr46@^2.0.2: 4014 3635 version "2.0.2" ··· 4017 3638 dependencies: 4018 3639 punycode "^2.1.1" 4019 3640 3641 + tr46@^2.1.0: 3642 + version "2.1.0" 3643 + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" 3644 + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== 3645 + dependencies: 3646 + punycode "^2.1.1" 3647 + 3648 + ts-interface-checker@^0.1.9: 3649 + version "0.1.13" 3650 + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" 3651 + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== 3652 + 4020 3653 tslib@^1.9.0: 4021 3654 version "1.13.0" 4022 3655 resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 4023 3656 integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 4024 3657 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 3658 type-check@~0.3.2: 4038 3659 version "0.3.2" 4039 3660 resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" ··· 4050 3671 version "0.11.0" 4051 3672 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 4052 3673 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 3674 4064 3675 typedarray-to-buffer@^3.1.5: 4065 3676 version "3.1.5" ··· 4091 3702 resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" 4092 3703 integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== 4093 3704 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= 3705 + universalify@^0.1.2: 3706 + version "0.1.2" 3707 + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 3708 + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 4123 3709 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== 3710 + util-deprecate@~1.0.1: 3711 + version "1.0.2" 3712 + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3713 + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 4133 3714 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== 3715 + uuid@8.1.0: 3716 + version "8.1.0" 3717 + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d" 3718 + integrity sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg== 4138 3719 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== 3720 + v8-to-istanbul@^8.0.0: 3721 + version "8.0.0" 3722 + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" 3723 + integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== 4143 3724 dependencies: 4144 3725 "@types/istanbul-lib-coverage" "^2.0.1" 4145 3726 convert-source-map "^1.6.0" ··· 4153 3734 spdx-correct "^3.0.0" 4154 3735 spdx-expression-parse "^3.0.0" 4155 3736 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= 3737 + vinyl-sourcemaps-apply@^0.2.0: 3738 + version "0.2.1" 3739 + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" 3740 + integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= 4160 3741 dependencies: 4161 - assert-plus "^1.0.0" 4162 - core-util-is "1.0.2" 4163 - extsprintf "^1.2.0" 3742 + source-map "^0.5.1" 3743 + 3744 + vinyl@2.x: 3745 + version "2.2.1" 3746 + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" 3747 + integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== 3748 + dependencies: 3749 + clone "^2.1.1" 3750 + clone-buffer "^1.0.0" 3751 + clone-stats "^1.0.0" 3752 + cloneable-readable "^1.0.0" 3753 + remove-trailing-separator "^1.0.1" 3754 + replace-ext "^1.0.0" 4164 3755 4165 3756 w3c-hr-time@^1.0.2: 4166 3757 version "1.0.2" ··· 4176 3767 dependencies: 4177 3768 xml-name-validator "^3.0.0" 4178 3769 4179 - walker@^1.0.7, walker@~1.0.5: 3770 + walker@^1.0.7: 4180 3771 version "1.0.7" 4181 3772 resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" 4182 3773 integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= 4183 3774 dependencies: 4184 3775 makeerror "1.0.x" 4185 3776 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 3777 webidl-conversions@^5.0.0: 4194 3778 version "5.0.0" 4195 3779 resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 4196 3780 integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 4197 3781 4198 - webidl-conversions@^6.0.0: 3782 + webidl-conversions@^6.1.0: 4199 3783 version "6.1.0" 4200 3784 resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 4201 3785 integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== ··· 4221 3805 tr46 "^2.0.2" 4222 3806 webidl-conversions "^5.0.0" 4223 3807 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= 3808 + whatwg-url@^8.5.0: 3809 + version "8.7.0" 3810 + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" 3811 + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== 3812 + dependencies: 3813 + lodash "^4.7.0" 3814 + tr46 "^2.1.0" 3815 + webidl-conversions "^6.1.0" 4228 3816 4229 3817 which-pm-runs@^1.0.0: 4230 3818 version "1.0.0" ··· 4238 3826 dependencies: 4239 3827 isexe "^2.0.0" 4240 3828 4241 - which@^2.0.1, which@^2.0.2: 3829 + which@^2.0.1: 4242 3830 version "2.0.2" 4243 3831 resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 4244 3832 integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== ··· 4259 3847 string-width "^4.1.0" 4260 3848 strip-ansi "^6.0.0" 4261 3849 3850 + wrap-ansi@^7.0.0: 3851 + version "7.0.0" 3852 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 3853 + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 3854 + dependencies: 3855 + ansi-styles "^4.0.0" 3856 + string-width "^4.1.0" 3857 + strip-ansi "^6.0.0" 3858 + 4262 3859 wrappy@1: 4263 3860 version "1.0.2" 4264 3861 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" ··· 4274 3871 signal-exit "^3.0.2" 4275 3872 typedarray-to-buffer "^3.1.5" 4276 3873 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== 3874 + ws@^7.4.6: 3875 + version "7.5.3" 3876 + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" 3877 + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== 4281 3878 4282 3879 xml-name-validator@^3.0.0: 4283 3880 version "3.0.0" ··· 4289 3886 resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 4290 3887 integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 4291 3888 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== 3889 + y18n@^5.0.5: 3890 + version "5.0.8" 3891 + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 3892 + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 4296 3893 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== 3894 + yaml@^1.10.0: 3895 + version "1.10.2" 3896 + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 3897 + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 4301 3898 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" 3899 + yargs-parser@^20.2.2: 3900 + version "20.2.9" 3901 + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 3902 + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 4309 3903 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== 3904 + yargs@^16.0.3: 3905 + version "16.2.0" 3906 + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 3907 + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 4314 3908 dependencies: 4315 - cliui "^6.0.0" 4316 - decamelize "^1.2.0" 4317 - find-up "^4.1.0" 4318 - get-caller-file "^2.0.1" 3909 + cliui "^7.0.2" 3910 + escalade "^3.1.1" 3911 + get-caller-file "^2.0.5" 4319 3912 require-directory "^2.1.1" 4320 - require-main-filename "^2.0.0" 4321 - set-blocking "^2.0.0" 4322 3913 string-width "^4.2.0" 4323 - which-module "^2.0.0" 4324 - y18n "^4.0.0" 4325 - yargs-parser "^18.1.1" 3914 + y18n "^5.0.5" 3915 + yargs-parser "^20.2.2" 3916 + 3917 + yocto-queue@^0.1.0: 3918 + version "0.1.0" 3919 + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 3920 + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==