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 <br /> 11 </div> 12 13 - Leveraging the power of sticky regexes and Babel code generation, `reghex` allows 14 you to code parsers quickly, by surrounding regular expressions with a regex-like 15 [DSL](https://en.wikipedia.org/wiki/Domain-specific_language). 16 ··· 30 npm install --save reghex 31 ``` 32 33 - ##### 2. Add the plugin to your Babel configuration (`.babelrc`, `babel.config.js`, or `package.json:babel`) 34 35 ```json 36 { ··· 40 41 Alternatively, you can set up [`babel-plugin-macros`](https://github.com/kentcdodds/babel-plugin-macros) and 42 import `reghex` from `"reghex/macro"` instead. 43 44 ##### 3. Have fun writing parsers! 45 46 ```js 47 - import match, { parse } from 'reghex'; 48 49 const name = match('name')` 50 ${/\w+/} ··· 69 read back their updated `regex.lastIndex`. 70 71 > **Note:** Sticky Regexes aren't natively 72 - > [supported in all versions of Internet Explorer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky#Browser_compatibility). `reghex` works around this by imitating its behaviour, which may decrease performance on IE11. 73 74 This primitive allows us to build up a parser from regexes that you pass when 75 authoring a parser function, also called a "matcher" in `reghex`. When `reghex` compiles ··· 99 100 ## Authoring Guide 101 102 - You can write "matchers" by importing the default import from `reghex` and 103 using it to write a matcher expression. 104 105 ```js 106 - import match from 'reghex'; 107 108 const name = match('name')` 109 ${/\w+/} 110 `; 111 ``` 112 113 - As can be seen above, the `match` function, which is what we've called the 114 - default import, is called with a "node name" and is then called as a tagged 115 - template. This template is our **parsing definition**. 116 117 `reghex` functions only with its Babel plugin, which will detect `match('name')` 118 and replace the entire tag with a parsing function, which may then look like ··· 161 Let's extend our original example; 162 163 ```js 164 - import match from 'reghex'; 165 166 const name = match('name')` 167 ${/\w+/} ··· 178 **nested abstract output**. 179 180 We can also see in this example that _outside_ of the regex interpolations, 181 - whitespaces and newlines don't matter. 182 183 ```js 184 import { parse } from 'reghex'; ··· 193 */ 194 ``` 195 196 ### Regex-like DSL 197 198 We've seen in the previous examples that matchers are authored using tagged ··· 200 `${/pattern/}`, or with other matchers `${name}`. 201 202 The tagged template syntax supports more ways to match these interpolations, 203 - using a regex-like Domain Specific Language. Unlike in regexes, whitespaces 204 - and newlines don't matter to make it easier to format and read matchers. 205 206 We can create **sequences** of matchers by adding multiple expressions in 207 a row. A matcher using `${/1/} ${/2/}` will attempt to match `1` and then `2` 208 in the parsed string. This is just one feature of the regex-like DSL. The 209 available operators are the following: 210 211 - | Operator | Example | Description | 212 - | -------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 213 - | `?` | `${/1/}?` | An **optional** may be used to make an interpolation optional. This will mean that the interpolation may or may not match. | 214 - | `*` | `${/1/}*` | A **star** can be used to match an arbitrary amount of interpolation or none at all. This will mean that the interpolation may repeat itself or may not be matched at all. | 215 - | `+` | `${/1/}+` | A **plus** is used like `*` and must match one or more times. When the matcher doesn't match, that's considered a failing case, since the match isn't optional. | 216 - | `\|` | `${/1/} \| ${/2/}` | An **alternation** can be used to match either one thing or another, falling back when the first interpolation fails. | 217 - | `()` | `(${/1/} ${/2/})+` | A **group** can be used apply one of the other operators to an entire group of interpolations. | 218 - | `(?: )` | `(?: ${/1/})` | A **non-capturing group** is like a regular group, but whatever the interpolations inside it will match, won't appear in the parser's output. | 219 - | `(?= )` | `(?= ${/1/})` | A **positive lookahead** will check whether interpolations match, and if so will continue the matcher without changing the input. If it matches it's essentially ignored. | 220 - | `(?! )` | `(?! ${/1/})` | A **negative lookahead** will check whether interpolations _don't_ match, and if so will continue the matcher without changing the input. If the interpolations do match the mathcer will be aborted. | 221 222 We can combine and compose these operators to create more complex matchers. 223 For instance, we can extend the original example to only allow a specific set ··· 262 parse(name)('tim'); // undefined 263 ``` 264 265 - Lastly, like with regexex `?`, `*`, and `+` may be used as "quantifiers". The first two 266 may also be optional and _not_ match their patterns without the matcher failing. 267 The `+` operator is used to match an interpolation _one or more_ times, while the 268 `*` operators may match _zero or more_ times. Let's use this to allow the `"!"` ··· 286 287 In the previous sections, we've seen that the **nodes** that `reghex` outputs are arrays containing 288 match strings or other nodes and have a special `tag` property with the node's type. 289 - We can **change this output** while we're parsing by passing a second function to our matcher definition. 290 291 ```js 292 const name = match('name', (x) => x[0])` ··· 300 second argument. This will change the matcher's output, which causes the parser to 301 now return a new output for this matcher. 302 303 - We can use this function creatively by outputting full AST nodes, maybe like the 304 - ones even that resemble Babel's output: 305 306 ```js 307 const identifier = match('identifier', (x) => ({ ··· 316 317 We've now entirely changed the output of the parser for this matcher. Given that each 318 matcher can change its output, we're free to change the parser's output entirely. 319 - By **returning a falsy** in this matcher, we can also change the matcher to not have 320 - matched, which would cause other matchers to treat it like a mismatch! 321 322 ```js 323 - import match, { parse } from 'reghex'; 324 325 const name = match('name')((x) => { 326 return x[0] !== 'tim' ? x : undefined; ··· 345 tag(['test'], 'node_name'); 346 // ["test", .tag = "node_name"] 347 ``` 348 349 **That's it! May the RegExp be ever in your favor.**
··· 10 <br /> 11 </div> 12 13 + Leveraging the power of sticky regexes and JS code generation, `reghex` allows 14 you to code parsers quickly, by surrounding regular expressions with a regex-like 15 [DSL](https://en.wikipedia.org/wiki/Domain-specific_language). 16 ··· 30 npm install --save reghex 31 ``` 32 33 + ##### 2. Add the plugin to your Babel configuration _(optional)_ 34 + 35 + In your `.babelrc`, `babel.config.js`, or `package.json:babel` add: 36 37 ```json 38 { ··· 42 43 Alternatively, you can set up [`babel-plugin-macros`](https://github.com/kentcdodds/babel-plugin-macros) and 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. 55 56 ##### 3. Have fun writing parsers! 57 58 ```js 59 + import { match, parse } from 'reghex'; 60 61 const name = match('name')` 62 ${/\w+/} ··· 81 read back their updated `regex.lastIndex`. 82 83 > **Note:** Sticky Regexes aren't natively 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. 85 86 This primitive allows us to build up a parser from regexes that you pass when 87 authoring a parser function, also called a "matcher" in `reghex`. When `reghex` compiles ··· 111 112 ## Authoring Guide 113 114 + You can write "matchers" by importing the `match` import from `reghex` and 115 using it to write a matcher expression. 116 117 ```js 118 + import { match } from 'reghex'; 119 120 const name = match('name')` 121 ${/\w+/} 122 `; 123 ``` 124 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**. 127 128 `reghex` functions only with its Babel plugin, which will detect `match('name')` 129 and replace the entire tag with a parsing function, which may then look like ··· 172 Let's extend our original example; 173 174 ```js 175 + import { match } from 'reghex'; 176 177 const name = match('name')` 178 ${/\w+/} ··· 189 **nested abstract output**. 190 191 We can also see in this example that _outside_ of the regex interpolations, 192 + whitespace and newlines don't matter. 193 194 ```js 195 import { parse } from 'reghex'; ··· 204 */ 205 ``` 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 + 225 ### Regex-like DSL 226 227 We've seen in the previous examples that matchers are authored using tagged ··· 229 `${/pattern/}`, or with other matchers `${name}`. 230 231 The tagged template syntax supports more ways to match these interpolations, 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. 234 235 We can create **sequences** of matchers by adding multiple expressions in 236 a row. A matcher using `${/1/} ${/2/}` will attempt to match `1` and then `2` 237 in the parsed string. This is just one feature of the regex-like DSL. The 238 available operators are the following: 239 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. | 259 260 We can combine and compose these operators to create more complex matchers. 261 For instance, we can extend the original example to only allow a specific set ··· 300 parse(name)('tim'); // undefined 301 ``` 302 303 + Lastly, like with regexes, `?`, `*`, and `+` may be used as "quantifiers". The first two 304 may also be optional and _not_ match their patterns without the matcher failing. 305 The `+` operator is used to match an interpolation _one or more_ times, while the 306 `*` operators may match _zero or more_ times. Let's use this to allow the `"!"` ··· 324 325 In the previous sections, we've seen that the **nodes** that `reghex` outputs are arrays containing 326 match strings or other nodes and have a special `tag` property with the node's type. 327 + We can **change this output** while we're parsing by passing a function to our matcher definition. 328 329 ```js 330 const name = match('name', (x) => x[0])` ··· 338 second argument. This will change the matcher's output, which causes the parser to 339 now return a new output for this matcher. 340 341 + We can use this function creatively by outputting full AST nodes, maybe even like the 342 + ones that resemble Babel's output: 343 344 ```js 345 const identifier = match('identifier', (x) => ({ ··· 354 355 We've now entirely changed the output of the parser for this matcher. Given that each 356 matcher can change its output, we're free to change the parser's output entirely. 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! 359 360 ```js 361 + import { match, parse } from 'reghex'; 362 363 const name = match('name')((x) => { 364 return x[0] !== 'tim' ? x : undefined; ··· 383 tag(['test'], 'node_name'); 384 // ["test", .tag = "node_name"] 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. 412 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 { 2 "name": "reghex", 3 - "version": "1.0.1", 4 "description": "The magical sticky regex-based parser generator 🧙", 5 "author": "Phil Pluckthun <phil@kitten.sh>", 6 "license": "MIT", 7 "main": "dist/reghex-core", 8 "module": "dist/reghex-core.mjs", 9 "source": "src/core.js", 10 "files": [ 11 "README.md", 12 "LICENSE.md", ··· 21 "require": "./dist/reghex-core.js" 22 }, 23 "./babel": { 24 - "import": "./dist/reghex-babel.mjs", 25 "require": "./dist/reghex-babel.js" 26 }, 27 "./macro": { 28 - "import": "./dist/reghex-macro.mjs", 29 "require": "./dist/reghex-macro.js" 30 }, 31 "./package.json": "./package.json" ··· 48 "url": "https://github.com/kitten/reghex/issues" 49 }, 50 "devDependencies": { 51 - "@babel/core": "7.9.6", 52 - "@babel/plugin-transform-modules-commonjs": "^7.9.6", 53 - "@babel/plugin-transform-object-assign": "^7.8.3", 54 "@rollup/plugin-buble": "^0.21.3", 55 - "@rollup/plugin-commonjs": "^11.1.0", 56 - "@rollup/plugin-node-resolve": "^7.1.3", 57 - "babel-jest": "^26.0.1", 58 - "babel-plugin-closure-elimination": "^1.3.1", 59 - "husky": "^4.2.5", 60 - "jest": "^26.0.1", 61 - "lint-staged": "^10.2.2", 62 "npm-run-all": "^4.1.5", 63 - "prettier": "^2.0.5", 64 "rimraf": "^3.0.2", 65 - "rollup": "^2.10.2", 66 - "rollup-plugin-babel": "^4.4.0" 67 }, 68 "prettier": { 69 "singleQuote": true ··· 79 "jest": { 80 "testEnvironment": "node", 81 "transform": { 82 - "\\.js$": "<rootDir>/scripts/jest-transform-esm.js" 83 } 84 } 85 }
··· 1 { 2 "name": "reghex", 3 + "version": "3.0.2", 4 "description": "The magical sticky regex-based parser generator 🧙", 5 "author": "Phil Pluckthun <phil@kitten.sh>", 6 "license": "MIT", 7 "main": "dist/reghex-core", 8 "module": "dist/reghex-core.mjs", 9 "source": "src/core.js", 10 + "sideEffects": false, 11 "files": [ 12 "README.md", 13 "LICENSE.md", ··· 22 "require": "./dist/reghex-core.js" 23 }, 24 "./babel": { 25 "require": "./dist/reghex-babel.js" 26 }, 27 "./macro": { 28 "require": "./dist/reghex-macro.js" 29 }, 30 "./package.json": "./package.json" ··· 47 "url": "https://github.com/kitten/reghex/issues" 48 }, 49 "devDependencies": { 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 "@rollup/plugin-buble": "^0.21.3", 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", 64 "npm-run-all": "^4.1.5", 65 + "prettier": "^2.3.2", 66 "rimraf": "^3.0.2", 67 + "rollup": "^2.56.3" 68 }, 69 "prettier": { 70 "singleQuote": true ··· 80 "jest": { 81 "testEnvironment": "node", 82 "transform": { 83 + "\\.js$": "@sucrase/jest-plugin" 84 } 85 } 86 }
+32 -19
rollup.config.js
··· 1 import commonjs from '@rollup/plugin-commonjs'; 2 import resolve from '@rollup/plugin-node-resolve'; 3 import buble from '@rollup/plugin-buble'; 4 - import babel from 'rollup-plugin-babel'; 5 6 const plugins = [ 7 commonjs({ ··· 18 transforms: { 19 unicodeRegExp: false, 20 dangerousForOf: true, 21 - dangerousTaggedTemplateString: true, 22 }, 23 - objectAssign: 'Object.assign', 24 exclude: 'node_modules/**', 25 }), 26 - babel({ 27 - babelrc: false, 28 - extensions: ['ts', 'tsx', 'js'], 29 - exclude: 'node_modules/**', 30 - presets: [], 31 - plugins: [ 32 - '@babel/plugin-transform-object-assign', 33 - 'babel-plugin-closure-elimination', 34 - ], 35 - }), 36 ]; 37 38 const output = (format = 'cjs', ext = '.js') => ({ ··· 47 freeze: false, 48 strict: false, 49 format, 50 }); 51 52 - export default { 53 - input: { 54 - core: './src/core.js', 55 - babel: './src/babel/plugin.js', 56 - macro: './src/babel/macro.js', 57 - }, 58 onwarn: () => {}, 59 external: () => false, 60 treeshake: { ··· 63 plugins, 64 output: [output('cjs', '.js'), output('esm', '.mjs')], 65 };
··· 1 import commonjs from '@rollup/plugin-commonjs'; 2 import resolve from '@rollup/plugin-node-resolve'; 3 import buble from '@rollup/plugin-buble'; 4 + import compiler from '@ampproject/rollup-plugin-closure-compiler'; 5 + 6 + import simplifyJSTags from './scripts/simplify-jstags-plugin.js'; 7 8 const plugins = [ 9 commonjs({ ··· 20 transforms: { 21 unicodeRegExp: false, 22 dangerousForOf: true, 23 + templateString: false, 24 }, 25 exclude: 'node_modules/**', 26 }), 27 ]; 28 29 const output = (format = 'cjs', ext = '.js') => ({ ··· 38 freeze: false, 39 strict: false, 40 format, 41 + plugins: [ 42 + simplifyJSTags(), 43 + compiler({ 44 + formatting: 'PRETTY_PRINT', 45 + compilation_level: 'SIMPLE_OPTIMIZATIONS', 46 + }), 47 + ], 48 }); 49 50 + const base = { 51 onwarn: () => {}, 52 external: () => false, 53 treeshake: { ··· 56 plugins, 57 output: [output('cjs', '.js'), output('esm', '.mjs')], 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 // Jest Snapshot v1, https://goo.gl/fbAQLP 2 3 exports[`works together with @babel/plugin-transform-modules-commonjs 1`] = ` 4 "\\"use strict\\"; 5 6 var _reghex = require(\\"reghex\\"); 7 8 - var _node_expression = (0, _reghex._pattern)(1), 9 - _node_expression2 = (0, _reghex._pattern)(2); 10 11 - const node = function _node(state) { 12 - var last_index = state.index; 13 - var match, 14 - node = []; 15 16 - if (match = (0, _reghex._exec)(state, _node_expression)) { 17 - node.push(match); 18 } else { 19 - state.index = last_index; 20 return; 21 } 22 23 - if (match = (0, _reghex._exec)(state, _node_expression2)) { 24 - node.push(match); 25 } else { 26 - state.index = last_index; 27 return; 28 } 29 30 - return (0, _reghex.tag)(node, 'node'); 31 };" 32 `; 33 34 exports[`works with local recursion 1`] = ` 35 - "import { tag, _exec, _pattern } from 'reghex'; 36 37 var _inner_expression = _pattern(/inner/); 38 39 - const inner = function _inner(state) { 40 - var last_index = state.index; 41 - var match, 42 - node = []; 43 44 - if (match = _exec(state, _inner_expression)) { 45 - node.push(match); 46 } else { 47 - state.index = last_index; 48 return; 49 } 50 51 - return tag(node, 'inner'); 52 }; 53 54 - const node = function _node(state) { 55 - var last_index = state.index; 56 - var match, 57 - node = []; 58 59 - if (match = inner(state)) { 60 - node.push(match); 61 } else { 62 - state.index = last_index; 63 return; 64 } 65 66 - return tag(node, 'node'); 67 };" 68 `; 69 70 exports[`works with non-capturing groups 1`] = ` 71 - "import { _exec, _pattern, tag as _tag } from 'reghex'; 72 73 var _node_expression = _pattern(1), 74 _node_expression2 = _pattern(2), 75 _node_expression3 = _pattern(3); 76 77 - const node = function _node(state) { 78 - var last_index = state.index; 79 - var match, 80 - node = []; 81 82 - if (match = _exec(state, _node_expression)) { 83 - node.push(match); 84 } else { 85 - state.index = last_index; 86 return; 87 } 88 89 - var length_0 = node.length; 90 91 - alternation_1: { 92 - block_1: { 93 - var index_1 = state.index; 94 95 - if (match = _exec(state, _node_expression2)) { 96 - node.push(match); 97 } else { 98 - node.length = length_0; 99 - state.index = index_1; 100 - break block_1; 101 } 102 103 - break alternation_1; 104 } 105 106 - loop_1: for (var iter_1 = 0; true; iter_1++) { 107 - var index_1 = state.index; 108 109 - if (!_exec(state, _node_expression3)) { 110 - if (iter_1) { 111 - state.index = index_1; 112 - break loop_1; 113 - } 114 115 - node.length = length_0; 116 - state.index = last_index; 117 - return; 118 } 119 } 120 } 121 122 - return _tag(node, 'node'); 123 };" 124 `; 125 126 exports[`works with standard features 1`] = ` 127 - "import { _exec, _pattern, tag as _tag } from \\"reghex\\"; 128 129 var _node_expression = _pattern(1), 130 _node_expression2 = _pattern(2), ··· 132 _node_expression4 = _pattern(4), 133 _node_expression5 = _pattern(5); 134 135 - const node = function _node(state) { 136 - var last_index = state.index; 137 - var match, 138 - node = []; 139 140 - block_0: { 141 - var index_0 = state.index; 142 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); 148 } 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; 156 } 157 - } 158 - 159 - return _tag(node, 'node'); 160 - } 161 162 - loop_0: for (var iter_0 = 0; true; iter_0++) { 163 - var index_0 = state.index; 164 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; 171 } 172 173 - state.index = last_index; 174 - return; 175 } 176 - } 177 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); 184 } else { 185 - node.length = length_0; 186 - state.index = index_0; 187 - break loop_0; 188 } 189 190 - var index_2 = state.index; 191 192 - if (match = _exec(state, _node_expression4)) { 193 - node.push(match); 194 - } else { 195 - state.index = index_2; 196 } 197 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; 204 } 205 } 206 207 - return _tag(node, 'node'); 208 };" 209 `; 210 211 exports[`works with transform functions 1`] = ` 212 - "import { _exec, _pattern, tag as _tag } from 'reghex'; 213 214 var _inner_transform = x => x; 215 216 - const first = function _inner(state) { 217 - var last_index = state.index; 218 - var match, 219 - node = []; 220 - return _inner_transform(_tag(node, 'inner')); 221 }; 222 223 const transform = x => x; 224 225 - const second = function _node(state) { 226 - var last_index = state.index; 227 - var match, 228 - node = []; 229 - return transform(_tag(node, 'node')); 230 };" 231 `;
··· 1 // Jest Snapshot v1, https://goo.gl/fbAQLP 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 + 66 exports[`works together with @babel/plugin-transform-modules-commonjs 1`] = ` 67 "\\"use strict\\"; 68 69 var _reghex = require(\\"reghex\\"); 70 71 + var _node_expression = (0, _reghex.__pattern)(1), 72 + _node_expression2 = (0, _reghex.__pattern)(2); 73 74 + const node = function (state) { 75 + var y1 = state.y, 76 + x1 = state.x; 77 + var node = []; 78 + var x; 79 80 + if ((x = _node_expression(state)) != null) { 81 + node.push(x); 82 } else { 83 + state.y = y1; 84 + state.x = x1; 85 return; 86 } 87 88 + if ((x = _node_expression2(state)) != null) { 89 + node.push(x); 90 } else { 91 + state.y = y1; 92 + state.x = x1; 93 return; 94 } 95 96 + if ('node') node.tag = 'node'; 97 + return node; 98 };" 99 `; 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 + 106 exports[`works with local recursion 1`] = ` 107 + "import { match as m, tag, __pattern as _pattern } from 'reghex'; 108 109 var _inner_expression = _pattern(/inner/); 110 111 + const inner = function (state) { 112 + var y1 = state.y, 113 + x1 = state.x; 114 + var node = []; 115 + var x; 116 117 + if ((x = _inner_expression(state)) != null) { 118 + node.push(x); 119 } else { 120 + state.y = y1; 121 + state.x = x1; 122 return; 123 } 124 125 + if ('inner') node.tag = 'inner'; 126 + return node; 127 }; 128 129 + const node = function (state) { 130 + var y1 = state.y, 131 + x1 = state.x; 132 + var node = []; 133 + var x; 134 135 + if ((x = inner(state)) != null) { 136 + node.push(x); 137 } else { 138 + state.y = y1; 139 + state.x = x1; 140 return; 141 } 142 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; 250 };" 251 `; 252 253 exports[`works with non-capturing groups 1`] = ` 254 + "import { match, __pattern as _pattern } from 'reghex'; 255 256 var _node_expression = _pattern(1), 257 _node_expression2 = _pattern(2), 258 _node_expression3 = _pattern(3); 259 260 + const node = function (state) { 261 + var y1 = state.y, 262 + x1 = state.x; 263 + var node = []; 264 + var x; 265 266 + if ((x = _node_expression(state)) != null) { 267 + node.push(x); 268 } else { 269 + state.y = y1; 270 + state.x = x1; 271 return; 272 } 273 274 + var ln2 = node.length; 275 276 + alt_3: { 277 + block_3: { 278 + var y3 = state.y, 279 + x3 = state.x; 280 281 + if ((x = _node_expression2(state)) != null) { 282 + node.push(x); 283 } else { 284 + state.y = y3; 285 + state.x = x3; 286 + node.length = ln2; 287 + break block_3; 288 } 289 290 + break alt_3; 291 } 292 293 + if ((x = _node_expression3(state)) == null) { 294 + state.y = y1; 295 + state.x = x1; 296 + node.length = ln2; 297 + return; 298 + } 299 300 + group_3: for (;;) { 301 + var y3 = state.y, 302 + x3 = state.x; 303 304 + if ((x = _node_expression3(state)) == null) { 305 + state.y = y3; 306 + state.x = x3; 307 + break group_3; 308 } 309 } 310 } 311 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; 354 };" 355 `; 356 357 exports[`works with standard features 1`] = ` 358 + "import { match, __pattern as _pattern } from \\"reghex\\"; 359 360 var _node_expression = _pattern(1), 361 _node_expression2 = _pattern(2), ··· 363 _node_expression4 = _pattern(4), 364 _node_expression5 = _pattern(5); 365 366 + const node = function (state) { 367 + var y1 = state.y, 368 + x1 = state.x; 369 + var node = []; 370 + var x; 371 372 + alt_2: { 373 + block_2: { 374 + var y2 = state.y, 375 + x2 = state.x; 376 377 + if ((x = _node_expression(state)) != null) { 378 + node.push(x); 379 } else { 380 + state.y = y2; 381 + state.x = x2; 382 + break block_2; 383 } 384 385 + group_2: for (;;) { 386 + var y2 = state.y, 387 + x2 = state.x; 388 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 + } 396 } 397 398 + break alt_2; 399 } 400 401 + if ((x = _node_expression2(state)) != null) { 402 + node.push(x); 403 } else { 404 + state.y = y1; 405 + state.x = x1; 406 + return; 407 } 408 409 + group_2: for (;;) { 410 + var y2 = state.y, 411 + x2 = state.x; 412 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 + } 420 } 421 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 + } 454 } 455 } 456 457 + if ('node') node.tag = 'node'; 458 + return node; 459 };" 460 `; 461 462 exports[`works with transform functions 1`] = ` 463 + "import { match, __pattern as _pattern } from 'reghex'; 464 465 var _inner_transform = x => x; 466 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); 474 }; 475 476 const transform = x => x; 477 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); 485 };" 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 import { createMacro } from 'babel-plugin-macros'; 2 import { makeHelpers } from './transform'; 3 4 - function reghexMacro({ references, babel: { types: t } }) { 5 - const helpers = makeHelpers(t); 6 const defaultRefs = references.default || []; 7 8 defaultRefs.forEach((ref) => {
··· 1 import { createMacro } from 'babel-plugin-macros'; 2 import { makeHelpers } from './transform'; 3 4 + function reghexMacro({ references, babel }) { 5 + const helpers = makeHelpers(babel); 6 const defaultRefs = references.default || []; 7 8 defaultRefs.forEach((ref) => {
+8 -3
src/babel/plugin.js
··· 1 import { makeHelpers } from './transform'; 2 3 - export default function reghexPlugin({ types }) { 4 let helpers; 5 6 return { 7 name: 'reghex', 8 visitor: { 9 Program() { 10 - helpers = makeHelpers(types); 11 }, 12 ImportDeclaration(path) { 13 helpers.updateImport(path); 14 }, 15 TaggedTemplateExpression(path) { 16 if (helpers.isMatch(path) && helpers.getMatchImport(path)) { 17 - helpers.transformMatch(path); 18 } 19 }, 20 },
··· 1 import { makeHelpers } from './transform'; 2 3 + export default function reghexPlugin(babel, opts = {}) { 4 let helpers; 5 6 return { 7 name: 'reghex', 8 visitor: { 9 Program() { 10 + helpers = makeHelpers(babel); 11 }, 12 ImportDeclaration(path) { 13 + if (opts.codegen === false) return; 14 helpers.updateImport(path); 15 }, 16 TaggedTemplateExpression(path) { 17 if (helpers.isMatch(path) && helpers.getMatchImport(path)) { 18 + if (opts.codegen === false) { 19 + helpers.minifyMatch(path); 20 + } else { 21 + helpers.transformMatch(path); 22 + } 23 } 24 }, 25 },
+83 -7
src/babel/plugin.test.js
··· 3 4 it('works with standard features', () => { 5 const code = ` 6 - import match from 'reghex/macro'; 7 8 const node = match('node')\` 9 \${1}+ | \${2}+ (\${3} ( \${4}? \${5} ) )* ··· 16 ).toMatchSnapshot(); 17 }); 18 19 it('works with local recursion', () => { 20 // NOTE: A different default name is allowed 21 const code = ` 22 - import match_rec, { tag } from 'reghex'; 23 24 - const inner = match_rec('inner')\` 25 \${/inner/} 26 \`; 27 28 - const node = match_rec('node')\` 29 \${inner} 30 \`; 31 `; ··· 38 39 it('works with transform functions', () => { 40 const code = ` 41 - import match from 'reghex'; 42 43 const first = match('inner', x => x)\`\`; 44 ··· 54 55 it('works with non-capturing groups', () => { 56 const code = ` 57 - import match from 'reghex'; 58 59 const node = match('node')\` 60 \${1} (\${2} | (?: \${3})+) ··· 69 70 it('works together with @babel/plugin-transform-modules-commonjs', () => { 71 const code = ` 72 - import match from 'reghex'; 73 74 const node = match('node')\` 75 \${1} \${2}
··· 3 4 it('works with standard features', () => { 5 const code = ` 6 + import { match } from 'reghex/macro'; 7 8 const node = match('node')\` 9 \${1}+ | \${2}+ (\${3} ( \${4}? \${5} ) )* ··· 16 ).toMatchSnapshot(); 17 }); 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 + 76 it('works with local recursion', () => { 77 // NOTE: A different default name is allowed 78 const code = ` 79 + import { match as m, tag } from 'reghex'; 80 81 + const inner = m('inner')\` 82 \${/inner/} 83 \`; 84 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')\` 105 \${inner} 106 \`; 107 `; ··· 114 115 it('works with transform functions', () => { 116 const code = ` 117 + import { match } from 'reghex'; 118 119 const first = match('inner', x => x)\`\`; 120 ··· 130 131 it('works with non-capturing groups', () => { 132 const code = ` 133 + import { match } from 'reghex'; 134 135 const node = match('node')\` 136 \${1} (\${2} | (?: \${3})+) ··· 145 146 it('works together with @babel/plugin-transform-modules-commonjs', () => { 147 const code = ` 148 + import { match } from 'reghex'; 149 150 const node = match('node')\` 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 { parse } from '../parser'; 2 - import { SharedIds } from './sharedIds'; 3 - import { initGenerator, RootNode } from './generator'; 4 5 - export function makeHelpers(t) { 6 const importSourceRe = /reghex$|^reghex\/macro/; 7 const importName = 'reghex'; 8 - const ids = new SharedIds(t); 9 - initGenerator(ids, t); 10 11 let _hasUpdatedImport = false; 12 13 return { 14 /** Adds the reghex import declaration to the Program scope */ ··· 17 if (!importSourceRe.test(path.node.source.value)) return; 18 _hasUpdatedImport = true; 19 20 - const defaultSpecifierIndex = path.node.specifiers.findIndex((node) => { 21 - return t.isImportDefaultSpecifier(node); 22 - }); 23 - 24 - if (defaultSpecifierIndex > -1) { 25 - path.node.specifiers.splice(defaultSpecifierIndex, 1); 26 - } 27 - 28 if (path.node.source.value !== importName) { 29 path.node.source = t.stringLiteral(importName); 30 } 31 32 path.node.specifiers.push( 33 - t.importSpecifier( 34 - (ids.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 - ) 41 ); 42 43 const tagImport = path.node.specifiers.find((node) => { 44 - return t.isImportSpecifier(node) && node.imported.name === 'tag'; 45 }); 46 if (!tagImport) { 47 path.node.specifiers.push( 48 t.importSpecifier( 49 - (ids.tagId = path.scope.generateUidIdentifier('tag')), 50 - t.identifier('tag') 51 ) 52 ); 53 } else { 54 - ids.tagId = tagImport.imported; 55 } 56 }, 57 ··· 82 binding.kind !== 'module' || 83 !t.isImportDeclaration(binding.path.parent) || 84 !importSourceRe.test(binding.path.parent.source.value) || 85 - !t.isImportDefaultSpecifier(binding.path.node) 86 ) { 87 return null; 88 } ··· 94 getMatchName(path) { 95 t.assertTaggedTemplateExpression(path.node); 96 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); 104 } 105 }, 106 107 /** Given a match, hoists its expressions in front of the match's statement */ 108 - _hoistExpressions(path) { 109 t.assertTaggedTemplateExpression(path.node); 110 111 const variableDeclarators = []; 112 const matchName = this.getMatchName(path); 113 114 const hoistedExpressions = path.node.quasi.expressions.map( 115 - (expression) => { 116 if ( 117 - t.isIdentifier(expression) && 118 - path.scope.hasBinding(expression.name) 119 ) { 120 const binding = path.scope.getBinding(expression.name); 121 if (t.isVariableDeclarator(binding.path.node)) { 122 const matchPath = binding.path.get('init'); 123 - if (this.isMatch(matchPath)) return expression; 124 } 125 } 126 127 const id = path.scope.generateUidIdentifier( 128 - `${matchName}_expression` 129 ); 130 variableDeclarators.push( 131 t.variableDeclarator( 132 id, 133 - t.callExpression(ids.pattern, [expression]) 134 ) 135 ); 136 return id; 137 } 138 ); ··· 143 .insertBefore(t.variableDeclaration('var', variableDeclarators)); 144 } 145 146 - return hoistedExpressions; 147 }, 148 149 - _hoistTransform(path) { 150 const transformNode = path.node.tag.arguments[1]; 151 if (!transformNode) return null; 152 - if (t.isIdentifier(transformNode)) return transformNode; 153 154 const matchName = this.getMatchName(path); 155 const id = path.scope.generateUidIdentifier(`${matchName}_transform`); ··· 158 path 159 .getStatementParent() 160 .insertBefore(t.variableDeclaration('var', [declarator])); 161 - return id; 162 }, 163 164 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 - ); 171 } 172 173 - const matchName = this.getMatchName(path); 174 - const nameNode = path.node.tag.arguments[0]; 175 const quasis = path.node.quasi.quasis.map((x) => x.value.cooked); 176 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); 193 194 let ast; 195 try { ··· 199 throw path.get('quasi').buildCodeFrameError(error.message); 200 } 201 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 209 ); 210 - path.replaceWith(matchFunction); 211 }, 212 }; 213 }
··· 1 + import { astRoot } from '../codegen'; 2 import { parse } from '../parser'; 3 4 + export function makeHelpers({ types: t, template }) { 5 + const regexPatternsRe = /^[()\[\]|.+?*]|[^\\][()\[\]|.+?*$^]|\\[wdsWDS]/; 6 const importSourceRe = /reghex$|^reghex\/macro/; 7 const importName = 'reghex'; 8 9 let _hasUpdatedImport = false; 10 + let _matchId = t.identifier('match'); 11 + let _patternId = t.identifier('__pattern'); 12 + 13 + const _hoistedExpressions = new Map(); 14 15 return { 16 /** Adds the reghex import declaration to the Program scope */ ··· 19 if (!importSourceRe.test(path.node.source.value)) return; 20 _hasUpdatedImport = true; 21 22 if (path.node.source.value !== importName) { 23 path.node.source = t.stringLiteral(importName); 24 } 25 26 + _patternId = path.scope.generateUidIdentifier('_pattern'); 27 path.node.specifiers.push( 28 + t.importSpecifier(_patternId, t.identifier('__pattern')) 29 ); 30 31 const tagImport = path.node.specifiers.find((node) => { 32 + return t.isImportSpecifier(node) && node.imported.name === 'match'; 33 }); 34 + 35 if (!tagImport) { 36 path.node.specifiers.push( 37 t.importSpecifier( 38 + (_matchId = path.scope.generateUidIdentifier('match')), 39 + t.identifier('match') 40 ) 41 ); 42 } else { 43 + _matchId = tagImport.imported; 44 } 45 }, 46 ··· 71 binding.kind !== 'module' || 72 !t.isImportDeclaration(binding.path.parent) || 73 !importSourceRe.test(binding.path.parent.source.value) || 74 + !t.isImportSpecifier(binding.path.node) 75 ) { 76 return null; 77 } ··· 83 getMatchName(path) { 84 t.assertTaggedTemplateExpression(path.node); 85 const nameArgumentPath = path.get('tag.arguments.0'); 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 + } 93 } 94 + 95 + return path.scope.generateUidIdentifierBasedOnNode(path.node); 96 }, 97 98 /** Given a match, hoists its expressions in front of the match's statement */ 99 + _prepareExpressions(path) { 100 t.assertTaggedTemplateExpression(path.node); 101 102 const variableDeclarators = []; 103 const matchName = this.getMatchName(path); 104 105 const hoistedExpressions = path.node.quasi.expressions.map( 106 + (expression, i) => { 107 if ( 108 + t.isArrowFunctionExpression(expression) && 109 + t.isIdentifier(expression.body) 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) { 127 const binding = path.scope.getBinding(expression.name); 128 if (t.isVariableDeclarator(binding.path.node)) { 129 const matchPath = binding.path.get('init'); 130 + if (this.isMatch(matchPath)) { 131 + return expression; 132 + } else if (_hoistedExpressions.has(expression.name)) { 133 + return t.identifier(_hoistedExpressions.get(expression.name)); 134 + } 135 } 136 } 137 138 const id = path.scope.generateUidIdentifier( 139 + isBindingExpression 140 + ? `${expression.name}_expression` 141 + : `${matchName}_expression` 142 ); 143 + 144 variableDeclarators.push( 145 t.variableDeclarator( 146 id, 147 + t.callExpression(t.identifier(_patternId.name), [expression]) 148 ) 149 ); 150 + 151 + if (t.isIdentifier(expression)) { 152 + _hoistedExpressions.set(expression.name, id.name); 153 + } 154 + 155 return id; 156 } 157 ); ··· 162 .insertBefore(t.variableDeclaration('var', variableDeclarators)); 163 } 164 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 + }); 179 }, 180 181 + _prepareTransform(path) { 182 const transformNode = path.node.tag.arguments[1]; 183 + 184 if (!transformNode) return null; 185 + if (t.isIdentifier(transformNode)) return transformNode.name; 186 187 const matchName = this.getMatchName(path); 188 const id = path.scope.generateUidIdentifier(`${matchName}_transform`); ··· 191 path 192 .getStatementParent() 193 .insertBefore(t.variableDeclaration('var', [declarator])); 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 + ); 211 }, 212 213 transformMatch(path) { 214 + let name = path.node.tag.arguments[0]; 215 + if (!name) { 216 + name = t.nullLiteral(); 217 } 218 219 const quasis = path.node.quasi.quasis.map((x) => x.value.cooked); 220 221 + const expressions = this._prepareExpressions(path); 222 + const transform = this._prepareTransform(path); 223 224 let ast; 225 try { ··· 229 throw path.get('quasi').buildCodeFrameError(error.message); 230 } 231 232 + const code = astRoot(ast, '%%name%%', transform && '%%transform%%'); 233 + 234 + path.replaceWith( 235 + template.expression(code)(transform ? { name, transform } : { name }) 236 ); 237 }, 238 }; 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 const isStickySupported = typeof /./g.sticky === 'boolean'; 2 3 - export const _pattern = (input) => { 4 - if (typeof input === 'function') return input; 5 6 - const source = typeof input !== 'string' ? input.source : input; 7 - return isStickySupported 8 - ? new RegExp(source, 'y') 9 - : new RegExp(`^(?:${source})`, 'g'); 10 }; 11 12 - export const _exec = (state, pattern) => { 13 - if (typeof pattern === 'function') return pattern(); 14 15 - let match; 16 - if (isStickySupported) { 17 - pattern.lastIndex = state.index; 18 - match = pattern.exec(state.input); 19 - state.index = pattern.lastIndex; 20 } else { 21 - pattern.lastIndex = 0; 22 - match = pattern.exec(state.input.slice(state.input)); 23 - state.index += pattern.lastIndex; 24 } 25 26 - return match && match[0]; 27 - }; 28 29 - export const tag = (array, tag) => { 30 - array.tag = tag; 31 - return array; 32 }; 33 34 - export const parse = (pattern) => (input) => { 35 - const state = { input, index: 0 }; 36 - return pattern(state); 37 }; 38 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.' 43 ); 44 };
··· 1 + import { astRoot } from './codegen'; 2 + import { parse as parseDSL } from './parser'; 3 + 4 const isStickySupported = typeof /./g.sticky === 'boolean'; 5 6 + const execLambda = (pattern) => { 7 + if (pattern.length) return pattern; 8 + return (state) => pattern()(state); 9 + }; 10 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 + }; 22 }; 23 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 + } 40 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); 52 } else { 53 + return execRegex(input); 54 } 55 + }; 56 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 + } 68 69 + return match; 70 }; 71 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); 76 }; 77 78 + export const match = (name, transform) => (quasis, ...expressions) => { 79 + const ast = parseDSL( 80 + quasis, 81 + expressions.map((_, i) => ({ id: `_${i}` })) 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)); 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 export const parse = (quasis, expressions) => { 2 let quasiIndex = 0; 3 let stackIndex = 0; 4 5 const sequenceStack = []; 6 - const rootSequence = { 7 - type: 'sequence', 8 - sequence: [], 9 - alternation: null, 10 - }; 11 12 let currentGroup = null; 13 let lastMatch; 14 let currentSequence = rootSequence; 15 16 - while (stackIndex < quasis.length + expressions.length) { 17 if (stackIndex % 2 !== 0) { 18 const expression = expressions[stackIndex++ >> 1]; 19 - 20 - currentSequence.sequence.push({ 21 - type: 'expression', 22 - expression, 23 - quantifier: null, 24 - }); 25 } 26 27 const quasi = quasis[stackIndex >> 1]; 28 - while (quasiIndex < quasi.length) { 29 const char = quasi[quasiIndex++]; 30 - 31 if (char === ' ' || char === '\t' || char === '\r' || char === '\n') { 32 - continue; 33 - } else if (char === '|' && currentSequence.sequence.length > 0) { 34 - currentSequence = currentSequence.alternation = { 35 - type: 'sequence', 36 - sequence: [], 37 - alternation: null, 38 - }; 39 - 40 - continue; 41 - } else if (char === ')' && currentSequence.sequence.length > 0) { 42 currentGroup = null; 43 currentSequence = sequenceStack.pop(); 44 - if (currentSequence) continue; 45 } else if (char === '(') { 46 - currentGroup = { 47 - type: 'group', 48 - sequence: { 49 - type: 'sequence', 50 - sequence: [], 51 - alternation: null, 52 - }, 53 - capturing: true, 54 - lookahead: null, 55 - quantifier: null, 56 - }; 57 - 58 sequenceStack.push(currentSequence); 59 - currentSequence.sequence.push(currentGroup); 60 currentSequence = currentGroup.sequence; 61 - continue; 62 - } else if ( 63 - char === '?' && 64 - currentSequence.sequence.length === 0 && 65 - currentGroup 66 - ) { 67 - const nextChar = quasi[quasiIndex++]; 68 - if (!nextChar) { 69 - throw new SyntaxError('Unexpected end of input after ' + char); 70 - } 71 - 72 - if (nextChar === ':') { 73 - currentGroup.capturing = false; 74 - continue; 75 - } else if (nextChar === '=') { 76 - currentGroup.capturing = false; 77 - currentGroup.lookahead = 'positive'; 78 - continue; 79 - } else if (nextChar === '!') { 80 - currentGroup.capturing = false; 81 - currentGroup.lookahead = 'negative'; 82 - continue; 83 } 84 } else if ( 85 (char === '?' || char === '+' || char === '*') && 86 - (lastMatch = 87 - currentSequence.sequence[currentSequence.sequence.length - 1]) 88 ) { 89 - if (lastMatch.type === 'group' && lastMatch.lookahead) { 90 - throw new SyntaxError('Unexpected quantifier on lookahead group'); 91 - } 92 - 93 - lastMatch.quantifier = { 94 - type: 'quantifier', 95 - required: char === '+', 96 - singular: char === '?', 97 - }; 98 - 99 - continue; 100 } 101 - 102 - throw new SyntaxError('Unexpected token ' + char); 103 } 104 - 105 - stackIndex++; 106 - quasiIndex = 0; 107 } 108 109 return rootSequence;
··· 1 + const syntaxError = (char) => { 2 + throw new SyntaxError('Unexpected token "' + char + '"'); 3 + }; 4 + 5 export const parse = (quasis, expressions) => { 6 let quasiIndex = 0; 7 let stackIndex = 0; 8 9 const sequenceStack = []; 10 + const rootSequence = []; 11 12 let currentGroup = null; 13 let lastMatch; 14 let currentSequence = rootSequence; 15 + let capture; 16 17 + for ( 18 + let quasiIndex = 0, stackIndex = 0; 19 + stackIndex < quasis.length + expressions.length; 20 + stackIndex++ 21 + ) { 22 if (stackIndex % 2 !== 0) { 23 const expression = expressions[stackIndex++ >> 1]; 24 + currentSequence.push({ expression, capture }); 25 + capture = undefined; 26 } 27 28 const quasi = quasis[stackIndex >> 1]; 29 + for (quasiIndex = 0; quasiIndex < quasi.length; ) { 30 const char = quasi[quasiIndex++]; 31 if (char === ' ' || char === '\t' || char === '\r' || char === '\n') { 32 + } else if (char === '|' && currentSequence.length) { 33 + currentSequence = currentSequence.alternation = []; 34 + } else if (char === ')' && currentSequence.length) { 35 currentGroup = null; 36 currentSequence = sequenceStack.pop(); 37 + if (!currentSequence) syntaxError(char); 38 } else if (char === '(') { 39 sequenceStack.push(currentSequence); 40 + currentSequence.push((currentGroup = { sequence: [], capture })); 41 currentSequence = currentGroup.sequence; 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); 54 } 55 } else if ( 56 (char === '?' || char === '+' || char === '*') && 57 + (lastMatch = currentSequence[currentSequence.length - 1]) 58 ) { 59 + lastMatch.quantifier = char; 60 + } else { 61 + syntaxError(char); 62 } 63 } 64 } 65 66 return rootSequence;
+86 -118
src/parser.test.js
··· 2 3 const parseTag = (quasis, ...expressions) => parse(quasis, expressions); 4 5 - it('supports parsing expressions', () => { 6 - expect(parseTag`${1}`).toEqual({ 7 - type: 'sequence', 8 - sequence: [ 9 - { 10 - type: 'expression', 11 - expression: 1, 12 - quantifier: null, 13 - }, 14 - ], 15 - alternation: null, 16 - }); 17 - }); 18 - 19 it('supports parsing expressions with quantifiers', () => { 20 let ast; 21 22 ast = parseTag`${1}?`; 23 - expect(ast).toHaveProperty('sequence.0.type', 'expression'); 24 - expect(ast).toHaveProperty('sequence.0.quantifier', { 25 - type: 'quantifier', 26 - required: false, 27 - singular: true, 28 - }); 29 30 ast = parseTag`${1}+`; 31 - expect(ast).toHaveProperty('sequence.0.type', 'expression'); 32 - expect(ast).toHaveProperty('sequence.0.quantifier', { 33 - type: 'quantifier', 34 - required: true, 35 - singular: false, 36 - }); 37 38 ast = parseTag`${1}*`; 39 - expect(ast).toHaveProperty('sequence.0.type', 'expression'); 40 - expect(ast).toHaveProperty('sequence.0.quantifier', { 41 - type: 'quantifier', 42 - required: false, 43 - singular: false, 44 - }); 45 }); 46 47 it('supports top-level alternations', () => { 48 let ast; 49 50 ast = parseTag`${1} | ${2}`; 51 - expect(ast).toHaveProperty('sequence.length', 1); 52 - expect(ast).toHaveProperty('sequence.0.type', 'expression'); 53 - expect(ast).toHaveProperty('sequence.0.expression', 1); 54 - expect(ast).toHaveProperty('alternation.type', 'sequence'); 55 - expect(ast).toHaveProperty('alternation.sequence.0.expression', 2); 56 57 ast = parseTag`${1}? | ${2}?`; 58 - expect(ast).toHaveProperty('sequence.0.quantifier.type', 'quantifier'); 59 - expect(ast).toHaveProperty( 60 - 'alternation.sequence.0.quantifier.type', 61 - 'quantifier' 62 - ); 63 }); 64 65 it('supports groups with quantifiers', () => { 66 let ast; 67 68 ast = parseTag`(${1} ${2})`; 69 - expect(ast).toHaveProperty('sequence.length', 1); 70 - expect(ast).toHaveProperty('sequence.0.type', 'group'); 71 - expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 2); 72 - expect(ast).toHaveProperty('sequence.0.sequence.sequence.0.expression', 1); 73 - expect(ast).toHaveProperty('sequence.0.sequence.sequence.1.expression', 2); 74 75 ast = parseTag`(${1} ${2}?)?`; 76 - expect(ast).toHaveProperty('sequence.length', 1); 77 - expect(ast).toHaveProperty('sequence.0.type', 'group'); 78 - expect(ast).toHaveProperty('sequence.0.quantifier.type', 'quantifier'); 79 - expect(ast).toHaveProperty('sequence.0.sequence.sequence.0.quantifier', null); 80 - expect(ast).toHaveProperty( 81 - 'sequence.0.sequence.sequence.1.quantifier.type', 82 - 'quantifier' 83 - ); 84 }); 85 86 - it('supports non-capturing groups', () => { 87 - const ast = parseTag`(?: ${1})`; 88 - expect(ast).toHaveProperty('sequence.length', 1); 89 - expect(ast).toHaveProperty('sequence.0.type', 'group'); 90 - expect(ast).toHaveProperty('sequence.0.capturing', false); 91 - expect(ast).toHaveProperty('sequence.0.lookahead', null); 92 - expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1); 93 - }); 94 95 - it('supports positive lookahead groups', () => { 96 - const ast = parseTag`(?= ${1})`; 97 - expect(ast).toHaveProperty('sequence.length', 1); 98 - expect(ast).toHaveProperty('sequence.0.type', 'group'); 99 - expect(ast).toHaveProperty('sequence.0.capturing', false); 100 - expect(ast).toHaveProperty('sequence.0.lookahead', 'positive'); 101 - expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1); 102 }); 103 104 - it('supports negative lookahead groups', () => { 105 - const ast = parseTag`(?! ${1})`; 106 - expect(ast).toHaveProperty('sequence.length', 1); 107 - expect(ast).toHaveProperty('sequence.0.type', 'group'); 108 - expect(ast).toHaveProperty('sequence.0.capturing', false); 109 - expect(ast).toHaveProperty('sequence.0.lookahead', 'negative'); 110 - expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1); 111 }); 112 113 - it('throws when a quantifier is combined with a lookahead', () => { 114 - expect(() => parseTag`(?! ${1})+`).toThrow(); 115 - expect(() => parseTag`(?! ${1})?`).toThrow(); 116 - expect(() => parseTag`(?! ${1})*`).toThrow(); 117 }); 118 119 it('supports groups with alternates', () => { 120 expect(parseTag`(${1} | ${2}) ${3}`).toMatchInlineSnapshot(` 121 - Object { 122 - "alternation": null, 123 - "sequence": Array [ 124 - Object { 125 - "capturing": true, 126 - "lookahead": null, 127 - "quantifier": null, 128 - "sequence": Object { 129 - "alternation": Object { 130 - "alternation": null, 131 - "sequence": Array [ 132 - Object { 133 - "expression": 2, 134 - "quantifier": null, 135 - "type": "expression", 136 - }, 137 - ], 138 - "type": "sequence", 139 - }, 140 - "sequence": Array [ 141 - Object { 142 - "expression": 1, 143 - "quantifier": null, 144 - "type": "expression", 145 - }, 146 - ], 147 - "type": "sequence", 148 }, 149 - "type": "group", 150 - }, 151 - Object { 152 - "expression": 3, 153 - "quantifier": null, 154 - "type": "expression", 155 - }, 156 - ], 157 - "type": "sequence", 158 - } 159 `); 160 });
··· 2 3 const parseTag = (quasis, ...expressions) => parse(quasis, expressions); 4 5 it('supports parsing expressions with quantifiers', () => { 6 let ast; 7 8 ast = parseTag`${1}?`; 9 + expect(ast).toHaveProperty('0.quantifier', '?'); 10 11 ast = parseTag`${1}+`; 12 + expect(ast).toHaveProperty('0.quantifier', '+'); 13 14 ast = parseTag`${1}*`; 15 + expect(ast).toHaveProperty('0.quantifier', '*'); 16 }); 17 18 it('supports top-level alternations', () => { 19 let ast; 20 21 ast = parseTag`${1} | ${2}`; 22 + expect(ast).toHaveProperty('length', 1); 23 + expect(ast).toHaveProperty('0.expression', 1); 24 + expect(ast).toHaveProperty('alternation.0.expression', 2); 25 26 ast = parseTag`${1}? | ${2}?`; 27 + expect(ast).toHaveProperty('0.quantifier', '?'); 28 }); 29 30 it('supports groups with quantifiers', () => { 31 let ast; 32 33 ast = parseTag`(${1} ${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); 38 39 ast = parseTag`(${1} ${2}?)?`; 40 + expect(ast).toHaveProperty('length', 1); 41 + expect(ast).toHaveProperty('0.quantifier', '?'); 42 + expect(ast).toHaveProperty('0.sequence.0.quantifier', undefined); 43 }); 44 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 + }); 63 64 + it('fails on invalid usage', () => { 65 + expect(() => parseTag`${1} : ${2}`).toThrow(); 66 + expect(() => parseTag`${1} :|${2}`).toThrow(); 67 + }); 68 }); 69 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 + }); 88 }); 89 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 + }); 108 }); 109 110 it('supports groups with alternates', () => { 111 expect(parseTag`(${1} | ${2}) ${3}`).toMatchInlineSnapshot(` 112 + Array [ 113 + Object { 114 + "capture": undefined, 115 + "sequence": Array [ 116 + Object { 117 + "capture": undefined, 118 + "expression": 1, 119 }, 120 + ], 121 + }, 122 + Object { 123 + "capture": undefined, 124 + "expression": 3, 125 + }, 126 + ] 127 `); 128 });
+1463 -1868
yarn.lock
··· 2 # yarn lockfile v1 3 4 5 "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": 6 version "7.8.3" 7 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" ··· 9 dependencies: 10 "@babel/highlight" "^7.8.3" 11 12 - "@babel/core@7.9.6", "@babel/core@^7.1.0", "@babel/core@^7.7.5": 13 version "7.9.6" 14 resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" 15 integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== ··· 31 semver "^5.4.1" 32 source-map "^0.5.0" 33 34 "@babel/generator@^7.9.6": 35 version "7.9.6" 36 resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" ··· 41 lodash "^4.17.13" 42 source-map "^0.5.0" 43 44 "@babel/helper-function-name@^7.9.5": 45 version "7.9.5" 46 resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" ··· 50 "@babel/template" "^7.8.3" 51 "@babel/types" "^7.9.5" 52 53 "@babel/helper-get-function-arity@^7.8.3": 54 version "7.8.3" 55 resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" 56 integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== 57 dependencies: 58 "@babel/types" "^7.8.3" 59 60 "@babel/helper-member-expression-to-functions@^7.8.3": 61 version "7.8.3" ··· 64 dependencies: 65 "@babel/types" "^7.8.3" 66 67 - "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": 68 version "7.8.3" 69 resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" 70 integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== 71 dependencies: 72 "@babel/types" "^7.8.3" 73 74 "@babel/helper-module-transforms@^7.9.0": 75 version "7.9.0" 76 resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" ··· 84 "@babel/types" "^7.9.0" 85 lodash "^4.17.13" 86 87 "@babel/helper-optimise-call-expression@^7.8.3": 88 version "7.8.3" 89 resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" ··· 96 resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" 97 integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== 98 99 "@babel/helper-replace-supers@^7.8.6": 100 version "7.9.6" 101 resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" ··· 106 "@babel/traverse" "^7.9.6" 107 "@babel/types" "^7.9.6" 108 109 "@babel/helper-simple-access@^7.8.3": 110 version "7.8.3" 111 resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" ··· 114 "@babel/template" "^7.8.3" 115 "@babel/types" "^7.8.3" 116 117 "@babel/helper-split-export-declaration@^7.8.3": 118 version "7.8.3" 119 resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" ··· 121 dependencies: 122 "@babel/types" "^7.8.3" 123 124 "@babel/helper-validator-identifier@^7.9.5": 125 version "7.9.5" 126 resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" 127 integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== 128 129 "@babel/helpers@^7.9.6": 130 version "7.9.6" 131 resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" ··· 135 "@babel/traverse" "^7.9.6" 136 "@babel/types" "^7.9.6" 137 138 "@babel/highlight@^7.8.3": 139 version "7.8.3" 140 resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" ··· 148 version "7.9.6" 149 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" 150 integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== 151 152 "@babel/plugin-syntax-async-generators@^7.8.4": 153 version "7.8.4" ··· 169 integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== 170 dependencies: 171 "@babel/helper-plugin-utils" "^7.8.3" 172 173 "@babel/plugin-syntax-json-strings@^7.8.3": 174 version "7.8.3" ··· 219 dependencies: 220 "@babel/helper-plugin-utils" "^7.8.0" 221 222 - "@babel/plugin-transform-modules-commonjs@^7.9.6": 223 - version "7.9.6" 224 - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" 225 - integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== 226 dependencies: 227 - "@babel/helper-module-transforms" "^7.9.0" 228 - "@babel/helper-plugin-utils" "^7.8.3" 229 - "@babel/helper-simple-access" "^7.8.3" 230 babel-plugin-dynamic-import-node "^2.3.3" 231 232 - "@babel/plugin-transform-object-assign@^7.8.3": 233 - version "7.8.3" 234 - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz#dc3b8dd50ef03837868a37b7df791f64f288538e" 235 - integrity sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q== 236 dependencies: 237 - "@babel/helper-plugin-utils" "^7.8.3" 238 239 "@babel/template@^7.3.3", "@babel/template@^7.8.3", "@babel/template@^7.8.6": 240 version "7.8.6" ··· 260 globals "^11.1.0" 261 lodash "^4.17.13" 262 263 "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": 264 version "7.9.6" 265 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" ··· 269 lodash "^4.17.13" 270 to-fast-properties "^2.0.0" 271 272 "@bcoe/v8-coverage@^0.2.3": 273 version "0.2.3" 274 resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 275 integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 276 - 277 - "@cnakazawa/watch@^1.0.3": 278 - version "1.0.4" 279 - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" 280 - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== 281 - dependencies: 282 - exec-sh "^0.3.2" 283 - minimist "^1.2.0" 284 285 "@istanbuljs/load-nyc-config@^1.0.0": 286 version "1.0.0" ··· 297 resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" 298 integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== 299 300 - "@jest/console@^26.0.1": 301 - version "26.0.1" 302 - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.0.1.tgz#62b3b2fa8990f3cbffbef695c42ae9ddbc8f4b39" 303 - integrity sha512-9t1KUe/93coV1rBSxMmBAOIK3/HVpwxArCA1CxskKyRiv6o8J70V8C/V3OJminVCTa2M0hQI9AWRd5wxu2dAHw== 304 dependencies: 305 - "@jest/types" "^26.0.1" 306 chalk "^4.0.0" 307 - jest-message-util "^26.0.1" 308 - jest-util "^26.0.1" 309 slash "^3.0.0" 310 311 - "@jest/core@^26.0.1": 312 - version "26.0.1" 313 - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.0.1.tgz#aa538d52497dfab56735efb00e506be83d841fae" 314 - integrity sha512-Xq3eqYnxsG9SjDC+WLeIgf7/8KU6rddBxH+SCt18gEpOhAGYC/Mq+YbtlNcIdwjnnT+wDseXSbU0e5X84Y4jTQ== 315 dependencies: 316 - "@jest/console" "^26.0.1" 317 - "@jest/reporters" "^26.0.1" 318 - "@jest/test-result" "^26.0.1" 319 - "@jest/transform" "^26.0.1" 320 - "@jest/types" "^26.0.1" 321 ansi-escapes "^4.2.1" 322 chalk "^4.0.0" 323 exit "^0.1.2" 324 graceful-fs "^4.2.4" 325 - jest-changed-files "^26.0.1" 326 - jest-config "^26.0.1" 327 - jest-haste-map "^26.0.1" 328 - jest-message-util "^26.0.1" 329 - jest-regex-util "^26.0.0" 330 - jest-resolve "^26.0.1" 331 - jest-resolve-dependencies "^26.0.1" 332 - jest-runner "^26.0.1" 333 - jest-runtime "^26.0.1" 334 - jest-snapshot "^26.0.1" 335 - jest-util "^26.0.1" 336 - jest-validate "^26.0.1" 337 - jest-watcher "^26.0.1" 338 - micromatch "^4.0.2" 339 p-each-series "^2.1.0" 340 rimraf "^3.0.0" 341 slash "^3.0.0" 342 strip-ansi "^6.0.0" 343 344 - "@jest/environment@^26.0.1": 345 - version "26.0.1" 346 - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.0.1.tgz#82f519bba71959be9b483675ee89de8c8f72a5c8" 347 - integrity sha512-xBDxPe8/nx251u0VJ2dFAFz2H23Y98qdIaNwnMK6dFQr05jc+Ne/2np73lOAx+5mSBO/yuQldRrQOf6hP1h92g== 348 dependencies: 349 - "@jest/fake-timers" "^26.0.1" 350 - "@jest/types" "^26.0.1" 351 - jest-mock "^26.0.1" 352 353 - "@jest/fake-timers@^26.0.1": 354 - version "26.0.1" 355 - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.0.1.tgz#f7aeff13b9f387e9d0cac9a8de3bba538d19d796" 356 - integrity sha512-Oj/kCBnTKhm7CR+OJSjZty6N1bRDr9pgiYQr4wY221azLz5PHi08x/U+9+QpceAYOWheauLP8MhtSVFrqXQfhg== 357 dependencies: 358 - "@jest/types" "^26.0.1" 359 - "@sinonjs/fake-timers" "^6.0.1" 360 - jest-message-util "^26.0.1" 361 - jest-mock "^26.0.1" 362 - jest-util "^26.0.1" 363 364 - "@jest/globals@^26.0.1": 365 - version "26.0.1" 366 - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.0.1.tgz#3f67b508a7ce62b6e6efc536f3d18ec9deb19a9c" 367 - integrity sha512-iuucxOYB7BRCvT+TYBzUqUNuxFX1hqaR6G6IcGgEqkJ5x4htNKo1r7jk1ji9Zj8ZMiMw0oB5NaA7k5Tx6MVssA== 368 dependencies: 369 - "@jest/environment" "^26.0.1" 370 - "@jest/types" "^26.0.1" 371 - expect "^26.0.1" 372 373 - "@jest/reporters@^26.0.1": 374 - version "26.0.1" 375 - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.0.1.tgz#14ae00e7a93e498cec35b0c00ab21c375d9b078f" 376 - integrity sha512-NWWy9KwRtE1iyG/m7huiFVF9YsYv/e+mbflKRV84WDoJfBqUrNRyDbL/vFxQcYLl8IRqI4P3MgPn386x76Gf2g== 377 dependencies: 378 "@bcoe/v8-coverage" "^0.2.3" 379 - "@jest/console" "^26.0.1" 380 - "@jest/test-result" "^26.0.1" 381 - "@jest/transform" "^26.0.1" 382 - "@jest/types" "^26.0.1" 383 chalk "^4.0.0" 384 collect-v8-coverage "^1.0.0" 385 exit "^0.1.2" 386 glob "^7.1.2" 387 graceful-fs "^4.2.4" 388 istanbul-lib-coverage "^3.0.0" 389 - istanbul-lib-instrument "^4.0.0" 390 istanbul-lib-report "^3.0.0" 391 istanbul-lib-source-maps "^4.0.0" 392 istanbul-reports "^3.0.2" 393 - jest-haste-map "^26.0.1" 394 - jest-resolve "^26.0.1" 395 - jest-util "^26.0.1" 396 - jest-worker "^26.0.0" 397 slash "^3.0.0" 398 source-map "^0.6.0" 399 string-length "^4.0.1" 400 terminal-link "^2.0.0" 401 - v8-to-istanbul "^4.1.3" 402 - optionalDependencies: 403 - node-notifier "^7.0.0" 404 405 - "@jest/source-map@^26.0.0": 406 - version "26.0.0" 407 - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.0.0.tgz#fd7706484a7d3faf7792ae29783933bbf48a4749" 408 - integrity sha512-S2Z+Aj/7KOSU2TfW0dyzBze7xr95bkm5YXNUqqCek+HE0VbNNSNzrRwfIi5lf7wvzDTSS0/ib8XQ1krFNyYgbQ== 409 dependencies: 410 callsites "^3.0.0" 411 graceful-fs "^4.2.4" 412 source-map "^0.6.0" 413 414 - "@jest/test-result@^26.0.1": 415 - version "26.0.1" 416 - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.0.1.tgz#1ffdc1ba4bc289919e54b9414b74c9c2f7b2b718" 417 - integrity sha512-oKwHvOI73ICSYRPe8WwyYPTtiuOAkLSbY8/MfWF3qDEd/sa8EDyZzin3BaXTqufir/O/Gzea4E8Zl14XU4Mlyg== 418 dependencies: 419 - "@jest/console" "^26.0.1" 420 - "@jest/types" "^26.0.1" 421 "@types/istanbul-lib-coverage" "^2.0.0" 422 collect-v8-coverage "^1.0.0" 423 424 - "@jest/test-sequencer@^26.0.1": 425 - version "26.0.1" 426 - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.0.1.tgz#b0563424728f3fe9e75d1442b9ae4c11da73f090" 427 - integrity sha512-ssga8XlwfP8YjbDcmVhwNlrmblddMfgUeAkWIXts1V22equp2GMIHxm7cyeD5Q/B0ZgKPK/tngt45sH99yLLGg== 428 dependencies: 429 - "@jest/test-result" "^26.0.1" 430 graceful-fs "^4.2.4" 431 - jest-haste-map "^26.0.1" 432 - jest-runner "^26.0.1" 433 - jest-runtime "^26.0.1" 434 435 - "@jest/transform@^26.0.1": 436 - version "26.0.1" 437 - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.0.1.tgz#0e3ecbb34a11cd4b2080ed0a9c4856cf0ceb0639" 438 - integrity sha512-pPRkVkAQ91drKGbzCfDOoHN838+FSbYaEAvBXvKuWeeRRUD8FjwXkqfUNUZL6Ke48aA/1cqq/Ni7kVMCoqagWA== 439 dependencies: 440 "@babel/core" "^7.1.0" 441 - "@jest/types" "^26.0.1" 442 babel-plugin-istanbul "^6.0.0" 443 chalk "^4.0.0" 444 convert-source-map "^1.4.0" 445 fast-json-stable-stringify "^2.0.0" 446 graceful-fs "^4.2.4" 447 - jest-haste-map "^26.0.1" 448 - jest-regex-util "^26.0.0" 449 - jest-util "^26.0.1" 450 - micromatch "^4.0.2" 451 pirates "^4.0.1" 452 slash "^3.0.0" 453 source-map "^0.6.1" 454 write-file-atomic "^3.0.0" 455 456 - "@jest/types@^26.0.1": 457 - version "26.0.1" 458 - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.0.1.tgz#b78333fbd113fa7aec8d39de24f88de8686dac67" 459 - integrity sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA== 460 dependencies: 461 "@types/istanbul-lib-coverage" "^2.0.0" 462 - "@types/istanbul-reports" "^1.1.1" 463 - "@types/yargs" "^15.0.0" 464 chalk "^4.0.0" 465 466 "@rollup/plugin-buble@^0.21.3": 467 version "0.21.3" 468 resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz#1649a915b1d051a4f430d40e7734a7f67a69b33e" ··· 472 "@types/buble" "^0.19.2" 473 buble "^0.20.0" 474 475 - "@rollup/plugin-commonjs@^11.1.0": 476 - version "11.1.0" 477 - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef" 478 - integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA== 479 dependencies: 480 - "@rollup/pluginutils" "^3.0.8" 481 commondir "^1.0.1" 482 - estree-walker "^1.0.1" 483 - glob "^7.1.2" 484 - is-reference "^1.1.2" 485 - magic-string "^0.25.2" 486 - resolve "^1.11.0" 487 488 - "@rollup/plugin-node-resolve@^7.1.3": 489 - version "7.1.3" 490 - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" 491 - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== 492 dependencies: 493 - "@rollup/pluginutils" "^3.0.8" 494 - "@types/resolve" "0.0.8" 495 builtin-modules "^3.1.0" 496 is-module "^1.0.0" 497 - resolve "^1.14.2" 498 499 "@rollup/pluginutils@^3.0.8": 500 version "3.0.10" ··· 505 estree-walker "^1.0.1" 506 picomatch "^2.2.2" 507 508 - "@samverschueren/stream-to-observable@^0.3.0": 509 - version "0.3.0" 510 - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" 511 - integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== 512 dependencies: 513 - any-observable "^0.3.0" 514 515 "@sinonjs/commons@^1.7.0": 516 version "1.7.2" ··· 519 dependencies: 520 type-detect "4.0.8" 521 522 - "@sinonjs/fake-timers@^6.0.1": 523 - version "6.0.1" 524 - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" 525 - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== 526 dependencies: 527 "@sinonjs/commons" "^1.7.0" 528 529 - "@types/babel__core@^7.1.7": 530 - version "7.1.7" 531 - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" 532 - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== 533 dependencies: 534 "@babel/parser" "^7.1.0" 535 "@babel/types" "^7.0.0" ··· 559 dependencies: 560 "@babel/types" "^7.3.0" 561 562 "@types/buble@^0.19.2": 563 version "0.19.2" 564 resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" ··· 570 version "1.1.1" 571 resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 572 integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 573 574 "@types/estree@0.0.39": 575 version "0.0.39" ··· 595 dependencies: 596 "@types/istanbul-lib-coverage" "*" 597 598 - "@types/istanbul-reports@^1.1.1": 599 - version "1.1.2" 600 - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" 601 - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== 602 dependencies: 603 - "@types/istanbul-lib-coverage" "*" 604 "@types/istanbul-lib-report" "*" 605 606 "@types/node@*": ··· 608 resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" 609 integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== 610 611 - "@types/normalize-package-data@^2.4.0": 612 - version "2.4.0" 613 - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" 614 - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== 615 - 616 "@types/parse-json@^4.0.0": 617 version "4.0.0" 618 resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 619 integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 620 621 - "@types/prettier@^2.0.0": 622 - version "2.0.0" 623 - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" 624 - integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== 625 626 - "@types/resolve@0.0.8": 627 - version "0.0.8" 628 - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" 629 - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== 630 dependencies: 631 "@types/node" "*" 632 633 - "@types/stack-utils@^1.0.1": 634 - version "1.0.1" 635 - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" 636 - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== 637 638 "@types/yargs-parser@*": 639 version "15.0.0" 640 resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" 641 integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== 642 643 - "@types/yargs@^15.0.0": 644 - version "15.0.5" 645 - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" 646 - integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== 647 dependencies: 648 "@types/yargs-parser" "*" 649 ··· 651 version "2.0.3" 652 resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" 653 integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== 654 655 acorn-dynamic-import@^4.0.0: 656 version "4.0.0" ··· 670 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 671 integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 672 673 - acorn-walk@^7.1.1: 674 version "7.1.1" 675 resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" 676 integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== 677 678 acorn@^6.4.1: 679 version "6.4.1" 680 resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" ··· 684 version "7.2.0" 685 resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" 686 integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== 687 688 aggregate-error@^3.0.0: 689 version "3.0.1" ··· 693 clean-stack "^2.0.0" 694 indent-string "^4.0.0" 695 696 - ajv@^6.5.5: 697 - version "6.12.2" 698 - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" 699 - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== 700 - dependencies: 701 - fast-deep-equal "^3.1.1" 702 - fast-json-stable-stringify "^2.0.0" 703 - json-schema-traverse "^0.4.1" 704 - uri-js "^4.2.2" 705 - 706 - ansi-colors@^3.2.1: 707 - version "3.2.4" 708 - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" 709 - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== 710 711 ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: 712 version "4.3.1" ··· 735 "@types/color-name" "^1.1.1" 736 color-convert "^2.0.1" 737 738 - any-observable@^0.3.0: 739 - version "0.3.0" 740 - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" 741 - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== 742 743 - anymatch@^2.0.0: 744 - version "2.0.0" 745 - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 746 - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== 747 - dependencies: 748 - micromatch "^3.1.4" 749 - normalize-path "^2.1.1" 750 751 anymatch@^3.0.3: 752 version "3.1.1" ··· 763 dependencies: 764 sprintf-js "~1.0.2" 765 766 - arr-diff@^4.0.0: 767 - version "4.0.0" 768 - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 769 - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 770 - 771 - arr-flatten@^1.1.0: 772 - version "1.1.0" 773 - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 774 - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 775 - 776 - arr-union@^3.1.0: 777 - version "3.1.0" 778 - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 779 - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 780 - 781 - array-unique@^0.3.2: 782 - version "0.3.2" 783 - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 784 - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 785 - 786 - asn1@~0.2.3: 787 - version "0.2.4" 788 - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 789 - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 790 - dependencies: 791 - safer-buffer "~2.1.0" 792 - 793 - assert-plus@1.0.0, assert-plus@^1.0.0: 794 - version "1.0.0" 795 - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 796 - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 797 - 798 - assign-symbols@^1.0.0: 799 - version "1.0.0" 800 - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 801 - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 802 - 803 astral-regex@^2.0.0: 804 version "2.0.0" 805 resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" ··· 810 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 811 integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 812 813 - atob@^2.1.2: 814 - version "2.1.2" 815 - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 816 - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 817 - 818 - aws-sign2@~0.7.0: 819 - version "0.7.0" 820 - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 821 - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 822 - 823 - aws4@^1.8.0: 824 - version "1.9.1" 825 - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" 826 - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== 827 - 828 - babel-jest@^26.0.1: 829 - version "26.0.1" 830 - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.0.1.tgz#450139ce4b6c17174b136425bda91885c397bc46" 831 - integrity sha512-Z4GGmSNQ8pX3WS1O+6v3fo41YItJJZsVxG5gIQ+HuB/iuAQBJxMTHTwz292vuYws1LnHfwSRgoqI+nxdy/pcvw== 832 dependencies: 833 - "@jest/transform" "^26.0.1" 834 - "@jest/types" "^26.0.1" 835 - "@types/babel__core" "^7.1.7" 836 babel-plugin-istanbul "^6.0.0" 837 - babel-preset-jest "^26.0.0" 838 chalk "^4.0.0" 839 graceful-fs "^4.2.4" 840 slash "^3.0.0" 841 842 - babel-plugin-closure-elimination@^1.3.1: 843 - version "1.3.1" 844 - resolved "https://registry.yarnpkg.com/babel-plugin-closure-elimination/-/babel-plugin-closure-elimination-1.3.1.tgz#c5143ae2cceed6e8451c71ca164bbe1f84852087" 845 - integrity sha512-9B85Xh/S32Crdq8K398NZdh2Sl3crBMTpsy8k7OEij41ZztPYc1CACIZ8D1ZNTHuj62HWaStXkevIOF+DjfuWg== 846 847 babel-plugin-dynamic-import-node@^2.3.3: 848 version "2.3.3" ··· 862 istanbul-lib-instrument "^4.0.0" 863 test-exclude "^6.0.0" 864 865 - babel-plugin-jest-hoist@^26.0.0: 866 - version "26.0.0" 867 - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.0.0.tgz#fd1d35f95cf8849fc65cb01b5e58aedd710b34a8" 868 - integrity sha512-+AuoehOrjt9irZL7DOt2+4ZaTM6dlu1s5TTS46JBa0/qem4dy7VNW3tMb96qeEqcIh20LD73TVNtmVEeymTG7w== 869 dependencies: 870 "@babel/template" "^7.3.3" 871 "@babel/types" "^7.3.3" 872 "@types/babel__traverse" "^7.0.6" 873 874 - babel-preset-current-node-syntax@^0.1.2: 875 - version "0.1.2" 876 - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" 877 - integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== 878 dependencies: 879 "@babel/plugin-syntax-async-generators" "^7.8.4" 880 "@babel/plugin-syntax-bigint" "^7.8.3" 881 "@babel/plugin-syntax-class-properties" "^7.8.3" 882 "@babel/plugin-syntax-json-strings" "^7.8.3" 883 "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 884 "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" ··· 886 "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 887 "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 888 "@babel/plugin-syntax-optional-chaining" "^7.8.3" 889 890 - babel-preset-jest@^26.0.0: 891 - version "26.0.0" 892 - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.0.0.tgz#1eac82f513ad36c4db2e9263d7c485c825b1faa6" 893 - integrity sha512-9ce+DatAa31DpR4Uir8g4Ahxs5K4W4L8refzt+qHWQANb6LhGcAEfIFgLUwk67oya2cCUd6t4eUMtO/z64ocNw== 894 dependencies: 895 - babel-plugin-jest-hoist "^26.0.0" 896 - babel-preset-current-node-syntax "^0.1.2" 897 898 balanced-match@^1.0.0: 899 version "1.0.0" 900 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 901 integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 902 903 - base@^0.11.1: 904 - version "0.11.2" 905 - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 906 - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 907 - dependencies: 908 - cache-base "^1.0.1" 909 - class-utils "^0.3.5" 910 - component-emitter "^1.2.1" 911 - define-property "^1.0.0" 912 - isobject "^3.0.1" 913 - mixin-deep "^1.2.0" 914 - pascalcase "^0.1.1" 915 - 916 - bcrypt-pbkdf@^1.0.0: 917 - version "1.0.2" 918 - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 919 - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 920 - dependencies: 921 - tweetnacl "^0.14.3" 922 - 923 brace-expansion@^1.1.7: 924 version "1.1.11" 925 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" ··· 928 balanced-match "^1.0.0" 929 concat-map "0.0.1" 930 931 - braces@^2.3.1: 932 - version "2.3.2" 933 - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 934 - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 935 - dependencies: 936 - arr-flatten "^1.1.0" 937 - array-unique "^0.3.2" 938 - extend-shallow "^2.0.1" 939 - fill-range "^4.0.0" 940 - isobject "^3.0.1" 941 - repeat-element "^1.1.2" 942 - snapdragon "^0.8.1" 943 - snapdragon-node "^2.0.1" 944 - split-string "^3.0.2" 945 - to-regex "^3.0.1" 946 - 947 braces@^3.0.1: 948 version "3.0.2" 949 resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" ··· 955 version "1.0.0" 956 resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 957 integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== 958 959 bser@2.1.1: 960 version "2.1.1" ··· 986 resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 987 integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 988 989 - cache-base@^1.0.1: 990 - version "1.0.1" 991 - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 992 - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 993 - dependencies: 994 - collection-visit "^1.0.0" 995 - component-emitter "^1.2.1" 996 - get-value "^2.0.6" 997 - has-value "^1.0.0" 998 - isobject "^3.0.1" 999 - set-value "^2.0.0" 1000 - to-object-path "^0.3.0" 1001 - union-value "^1.0.0" 1002 - unset-value "^1.0.0" 1003 - 1004 callsites@^3.0.0: 1005 version "3.1.0" 1006 resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 1007 integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1008 1009 - camelcase@^5.0.0, camelcase@^5.3.1: 1010 version "5.3.1" 1011 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 1012 integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 1013 1014 - camelcase@^6.0.0: 1015 - version "6.0.0" 1016 - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" 1017 - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== 1018 1019 - capture-exit@^2.0.0: 1020 - version "2.0.0" 1021 - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" 1022 - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== 1023 - dependencies: 1024 - rsvp "^4.8.4" 1025 1026 - caseless@~0.12.0: 1027 - version "0.12.0" 1028 - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 1029 - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 1030 - 1031 - chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: 1032 version "2.4.2" 1033 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1034 integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== ··· 1037 escape-string-regexp "^1.0.5" 1038 supports-color "^5.3.0" 1039 1040 - chalk@^3.0.0: 1041 - version "3.0.0" 1042 - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 1043 - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 1044 - dependencies: 1045 - ansi-styles "^4.1.0" 1046 - supports-color "^7.1.0" 1047 - 1048 chalk@^4.0.0: 1049 version "4.0.0" 1050 resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" ··· 1053 ansi-styles "^4.1.0" 1054 supports-color "^7.1.0" 1055 1056 char-regex@^1.0.2: 1057 version "1.0.2" 1058 resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" ··· 1063 resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 1064 integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 1065 1066 - class-utils@^0.3.5: 1067 - version "0.3.6" 1068 - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 1069 - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 1070 - dependencies: 1071 - arr-union "^3.1.0" 1072 - define-property "^0.2.5" 1073 - isobject "^3.0.0" 1074 - static-extend "^0.1.1" 1075 1076 clean-stack@^2.0.0: 1077 version "2.2.0" ··· 1093 slice-ansi "^3.0.0" 1094 string-width "^4.2.0" 1095 1096 - cliui@^6.0.0: 1097 - version "6.0.0" 1098 - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" 1099 - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== 1100 dependencies: 1101 string-width "^4.2.0" 1102 strip-ansi "^6.0.0" 1103 - wrap-ansi "^6.2.0" 1104 1105 - clone@^1.0.2: 1106 - version "1.0.4" 1107 - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 1108 - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= 1109 1110 co@^4.6.0: 1111 version "4.6.0" ··· 1116 version "1.0.1" 1117 resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 1118 integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== 1119 - 1120 - collection-visit@^1.0.0: 1121 - version "1.0.0" 1122 - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 1123 - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 1124 - dependencies: 1125 - map-visit "^1.0.0" 1126 - object-visit "^1.0.0" 1127 1128 color-convert@^1.9.0: 1129 version "1.9.3" ··· 1149 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1150 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1151 1152 - combined-stream@^1.0.6, combined-stream@~1.0.6: 1153 version "1.0.8" 1154 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1155 integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1156 dependencies: 1157 delayed-stream "~1.0.0" 1158 1159 - commander@^5.0.0: 1160 - version "5.1.0" 1161 - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" 1162 - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== 1163 1164 commondir@^1.0.1: 1165 version "1.0.1" ··· 1171 resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" 1172 integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== 1173 1174 - component-emitter@^1.2.1: 1175 - version "1.3.0" 1176 - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 1177 - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 1178 - 1179 concat-map@0.0.1: 1180 version "0.0.1" 1181 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" ··· 1188 dependencies: 1189 safe-buffer "~5.1.1" 1190 1191 - copy-descriptor@^0.1.0: 1192 - version "0.1.1" 1193 - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 1194 - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 1195 - 1196 - core-util-is@1.0.2: 1197 version "1.0.2" 1198 resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1199 integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 1200 1201 - cosmiconfig@^6.0.0: 1202 - version "6.0.0" 1203 - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" 1204 - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== 1205 dependencies: 1206 "@types/parse-json" "^4.0.0" 1207 - import-fresh "^3.1.0" 1208 parse-json "^5.0.0" 1209 path-type "^4.0.0" 1210 - yaml "^1.7.2" 1211 1212 - cross-spawn@^6.0.0, cross-spawn@^6.0.5: 1213 version "6.0.5" 1214 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 1215 integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== ··· 1220 shebang-command "^1.2.0" 1221 which "^1.2.9" 1222 1223 - cross-spawn@^7.0.0: 1224 - version "7.0.2" 1225 - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" 1226 - integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== 1227 dependencies: 1228 path-key "^3.1.0" 1229 shebang-command "^2.0.0" ··· 1239 resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 1240 integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 1241 1242 - cssstyle@^2.2.0: 1243 version "2.3.0" 1244 resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 1245 integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 1246 dependencies: 1247 cssom "~0.3.6" 1248 1249 - dashdash@^1.12.0: 1250 - version "1.14.1" 1251 - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 1252 - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 1253 - dependencies: 1254 - assert-plus "^1.0.0" 1255 - 1256 data-urls@^2.0.0: 1257 version "2.0.0" 1258 resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" ··· 1262 whatwg-mimetype "^2.3.0" 1263 whatwg-url "^8.0.0" 1264 1265 - debug@^2.2.0, debug@^2.3.3: 1266 - version "2.6.9" 1267 - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 1268 - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 1269 dependencies: 1270 - ms "2.0.0" 1271 1272 debug@^4.1.0, debug@^4.1.1: 1273 version "4.1.1" ··· 1276 dependencies: 1277 ms "^2.1.1" 1278 1279 - decamelize@^1.2.0: 1280 - version "1.2.0" 1281 - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 1282 - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 1283 - 1284 - decimal.js@^10.2.0: 1285 - version "10.2.0" 1286 - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" 1287 - integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== 1288 - 1289 - decode-uri-component@^0.2.0: 1290 - version "0.2.0" 1291 - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 1292 - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 1293 1294 dedent@^0.7.0: 1295 version "0.7.0" ··· 1306 resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 1307 integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 1308 1309 - defaults@^1.0.3: 1310 - version "1.0.3" 1311 - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 1312 - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= 1313 - dependencies: 1314 - clone "^1.0.2" 1315 - 1316 define-properties@^1.1.2, define-properties@^1.1.3: 1317 version "1.1.3" 1318 resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" ··· 1320 dependencies: 1321 object-keys "^1.0.12" 1322 1323 - define-property@^0.2.5: 1324 - version "0.2.5" 1325 - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 1326 - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 1327 - dependencies: 1328 - is-descriptor "^0.1.0" 1329 - 1330 - define-property@^1.0.0: 1331 - version "1.0.0" 1332 - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 1333 - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 1334 - dependencies: 1335 - is-descriptor "^1.0.0" 1336 - 1337 - define-property@^2.0.2: 1338 - version "2.0.2" 1339 - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 1340 - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 1341 - dependencies: 1342 - is-descriptor "^1.0.2" 1343 - isobject "^3.0.1" 1344 - 1345 delayed-stream@~1.0.0: 1346 version "1.0.0" 1347 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" ··· 1352 resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1353 integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1354 1355 - diff-sequences@^26.0.0: 1356 - version "26.0.0" 1357 - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6" 1358 - integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg== 1359 1360 domexception@^2.0.1: 1361 version "2.0.1" ··· 1364 dependencies: 1365 webidl-conversions "^5.0.0" 1366 1367 - ecc-jsbn@~0.1.1: 1368 - version "0.1.2" 1369 - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 1370 - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 1371 - dependencies: 1372 - jsbn "~0.1.0" 1373 - safer-buffer "^2.1.0" 1374 1375 - elegant-spinner@^2.0.0: 1376 - version "2.0.0" 1377 - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94" 1378 - integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA== 1379 1380 emoji-regex@^8.0.0: 1381 version "8.0.0" 1382 resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1383 integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1384 1385 - end-of-stream@^1.1.0: 1386 - version "1.4.4" 1387 - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 1388 - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 1389 - dependencies: 1390 - once "^1.4.0" 1391 - 1392 - enquirer@^2.3.4: 1393 - version "2.3.5" 1394 - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" 1395 - integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== 1396 dependencies: 1397 - ansi-colors "^3.2.1" 1398 1399 error-ex@^1.3.1: 1400 version "1.3.2" ··· 1429 is-date-object "^1.0.1" 1430 is-symbol "^1.0.2" 1431 1432 escape-string-regexp@^1.0.5: 1433 version "1.0.5" 1434 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" ··· 1439 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1440 integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1441 1442 - escodegen@^1.14.1: 1443 - version "1.14.1" 1444 - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" 1445 - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== 1446 dependencies: 1447 esprima "^4.0.1" 1448 - estraverse "^4.2.0" 1449 esutils "^2.0.2" 1450 optionator "^0.8.1" 1451 optionalDependencies: ··· 1456 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1457 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1458 1459 - estraverse@^4.2.0: 1460 - version "4.3.0" 1461 - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1462 - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1463 1464 - estree-walker@^0.6.1: 1465 - version "0.6.1" 1466 - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 1467 - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 1468 1469 estree-walker@^1.0.1: 1470 version "1.0.1" ··· 1476 resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1477 integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1478 1479 - exec-sh@^0.3.2: 1480 - version "0.3.4" 1481 - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" 1482 - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== 1483 - 1484 - execa@^1.0.0: 1485 - version "1.0.0" 1486 - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 1487 - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== 1488 - dependencies: 1489 - cross-spawn "^6.0.0" 1490 - get-stream "^4.0.0" 1491 - is-stream "^1.1.0" 1492 - npm-run-path "^2.0.0" 1493 - p-finally "^1.0.0" 1494 - signal-exit "^3.0.0" 1495 - strip-eof "^1.0.0" 1496 - 1497 - execa@^4.0.0: 1498 - version "4.0.1" 1499 - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.1.tgz#988488781f1f0238cd156f7aaede11c3e853b4c1" 1500 - integrity sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw== 1501 dependencies: 1502 - cross-spawn "^7.0.0" 1503 - get-stream "^5.0.0" 1504 - human-signals "^1.1.1" 1505 is-stream "^2.0.0" 1506 merge-stream "^2.0.0" 1507 - npm-run-path "^4.0.0" 1508 - onetime "^5.1.0" 1509 - signal-exit "^3.0.2" 1510 strip-final-newline "^2.0.0" 1511 1512 exit@^0.1.2: ··· 1514 resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1515 integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= 1516 1517 - expand-brackets@^2.1.4: 1518 - version "2.1.4" 1519 - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 1520 - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 1521 - dependencies: 1522 - debug "^2.3.3" 1523 - define-property "^0.2.5" 1524 - extend-shallow "^2.0.1" 1525 - posix-character-classes "^0.1.0" 1526 - regex-not "^1.0.0" 1527 - snapdragon "^0.8.1" 1528 - to-regex "^3.0.1" 1529 - 1530 - expect@^26.0.1: 1531 - version "26.0.1" 1532 - resolved "https://registry.yarnpkg.com/expect/-/expect-26.0.1.tgz#18697b9611a7e2725e20ba3ceadda49bc9865421" 1533 - integrity sha512-QcCy4nygHeqmbw564YxNbHTJlXh47dVID2BUP52cZFpLU9zHViMFK6h07cC1wf7GYCTIigTdAXhVua8Yl1FkKg== 1534 - dependencies: 1535 - "@jest/types" "^26.0.1" 1536 - ansi-styles "^4.0.0" 1537 - jest-get-type "^26.0.0" 1538 - jest-matcher-utils "^26.0.1" 1539 - jest-message-util "^26.0.1" 1540 - jest-regex-util "^26.0.0" 1541 - 1542 - extend-shallow@^2.0.1: 1543 - version "2.0.1" 1544 - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 1545 - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 1546 dependencies: 1547 - is-extendable "^0.1.0" 1548 - 1549 - extend-shallow@^3.0.0, extend-shallow@^3.0.2: 1550 - version "3.0.2" 1551 - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 1552 - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 1553 - dependencies: 1554 - assign-symbols "^1.0.0" 1555 - is-extendable "^1.0.1" 1556 - 1557 - extend@~3.0.2: 1558 - version "3.0.2" 1559 - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1560 - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 1561 - 1562 - extglob@^2.0.4: 1563 - version "2.0.4" 1564 - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 1565 - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 1566 - dependencies: 1567 - array-unique "^0.3.2" 1568 - define-property "^1.0.0" 1569 - expand-brackets "^2.1.4" 1570 - extend-shallow "^2.0.1" 1571 - fragment-cache "^0.2.1" 1572 - regex-not "^1.0.0" 1573 - snapdragon "^0.8.1" 1574 - to-regex "^3.0.1" 1575 - 1576 - extsprintf@1.3.0: 1577 - version "1.3.0" 1578 - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 1579 - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 1580 - 1581 - extsprintf@^1.2.0: 1582 - version "1.4.0" 1583 - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 1584 - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 1585 - 1586 - fast-deep-equal@^3.1.1: 1587 - version "3.1.1" 1588 - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 1589 - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 1590 1591 fast-json-stable-stringify@^2.0.0: 1592 version "2.1.0" ··· 1605 dependencies: 1606 bser "2.1.1" 1607 1608 - figures@^3.2.0: 1609 - version "3.2.0" 1610 - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 1611 - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 1612 - dependencies: 1613 - escape-string-regexp "^1.0.5" 1614 - 1615 - fill-range@^4.0.0: 1616 - version "4.0.0" 1617 - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 1618 - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 1619 - dependencies: 1620 - extend-shallow "^2.0.1" 1621 - is-number "^3.0.0" 1622 - repeat-string "^1.6.1" 1623 - to-regex-range "^2.1.0" 1624 - 1625 fill-range@^7.0.1: 1626 version "7.0.1" 1627 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" ··· 1637 locate-path "^5.0.0" 1638 path-exists "^4.0.0" 1639 1640 - find-versions@^3.2.0: 1641 - version "3.2.0" 1642 - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" 1643 - integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== 1644 dependencies: 1645 - semver-regex "^2.0.0" 1646 1647 - for-in@^1.0.2: 1648 - version "1.0.2" 1649 - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1650 - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 1651 - 1652 - forever-agent@~0.6.1: 1653 - version "0.6.1" 1654 - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1655 - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 1656 1657 - form-data@~2.3.2: 1658 - version "2.3.3" 1659 - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 1660 - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 1661 dependencies: 1662 asynckit "^0.4.0" 1663 - combined-stream "^1.0.6" 1664 mime-types "^2.1.12" 1665 1666 - fragment-cache@^0.2.1: 1667 - version "0.2.1" 1668 - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1669 - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 1670 - dependencies: 1671 - map-cache "^0.2.2" 1672 - 1673 fs.realpath@^1.0.0: 1674 version "1.0.0" 1675 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1676 integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1677 1678 - fsevents@^2.1.2, fsevents@~2.1.2: 1679 - version "2.1.3" 1680 - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 1681 - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 1682 1683 function-bind@^1.1.1: 1684 version "1.1.1" ··· 1690 resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" 1691 integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== 1692 1693 - get-caller-file@^2.0.1: 1694 version "2.0.5" 1695 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1696 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== ··· 1700 resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 1701 integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 1702 1703 - get-stream@^4.0.0: 1704 - version "4.1.0" 1705 - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 1706 - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 1707 - dependencies: 1708 - pump "^3.0.0" 1709 - 1710 - get-stream@^5.0.0: 1711 - version "5.1.0" 1712 - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" 1713 - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== 1714 - dependencies: 1715 - pump "^3.0.0" 1716 - 1717 - get-value@^2.0.3, get-value@^2.0.6: 1718 - version "2.0.6" 1719 - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1720 - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 1721 - 1722 - getpass@^0.1.1: 1723 - version "0.1.7" 1724 - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1725 - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 1726 - dependencies: 1727 - assert-plus "^1.0.0" 1728 1729 - glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: 1730 version "7.1.6" 1731 resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1732 integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== ··· 1738 once "^1.3.0" 1739 path-is-absolute "^1.0.0" 1740 1741 globals@^11.1.0: 1742 version "11.12.0" 1743 resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1744 integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1745 1746 - graceful-fs@^4.1.2, graceful-fs@^4.2.4: 1747 - version "4.2.4" 1748 - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 1749 - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 1750 1751 - growly@^1.3.0: 1752 - version "1.3.0" 1753 - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" 1754 - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= 1755 1756 - har-schema@^2.0.0: 1757 - version "2.0.0" 1758 - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1759 - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 1760 1761 - har-validator@~5.1.3: 1762 - version "5.1.3" 1763 - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 1764 - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 1765 dependencies: 1766 - ajv "^6.5.5" 1767 - har-schema "^2.0.0" 1768 1769 has-flag@^3.0.0: 1770 version "3.0.0" ··· 1781 resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1782 integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1783 1784 - has-value@^0.3.1: 1785 - version "0.3.1" 1786 - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1787 - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 1788 - dependencies: 1789 - get-value "^2.0.3" 1790 - has-values "^0.1.4" 1791 - isobject "^2.0.0" 1792 - 1793 - has-value@^1.0.0: 1794 - version "1.0.0" 1795 - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1796 - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 1797 - dependencies: 1798 - get-value "^2.0.6" 1799 - has-values "^1.0.0" 1800 - isobject "^3.0.0" 1801 - 1802 - has-values@^0.1.4: 1803 - version "0.1.4" 1804 - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1805 - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 1806 - 1807 - has-values@^1.0.0: 1808 - version "1.0.0" 1809 - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1810 - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 1811 - dependencies: 1812 - is-number "^3.0.0" 1813 - kind-of "^4.0.0" 1814 - 1815 has@^1.0.3: 1816 version "1.0.3" 1817 resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" ··· 1836 resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1837 integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1838 1839 - http-signature@~1.2.0: 1840 - version "1.2.0" 1841 - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1842 - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 1843 dependencies: 1844 - assert-plus "^1.0.0" 1845 - jsprim "^1.2.2" 1846 - sshpk "^1.7.0" 1847 1848 - human-signals@^1.1.1: 1849 - version "1.1.1" 1850 - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" 1851 - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== 1852 1853 - husky@^4.2.5: 1854 - version "4.2.5" 1855 - resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" 1856 - integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== 1857 dependencies: 1858 chalk "^4.0.0" 1859 ci-info "^2.0.0" 1860 compare-versions "^3.6.0" 1861 - cosmiconfig "^6.0.0" 1862 - find-versions "^3.2.0" 1863 opencollective-postinstall "^2.0.2" 1864 - pkg-dir "^4.2.0" 1865 please-upgrade-node "^3.2.0" 1866 slash "^3.0.0" 1867 which-pm-runs "^1.0.0" ··· 1873 dependencies: 1874 safer-buffer ">= 2.1.2 < 3" 1875 1876 - import-fresh@^3.1.0: 1877 - version "3.2.1" 1878 - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 1879 - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 1880 dependencies: 1881 parent-module "^1.0.0" 1882 resolve-from "^4.0.0" ··· 1907 once "^1.3.0" 1908 wrappy "1" 1909 1910 - inherits@2: 1911 version "2.0.4" 1912 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1913 integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1914 1915 - ip-regex@^2.1.0: 1916 - version "2.1.0" 1917 - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" 1918 - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= 1919 - 1920 - is-accessor-descriptor@^0.1.6: 1921 - version "0.1.6" 1922 - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1923 - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 1924 - dependencies: 1925 - kind-of "^3.0.2" 1926 - 1927 - is-accessor-descriptor@^1.0.0: 1928 - version "1.0.0" 1929 - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1930 - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 1931 - dependencies: 1932 - kind-of "^6.0.0" 1933 - 1934 is-arrayish@^0.2.1: 1935 version "0.2.1" 1936 resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1937 integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1938 1939 - is-buffer@^1.1.5: 1940 - version "1.1.6" 1941 - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1942 - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1943 - 1944 is-callable@^1.1.4, is-callable@^1.1.5: 1945 version "1.1.5" 1946 resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 1947 integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 1948 1949 - is-ci@^2.0.0: 1950 - version "2.0.0" 1951 - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 1952 - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 1953 dependencies: 1954 - ci-info "^2.0.0" 1955 - 1956 - is-data-descriptor@^0.1.4: 1957 - version "0.1.4" 1958 - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1959 - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 1960 - dependencies: 1961 - kind-of "^3.0.2" 1962 1963 - is-data-descriptor@^1.0.0: 1964 - version "1.0.0" 1965 - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1966 - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 1967 dependencies: 1968 - kind-of "^6.0.0" 1969 1970 is-date-object@^1.0.1: 1971 version "1.0.2" 1972 resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1973 integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1974 1975 - is-descriptor@^0.1.0: 1976 - version "0.1.6" 1977 - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1978 - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 1979 - dependencies: 1980 - is-accessor-descriptor "^0.1.6" 1981 - is-data-descriptor "^0.1.4" 1982 - kind-of "^5.0.0" 1983 - 1984 - is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1985 - version "1.0.2" 1986 - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1987 - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 1988 - dependencies: 1989 - is-accessor-descriptor "^1.0.0" 1990 - is-data-descriptor "^1.0.0" 1991 - kind-of "^6.0.2" 1992 - 1993 - is-docker@^2.0.0: 1994 - version "2.0.0" 1995 - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" 1996 - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== 1997 - 1998 - is-extendable@^0.1.0, is-extendable@^0.1.1: 1999 - version "0.1.1" 2000 - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 2001 - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 2002 - 2003 - is-extendable@^1.0.1: 2004 - version "1.0.1" 2005 - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 2006 - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 2007 - dependencies: 2008 - is-plain-object "^2.0.4" 2009 - 2010 is-fullwidth-code-point@^3.0.0: 2011 version "3.0.0" 2012 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" ··· 2021 version "1.0.0" 2022 resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 2023 integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 2024 - 2025 - is-number@^3.0.0: 2026 - version "3.0.0" 2027 - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 2028 - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 2029 - dependencies: 2030 - kind-of "^3.0.2" 2031 2032 is-number@^7.0.0: 2033 version "7.0.0" ··· 2039 resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 2040 integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 2041 2042 - is-plain-object@^2.0.3, is-plain-object@^2.0.4: 2043 - version "2.0.4" 2044 - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 2045 - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 2046 - dependencies: 2047 - isobject "^3.0.1" 2048 - 2049 - is-potential-custom-element-name@^1.0.0: 2050 - version "1.0.0" 2051 - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" 2052 - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= 2053 2054 - is-reference@^1.1.2: 2055 - version "1.1.4" 2056 - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" 2057 - integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== 2058 dependencies: 2059 - "@types/estree" "0.0.39" 2060 2061 is-regex@^1.0.5: 2062 version "1.0.5" ··· 2070 resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 2071 integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 2072 2073 - is-stream@^1.1.0: 2074 - version "1.1.0" 2075 - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 2076 - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 2077 - 2078 is-stream@^2.0.0: 2079 version "2.0.0" 2080 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" ··· 2087 dependencies: 2088 has-symbols "^1.0.1" 2089 2090 - is-typedarray@^1.0.0, is-typedarray@~1.0.0: 2091 version "1.0.0" 2092 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 2093 integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 2094 2095 - is-windows@^1.0.2: 2096 - version "1.0.2" 2097 - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 2098 - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 2099 2100 - is-wsl@^2.1.1: 2101 - version "2.2.0" 2102 - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" 2103 - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== 2104 - dependencies: 2105 - is-docker "^2.0.0" 2106 - 2107 - isarray@1.0.0: 2108 version "1.0.0" 2109 resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 2110 integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= ··· 2114 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 2115 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 2116 2117 - isobject@^2.0.0: 2118 - version "2.1.0" 2119 - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 2120 - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 2121 - dependencies: 2122 - isarray "1.0.0" 2123 - 2124 - isobject@^3.0.0, isobject@^3.0.1: 2125 - version "3.0.1" 2126 - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 2127 - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 2128 - 2129 - isstream@~0.1.2: 2130 - version "0.1.2" 2131 - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 2132 - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 2133 - 2134 istanbul-lib-coverage@^3.0.0: 2135 version "3.0.0" 2136 resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" 2137 integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== 2138 2139 - istanbul-lib-instrument@^4.0.0: 2140 version "4.0.3" 2141 resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" 2142 integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== ··· 2172 html-escaper "^2.0.0" 2173 istanbul-lib-report "^3.0.0" 2174 2175 - jest-changed-files@^26.0.1: 2176 - version "26.0.1" 2177 - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.0.1.tgz#1334630c6a1ad75784120f39c3aa9278e59f349f" 2178 - integrity sha512-q8LP9Sint17HaE2LjxQXL+oYWW/WeeXMPE2+Op9X3mY8IEGFVc14xRxFjUuXUbcPAlDLhtWdIEt59GdQbn76Hw== 2179 dependencies: 2180 - "@jest/types" "^26.0.1" 2181 - execa "^4.0.0" 2182 - throat "^5.0.0" 2183 2184 - jest-cli@^26.0.1: 2185 - version "26.0.1" 2186 - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.0.1.tgz#3a42399a4cbc96a519b99ad069a117d955570cac" 2187 - integrity sha512-pFLfSOBcbG9iOZWaMK4Een+tTxi/Wcm34geqZEqrst9cZDkTQ1LZ2CnBrTlHWuYAiTMFr0EQeK52ScyFU8wK+w== 2188 dependencies: 2189 - "@jest/core" "^26.0.1" 2190 - "@jest/test-result" "^26.0.1" 2191 - "@jest/types" "^26.0.1" 2192 chalk "^4.0.0" 2193 exit "^0.1.2" 2194 graceful-fs "^4.2.4" 2195 import-local "^3.0.2" 2196 - is-ci "^2.0.0" 2197 - jest-config "^26.0.1" 2198 - jest-util "^26.0.1" 2199 - jest-validate "^26.0.1" 2200 prompts "^2.0.1" 2201 - yargs "^15.3.1" 2202 2203 - jest-config@^26.0.1: 2204 - version "26.0.1" 2205 - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.0.1.tgz#096a3d4150afadf719d1fab00e9a6fb2d6d67507" 2206 - integrity sha512-9mWKx2L1LFgOXlDsC4YSeavnblN6A4CPfXFiobq+YYLaBMymA/SczN7xYTSmLaEYHZOcB98UdoN4m5uNt6tztg== 2207 dependencies: 2208 "@babel/core" "^7.1.0" 2209 - "@jest/test-sequencer" "^26.0.1" 2210 - "@jest/types" "^26.0.1" 2211 - babel-jest "^26.0.1" 2212 chalk "^4.0.0" 2213 deepmerge "^4.2.2" 2214 glob "^7.1.1" 2215 graceful-fs "^4.2.4" 2216 - jest-environment-jsdom "^26.0.1" 2217 - jest-environment-node "^26.0.1" 2218 - jest-get-type "^26.0.0" 2219 - jest-jasmine2 "^26.0.1" 2220 - jest-regex-util "^26.0.0" 2221 - jest-resolve "^26.0.1" 2222 - jest-util "^26.0.1" 2223 - jest-validate "^26.0.1" 2224 - micromatch "^4.0.2" 2225 - pretty-format "^26.0.1" 2226 2227 - jest-diff@^26.0.1: 2228 - version "26.0.1" 2229 - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.0.1.tgz#c44ab3cdd5977d466de69c46929e0e57f89aa1de" 2230 - integrity sha512-odTcHyl5X+U+QsczJmOjWw5tPvww+y9Yim5xzqxVl/R1j4z71+fHW4g8qu1ugMmKdFdxw+AtQgs5mupPnzcIBQ== 2231 dependencies: 2232 chalk "^4.0.0" 2233 - diff-sequences "^26.0.0" 2234 - jest-get-type "^26.0.0" 2235 - pretty-format "^26.0.1" 2236 2237 - jest-docblock@^26.0.0: 2238 - version "26.0.0" 2239 - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" 2240 - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== 2241 dependencies: 2242 detect-newline "^3.0.0" 2243 2244 - jest-each@^26.0.1: 2245 - version "26.0.1" 2246 - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.0.1.tgz#633083061619302fc90dd8f58350f9d77d67be04" 2247 - integrity sha512-OTgJlwXCAR8NIWaXFL5DBbeS4QIYPuNASkzSwMCJO+ywo9BEa6TqkaSWsfR7VdbMLdgYJqSfQcIyjJCNwl5n4Q== 2248 dependencies: 2249 - "@jest/types" "^26.0.1" 2250 chalk "^4.0.0" 2251 - jest-get-type "^26.0.0" 2252 - jest-util "^26.0.1" 2253 - pretty-format "^26.0.1" 2254 2255 - jest-environment-jsdom@^26.0.1: 2256 - version "26.0.1" 2257 - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.0.1.tgz#217690852e5bdd7c846a4e3b50c8ffd441dfd249" 2258 - integrity sha512-u88NJa3aptz2Xix2pFhihRBAatwZHWwSiRLBDBQE1cdJvDjPvv7ZGA0NQBxWwDDn7D0g1uHqxM8aGgfA9Bx49g== 2259 dependencies: 2260 - "@jest/environment" "^26.0.1" 2261 - "@jest/fake-timers" "^26.0.1" 2262 - "@jest/types" "^26.0.1" 2263 - jest-mock "^26.0.1" 2264 - jest-util "^26.0.1" 2265 - jsdom "^16.2.2" 2266 2267 - jest-environment-node@^26.0.1: 2268 - version "26.0.1" 2269 - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.0.1.tgz#584a9ff623124ff6eeb49e0131b5f7612b310b13" 2270 - integrity sha512-4FRBWcSn5yVo0KtNav7+5NH5Z/tEgDLp7VRQVS5tCouWORxj+nI+1tOLutM07Zb2Qi7ja+HEDoOUkjBSWZg/IQ== 2271 dependencies: 2272 - "@jest/environment" "^26.0.1" 2273 - "@jest/fake-timers" "^26.0.1" 2274 - "@jest/types" "^26.0.1" 2275 - jest-mock "^26.0.1" 2276 - jest-util "^26.0.1" 2277 2278 - jest-get-type@^26.0.0: 2279 - version "26.0.0" 2280 - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" 2281 - integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== 2282 2283 - jest-haste-map@^26.0.1: 2284 - version "26.0.1" 2285 - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.0.1.tgz#40dcc03c43ac94d25b8618075804d09cd5d49de7" 2286 - integrity sha512-J9kBl/EdjmDsvyv7CiyKY5+DsTvVOScenprz/fGqfLg/pm1gdjbwwQ98nW0t+OIt+f+5nAVaElvn/6wP5KO7KA== 2287 dependencies: 2288 - "@jest/types" "^26.0.1" 2289 "@types/graceful-fs" "^4.1.2" 2290 anymatch "^3.0.3" 2291 fb-watchman "^2.0.0" 2292 graceful-fs "^4.2.4" 2293 - jest-serializer "^26.0.0" 2294 - jest-util "^26.0.1" 2295 - jest-worker "^26.0.0" 2296 - micromatch "^4.0.2" 2297 - sane "^4.0.3" 2298 walker "^1.0.7" 2299 - which "^2.0.2" 2300 optionalDependencies: 2301 - fsevents "^2.1.2" 2302 2303 - jest-jasmine2@^26.0.1: 2304 - version "26.0.1" 2305 - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.0.1.tgz#947c40ee816636ba23112af3206d6fa7b23c1c1c" 2306 - integrity sha512-ILaRyiWxiXOJ+RWTKupzQWwnPaeXPIoLS5uW41h18varJzd9/7I0QJGqg69fhTT1ev9JpSSo9QtalriUN0oqOg== 2307 dependencies: 2308 "@babel/traverse" "^7.1.0" 2309 - "@jest/environment" "^26.0.1" 2310 - "@jest/source-map" "^26.0.0" 2311 - "@jest/test-result" "^26.0.1" 2312 - "@jest/types" "^26.0.1" 2313 chalk "^4.0.0" 2314 co "^4.6.0" 2315 - expect "^26.0.1" 2316 is-generator-fn "^2.0.0" 2317 - jest-each "^26.0.1" 2318 - jest-matcher-utils "^26.0.1" 2319 - jest-message-util "^26.0.1" 2320 - jest-runtime "^26.0.1" 2321 - jest-snapshot "^26.0.1" 2322 - jest-util "^26.0.1" 2323 - pretty-format "^26.0.1" 2324 - throat "^5.0.0" 2325 2326 - jest-leak-detector@^26.0.1: 2327 - version "26.0.1" 2328 - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.0.1.tgz#79b19ab3f41170e0a78eb8fa754a116d3447fb8c" 2329 - integrity sha512-93FR8tJhaYIWrWsbmVN1pQ9ZNlbgRpfvrnw5LmgLRX0ckOJ8ut/I35CL7awi2ecq6Ca4lL59bEK9hr7nqoHWPA== 2330 dependencies: 2331 - jest-get-type "^26.0.0" 2332 - pretty-format "^26.0.1" 2333 2334 - jest-matcher-utils@^26.0.1: 2335 - version "26.0.1" 2336 - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.0.1.tgz#12e1fc386fe4f14678f4cc8dbd5ba75a58092911" 2337 - integrity sha512-PUMlsLth0Azen8Q2WFTwnSkGh2JZ8FYuwijC8NR47vXKpsrKmA1wWvgcj1CquuVfcYiDEdj985u5Wmg7COEARw== 2338 dependencies: 2339 chalk "^4.0.0" 2340 - jest-diff "^26.0.1" 2341 - jest-get-type "^26.0.0" 2342 - pretty-format "^26.0.1" 2343 2344 - jest-message-util@^26.0.1: 2345 - version "26.0.1" 2346 - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.0.1.tgz#07af1b42fc450b4cc8e90e4c9cef11b33ce9b0ac" 2347 - integrity sha512-CbK8uQREZ8umUfo8+zgIfEt+W7HAHjQCoRaNs4WxKGhAYBGwEyvxuK81FXa7VeB9pwDEXeeKOB2qcsNVCAvB7Q== 2348 dependencies: 2349 - "@babel/code-frame" "^7.0.0" 2350 - "@jest/types" "^26.0.1" 2351 - "@types/stack-utils" "^1.0.1" 2352 chalk "^4.0.0" 2353 graceful-fs "^4.2.4" 2354 - micromatch "^4.0.2" 2355 slash "^3.0.0" 2356 - stack-utils "^2.0.2" 2357 2358 - jest-mock@^26.0.1: 2359 - version "26.0.1" 2360 - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.0.1.tgz#7fd1517ed4955397cf1620a771dc2d61fad8fd40" 2361 - integrity sha512-MpYTBqycuPYSY6xKJognV7Ja46/TeRbAZept987Zp+tuJvMN0YBWyyhG9mXyYQaU3SBI0TUlSaO5L3p49agw7Q== 2362 dependencies: 2363 - "@jest/types" "^26.0.1" 2364 2365 - jest-pnp-resolver@^1.2.1: 2366 - version "1.2.1" 2367 - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" 2368 - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== 2369 2370 - jest-regex-util@^26.0.0: 2371 - version "26.0.0" 2372 - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" 2373 - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== 2374 2375 - jest-resolve-dependencies@^26.0.1: 2376 - version "26.0.1" 2377 - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.0.1.tgz#607ba7ccc32151d185a477cff45bf33bce417f0b" 2378 - integrity sha512-9d5/RS/ft0vB/qy7jct/qAhzJsr6fRQJyGAFigK3XD4hf9kIbEH5gks4t4Z7kyMRhowU6HWm/o8ILqhaHdSqLw== 2379 dependencies: 2380 - "@jest/types" "^26.0.1" 2381 - jest-regex-util "^26.0.0" 2382 - jest-snapshot "^26.0.1" 2383 2384 - jest-resolve@^26.0.1: 2385 - version "26.0.1" 2386 - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.0.1.tgz#21d1ee06f9ea270a343a8893051aeed940cde736" 2387 - integrity sha512-6jWxk0IKZkPIVTvq6s72RH735P8f9eCJW3IM5CX/SJFeKq1p2cZx0U49wf/SdMlhaB/anann5J2nCJj6HrbezQ== 2388 dependencies: 2389 - "@jest/types" "^26.0.1" 2390 chalk "^4.0.0" 2391 graceful-fs "^4.2.4" 2392 - jest-pnp-resolver "^1.2.1" 2393 - jest-util "^26.0.1" 2394 - read-pkg-up "^7.0.1" 2395 - resolve "^1.17.0" 2396 slash "^3.0.0" 2397 2398 - jest-runner@^26.0.1: 2399 - version "26.0.1" 2400 - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.0.1.tgz#ea03584b7ae4bacfb7e533d680a575a49ae35d50" 2401 - integrity sha512-CApm0g81b49Znm4cZekYQK67zY7kkB4umOlI2Dx5CwKAzdgw75EN+ozBHRvxBzwo1ZLYZ07TFxkaPm+1t4d8jA== 2402 dependencies: 2403 - "@jest/console" "^26.0.1" 2404 - "@jest/environment" "^26.0.1" 2405 - "@jest/test-result" "^26.0.1" 2406 - "@jest/types" "^26.0.1" 2407 chalk "^4.0.0" 2408 exit "^0.1.2" 2409 graceful-fs "^4.2.4" 2410 - jest-config "^26.0.1" 2411 - jest-docblock "^26.0.0" 2412 - jest-haste-map "^26.0.1" 2413 - jest-jasmine2 "^26.0.1" 2414 - jest-leak-detector "^26.0.1" 2415 - jest-message-util "^26.0.1" 2416 - jest-resolve "^26.0.1" 2417 - jest-runtime "^26.0.1" 2418 - jest-util "^26.0.1" 2419 - jest-worker "^26.0.0" 2420 source-map-support "^0.5.6" 2421 - throat "^5.0.0" 2422 2423 - jest-runtime@^26.0.1: 2424 - version "26.0.1" 2425 - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.0.1.tgz#a121a6321235987d294168e282d52b364d7d3f89" 2426 - integrity sha512-Ci2QhYFmANg5qaXWf78T2Pfo6GtmIBn2rRaLnklRyEucmPccmCKvS9JPljcmtVamsdMmkyNkVFb9pBTD6si9Lw== 2427 dependencies: 2428 - "@jest/console" "^26.0.1" 2429 - "@jest/environment" "^26.0.1" 2430 - "@jest/fake-timers" "^26.0.1" 2431 - "@jest/globals" "^26.0.1" 2432 - "@jest/source-map" "^26.0.0" 2433 - "@jest/test-result" "^26.0.1" 2434 - "@jest/transform" "^26.0.1" 2435 - "@jest/types" "^26.0.1" 2436 - "@types/yargs" "^15.0.0" 2437 chalk "^4.0.0" 2438 collect-v8-coverage "^1.0.0" 2439 exit "^0.1.2" 2440 glob "^7.1.3" 2441 graceful-fs "^4.2.4" 2442 - jest-config "^26.0.1" 2443 - jest-haste-map "^26.0.1" 2444 - jest-message-util "^26.0.1" 2445 - jest-mock "^26.0.1" 2446 - jest-regex-util "^26.0.0" 2447 - jest-resolve "^26.0.1" 2448 - jest-snapshot "^26.0.1" 2449 - jest-util "^26.0.1" 2450 - jest-validate "^26.0.1" 2451 slash "^3.0.0" 2452 strip-bom "^4.0.0" 2453 - yargs "^15.3.1" 2454 2455 - jest-serializer@^26.0.0: 2456 - version "26.0.0" 2457 - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.0.0.tgz#f6c521ddb976943b93e662c0d4d79245abec72a3" 2458 - integrity sha512-sQGXLdEGWFAE4wIJ2ZaIDb+ikETlUirEOBsLXdoBbeLhTHkZUJwgk3+M8eyFizhM6le43PDCCKPA1hzkSDo4cQ== 2459 dependencies: 2460 graceful-fs "^4.2.4" 2461 2462 - jest-snapshot@^26.0.1: 2463 - version "26.0.1" 2464 - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.0.1.tgz#1baa942bd83d47b837a84af7fcf5fd4a236da399" 2465 - integrity sha512-jxd+cF7+LL+a80qh6TAnTLUZHyQoWwEHSUFJjkw35u3Gx+BZUNuXhYvDqHXr62UQPnWo2P6fvQlLjsU93UKyxA== 2466 dependencies: 2467 "@babel/types" "^7.0.0" 2468 - "@jest/types" "^26.0.1" 2469 - "@types/prettier" "^2.0.0" 2470 chalk "^4.0.0" 2471 - expect "^26.0.1" 2472 graceful-fs "^4.2.4" 2473 - jest-diff "^26.0.1" 2474 - jest-get-type "^26.0.0" 2475 - jest-matcher-utils "^26.0.1" 2476 - jest-message-util "^26.0.1" 2477 - jest-resolve "^26.0.1" 2478 - make-dir "^3.0.0" 2479 natural-compare "^1.4.0" 2480 - pretty-format "^26.0.1" 2481 semver "^7.3.2" 2482 2483 - jest-util@^26.0.1: 2484 - version "26.0.1" 2485 - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.0.1.tgz#72c4c51177b695fdd795ca072a6f94e3d7cef00a" 2486 - integrity sha512-byQ3n7ad1BO/WyFkYvlWQHTsomB6GIewBh8tlGtusiylAlaxQ1UpS0XYH0ngOyhZuHVLN79Qvl6/pMiDMSSG1g== 2487 dependencies: 2488 - "@jest/types" "^26.0.1" 2489 chalk "^4.0.0" 2490 graceful-fs "^4.2.4" 2491 - is-ci "^2.0.0" 2492 - make-dir "^3.0.0" 2493 2494 - jest-validate@^26.0.1: 2495 - version "26.0.1" 2496 - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.0.1.tgz#a62987e1da5b7f724130f904725e22f4e5b2e23c" 2497 - integrity sha512-u0xRc+rbmov/VqXnX3DlkxD74rHI/CfS5xaV2VpeaVySjbb1JioNVOyly5b56q2l9ZKe7bVG5qWmjfctkQb0bA== 2498 dependencies: 2499 - "@jest/types" "^26.0.1" 2500 - camelcase "^6.0.0" 2501 chalk "^4.0.0" 2502 - jest-get-type "^26.0.0" 2503 leven "^3.1.0" 2504 - pretty-format "^26.0.1" 2505 2506 - jest-watcher@^26.0.1: 2507 - version "26.0.1" 2508 - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.0.1.tgz#5b5e3ebbdf10c240e22a98af66d645631afda770" 2509 - integrity sha512-pdZPydsS8475f89kGswaNsN3rhP6lnC3/QDCppP7bg1L9JQz7oU9Mb/5xPETk1RHDCWeqmVC47M4K5RR7ejxFw== 2510 dependencies: 2511 - "@jest/test-result" "^26.0.1" 2512 - "@jest/types" "^26.0.1" 2513 ansi-escapes "^4.2.1" 2514 chalk "^4.0.0" 2515 - jest-util "^26.0.1" 2516 string-length "^4.0.1" 2517 2518 - jest-worker@^26.0.0: 2519 - version "26.0.0" 2520 - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.0.0.tgz#4920c7714f0a96c6412464718d0c58a3df3fb066" 2521 - integrity sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw== 2522 dependencies: 2523 merge-stream "^2.0.0" 2524 - supports-color "^7.0.0" 2525 2526 - jest@^26.0.1: 2527 - version "26.0.1" 2528 - resolved "https://registry.yarnpkg.com/jest/-/jest-26.0.1.tgz#5c51a2e58dff7525b65f169721767173bf832694" 2529 - integrity sha512-29Q54kn5Bm7ZGKIuH2JRmnKl85YRigp0o0asTc6Sb6l2ch1DCXIeZTLLFy9ultJvhkTqbswF5DEx4+RlkmCxWg== 2530 dependencies: 2531 - "@jest/core" "^26.0.1" 2532 import-local "^3.0.2" 2533 - jest-cli "^26.0.1" 2534 2535 js-tokens@^4.0.0: 2536 version "4.0.0" ··· 2545 argparse "^1.0.7" 2546 esprima "^4.0.0" 2547 2548 - jsbn@~0.1.0: 2549 - version "0.1.1" 2550 - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 2551 - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 2552 - 2553 - jsdom@^16.2.2: 2554 - version "16.2.2" 2555 - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.2.2.tgz#76f2f7541646beb46a938f5dc476b88705bedf2b" 2556 - integrity sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg== 2557 dependencies: 2558 - abab "^2.0.3" 2559 - acorn "^7.1.1" 2560 acorn-globals "^6.0.0" 2561 cssom "^0.4.4" 2562 - cssstyle "^2.2.0" 2563 data-urls "^2.0.0" 2564 - decimal.js "^10.2.0" 2565 domexception "^2.0.1" 2566 - escodegen "^1.14.1" 2567 html-encoding-sniffer "^2.0.1" 2568 - is-potential-custom-element-name "^1.0.0" 2569 nwsapi "^2.2.0" 2570 - parse5 "5.1.1" 2571 - request "^2.88.2" 2572 - request-promise-native "^1.0.8" 2573 - saxes "^5.0.0" 2574 symbol-tree "^3.2.4" 2575 - tough-cookie "^3.0.1" 2576 w3c-hr-time "^1.0.2" 2577 w3c-xmlserializer "^2.0.0" 2578 - webidl-conversions "^6.0.0" 2579 whatwg-encoding "^1.0.5" 2580 whatwg-mimetype "^2.3.0" 2581 - whatwg-url "^8.0.0" 2582 - ws "^7.2.3" 2583 xml-name-validator "^3.0.0" 2584 2585 jsesc@^2.5.1: ··· 2597 resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 2598 integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 2599 2600 - json-schema-traverse@^0.4.1: 2601 - version "0.4.1" 2602 - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 2603 - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 2604 - 2605 - json-schema@0.2.3: 2606 - version "0.2.3" 2607 - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 2608 - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 2609 - 2610 - json-stringify-safe@~5.0.1: 2611 - version "5.0.1" 2612 - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 2613 - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 2614 - 2615 json5@^2.1.2: 2616 version "2.1.3" 2617 resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" ··· 2619 dependencies: 2620 minimist "^1.2.5" 2621 2622 - jsprim@^1.2.2: 2623 - version "1.4.1" 2624 - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 2625 - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 2626 - dependencies: 2627 - assert-plus "1.0.0" 2628 - extsprintf "1.3.0" 2629 - json-schema "0.2.3" 2630 - verror "1.10.0" 2631 - 2632 - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 2633 - version "3.2.2" 2634 - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 2635 - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 2636 - dependencies: 2637 - is-buffer "^1.1.5" 2638 - 2639 - kind-of@^4.0.0: 2640 - version "4.0.0" 2641 - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 2642 - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 2643 - dependencies: 2644 - is-buffer "^1.1.5" 2645 - 2646 - kind-of@^5.0.0: 2647 - version "5.1.0" 2648 - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 2649 - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 2650 - 2651 - kind-of@^6.0.0, kind-of@^6.0.2: 2652 - version "6.0.3" 2653 - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 2654 - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 2655 - 2656 kleur@^3.0.3: 2657 version "3.0.3" 2658 resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" ··· 2676 resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 2677 integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 2678 2679 - lint-staged@^10.2.2: 2680 - version "10.2.2" 2681 - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.2.tgz#901403c120eb5d9443a0358b55038b04c8a7db9b" 2682 - integrity sha512-78kNqNdDeKrnqWsexAmkOU3Z5wi+1CsQmUmfCuYgMTE8E4rAIX8RHW7xgxwAZ+LAayb7Cca4uYX4P3LlevzjVg== 2683 dependencies: 2684 - chalk "^4.0.0" 2685 - commander "^5.0.0" 2686 - cosmiconfig "^6.0.0" 2687 - debug "^4.1.1" 2688 - dedent "^0.7.0" 2689 - execa "^4.0.0" 2690 - listr2 "1.3.8" 2691 - log-symbols "^3.0.0" 2692 - micromatch "^4.0.2" 2693 normalize-path "^3.0.0" 2694 please-upgrade-node "^3.2.0" 2695 string-argv "0.3.1" 2696 stringify-object "^3.3.0" 2697 2698 - listr2@1.3.8: 2699 - version "1.3.8" 2700 - resolved "https://registry.yarnpkg.com/listr2/-/listr2-1.3.8.tgz#30924d79de1e936d8c40af54b6465cb814a9c828" 2701 - integrity sha512-iRDRVTgSDz44tBeBBg/35TQz4W+EZBWsDUq7hPpqeUHm7yLPNll0rkwW3lIX9cPAK7l+x95mGWLpxjqxftNfZA== 2702 dependencies: 2703 - "@samverschueren/stream-to-observable" "^0.3.0" 2704 - chalk "^3.0.0" 2705 - cli-cursor "^3.1.0" 2706 cli-truncate "^2.1.0" 2707 - elegant-spinner "^2.0.0" 2708 - enquirer "^2.3.4" 2709 - figures "^3.2.0" 2710 - indent-string "^4.0.0" 2711 log-update "^4.0.0" 2712 p-map "^4.0.0" 2713 - pad "^3.2.0" 2714 - rxjs "^6.3.3" 2715 through "^2.3.8" 2716 - uuid "^7.0.2" 2717 2718 load-json-file@^4.0.0: 2719 version "4.0.0" ··· 2732 dependencies: 2733 p-locate "^4.1.0" 2734 2735 lodash.sortby@^4.7.0: 2736 version "4.7.0" 2737 resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 2738 integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= 2739 2740 - lodash@^4.17.13, lodash@^4.17.15: 2741 version "4.17.15" 2742 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 2743 integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 2744 2745 - log-symbols@^3.0.0: 2746 - version "3.0.0" 2747 - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" 2748 - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== 2749 dependencies: 2750 - chalk "^2.4.2" 2751 2752 log-update@^4.0.0: 2753 version "4.0.0" ··· 2759 slice-ansi "^4.0.0" 2760 wrap-ansi "^6.2.0" 2761 2762 - magic-string@^0.25.0, magic-string@^0.25.2, magic-string@^0.25.7: 2763 version "0.25.7" 2764 resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 2765 integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== ··· 2780 dependencies: 2781 tmpl "1.0.x" 2782 2783 - map-cache@^0.2.2: 2784 - version "0.2.2" 2785 - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 2786 - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 2787 - 2788 - map-visit@^1.0.0: 2789 - version "1.0.0" 2790 - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 2791 - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 2792 - dependencies: 2793 - object-visit "^1.0.0" 2794 - 2795 memorystream@^0.3.1: 2796 version "0.3.1" 2797 resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" ··· 2802 resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2803 integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2804 2805 - micromatch@^3.1.4: 2806 - version "3.1.10" 2807 - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 2808 - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 2809 - dependencies: 2810 - arr-diff "^4.0.0" 2811 - array-unique "^0.3.2" 2812 - braces "^2.3.1" 2813 - define-property "^2.0.2" 2814 - extend-shallow "^3.0.2" 2815 - extglob "^2.0.4" 2816 - fragment-cache "^0.2.1" 2817 - kind-of "^6.0.2" 2818 - nanomatch "^1.2.9" 2819 - object.pick "^1.3.0" 2820 - regex-not "^1.0.0" 2821 - snapdragon "^0.8.1" 2822 - to-regex "^3.0.2" 2823 - 2824 - micromatch@^4.0.2: 2825 - version "4.0.2" 2826 - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 2827 - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 2828 dependencies: 2829 braces "^3.0.1" 2830 - picomatch "^2.0.5" 2831 2832 mime-db@1.44.0: 2833 version "1.44.0" 2834 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 2835 integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 2836 2837 - mime-types@^2.1.12, mime-types@~2.1.19: 2838 version "2.1.27" 2839 resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 2840 integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== ··· 2853 dependencies: 2854 brace-expansion "^1.1.7" 2855 2856 - minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: 2857 version "1.2.5" 2858 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2859 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2860 2861 - mixin-deep@^1.2.0: 2862 - version "1.3.2" 2863 - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 2864 - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== 2865 - dependencies: 2866 - for-in "^1.0.2" 2867 - is-extendable "^1.0.1" 2868 - 2869 - ms@2.0.0: 2870 - version "2.0.0" 2871 - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2872 - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 2873 - 2874 - ms@^2.1.1: 2875 version "2.1.2" 2876 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2877 integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2878 2879 - nanomatch@^1.2.9: 2880 - version "1.2.13" 2881 - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 2882 - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 2883 dependencies: 2884 - arr-diff "^4.0.0" 2885 - array-unique "^0.3.2" 2886 - define-property "^2.0.2" 2887 - extend-shallow "^3.0.2" 2888 - fragment-cache "^0.2.1" 2889 - is-windows "^1.0.2" 2890 - kind-of "^6.0.2" 2891 - object.pick "^1.3.0" 2892 - regex-not "^1.0.0" 2893 - snapdragon "^0.8.1" 2894 - to-regex "^3.0.1" 2895 2896 natural-compare@^1.4.0: 2897 version "1.4.0" ··· 2913 resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" 2914 integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= 2915 2916 - node-notifier@^7.0.0: 2917 - version "7.0.0" 2918 - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.0.tgz#513bc42f2aa3a49fce1980a7ff375957c71f718a" 2919 - integrity sha512-y8ThJESxsHcak81PGpzWwQKxzk+5YtP3IxR8AYdpXQ1IB6FmcVzFdZXrkPin49F/DKUCfeeiziB8ptY9npzGuA== 2920 - dependencies: 2921 - growly "^1.3.0" 2922 - is-wsl "^2.1.1" 2923 - semver "^7.2.1" 2924 - shellwords "^0.1.1" 2925 - uuid "^7.0.3" 2926 - which "^2.0.2" 2927 2928 - normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: 2929 version "2.5.0" 2930 resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 2931 integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== ··· 2934 resolve "^1.10.0" 2935 semver "2 || 3 || 4 || 5" 2936 validate-npm-package-license "^3.0.1" 2937 - 2938 - normalize-path@^2.1.1: 2939 - version "2.1.1" 2940 - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 2941 - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 2942 - dependencies: 2943 - remove-trailing-separator "^1.0.1" 2944 2945 normalize-path@^3.0.0: 2946 version "3.0.0" ··· 2962 shell-quote "^1.6.1" 2963 string.prototype.padend "^3.0.0" 2964 2965 - npm-run-path@^2.0.0: 2966 - version "2.0.2" 2967 - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 2968 - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 2969 - dependencies: 2970 - path-key "^2.0.0" 2971 - 2972 - npm-run-path@^4.0.0: 2973 version "4.0.1" 2974 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2975 integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== ··· 2981 resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 2982 integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 2983 2984 - oauth-sign@~0.9.0: 2985 - version "0.9.0" 2986 - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 2987 - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 2988 - 2989 - object-copy@^0.1.0: 2990 - version "0.1.0" 2991 - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 2992 - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 2993 - dependencies: 2994 - copy-descriptor "^0.1.0" 2995 - define-property "^0.2.5" 2996 - kind-of "^3.0.3" 2997 2998 object-inspect@^1.7.0: 2999 version "1.7.0" ··· 3005 resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 3006 integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 3007 3008 - object-visit@^1.0.0: 3009 - version "1.0.1" 3010 - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 3011 - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 3012 - dependencies: 3013 - isobject "^3.0.0" 3014 - 3015 object.assign@^4.1.0: 3016 version "4.1.0" 3017 resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" ··· 3022 has-symbols "^1.0.0" 3023 object-keys "^1.0.11" 3024 3025 - object.pick@^1.3.0: 3026 - version "1.3.0" 3027 - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 3028 - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 3029 - dependencies: 3030 - isobject "^3.0.1" 3031 - 3032 - once@^1.3.0, once@^1.3.1, once@^1.4.0: 3033 version "1.4.0" 3034 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 3035 integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= ··· 3043 dependencies: 3044 mimic-fn "^2.1.0" 3045 3046 opencollective-postinstall@^2.0.2: 3047 - version "2.0.2" 3048 - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" 3049 - integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== 3050 3051 optionator@^0.8.1: 3052 version "0.8.3" ··· 3065 resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" 3066 integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== 3067 3068 - p-finally@^1.0.0: 3069 - version "1.0.0" 3070 - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 3071 - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 3072 - 3073 p-limit@^2.2.0: 3074 version "2.3.0" 3075 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" ··· 3077 dependencies: 3078 p-try "^2.0.0" 3079 3080 p-locate@^4.1.0: 3081 version "4.1.0" 3082 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" ··· 3084 dependencies: 3085 p-limit "^2.2.0" 3086 3087 p-map@^4.0.0: 3088 version "4.0.0" 3089 resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" ··· 3095 version "2.2.0" 3096 resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 3097 integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 3098 - 3099 - pad@^3.2.0: 3100 - version "3.2.0" 3101 - resolved "https://registry.yarnpkg.com/pad/-/pad-3.2.0.tgz#be7a1d1cb6757049b4ad5b70e71977158fea95d1" 3102 - integrity sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg== 3103 - dependencies: 3104 - wcwidth "^1.0.1" 3105 3106 parent-module@^1.0.0: 3107 version "1.0.1" ··· 3128 json-parse-better-errors "^1.0.1" 3129 lines-and-columns "^1.1.6" 3130 3131 - parse5@5.1.1: 3132 - version "5.1.1" 3133 - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" 3134 - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== 3135 - 3136 - pascalcase@^0.1.1: 3137 - version "0.1.1" 3138 - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 3139 - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 3140 3141 path-exists@^4.0.0: 3142 version "4.0.0" ··· 3148 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 3149 integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 3150 3151 - path-key@^2.0.0, path-key@^2.0.1: 3152 version "2.0.1" 3153 resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 3154 integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= ··· 3175 resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 3176 integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 3177 3178 - performance-now@^2.1.0: 3179 - version "2.1.0" 3180 - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 3181 - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 3182 - 3183 - picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.2: 3184 version "2.2.2" 3185 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 3186 integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 3187 3188 pidtree@^0.3.0: 3189 version "0.3.1" ··· 3209 dependencies: 3210 find-up "^4.0.0" 3211 3212 please-upgrade-node@^3.2.0: 3213 version "3.2.0" 3214 resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" ··· 3216 dependencies: 3217 semver-compare "^1.0.0" 3218 3219 - posix-character-classes@^0.1.0: 3220 - version "0.1.1" 3221 - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 3222 - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 3223 - 3224 prelude-ls@~1.1.2: 3225 version "1.1.2" 3226 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 3227 integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 3228 3229 - prettier@^2.0.5: 3230 - version "2.0.5" 3231 - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" 3232 - integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== 3233 3234 - pretty-format@^26.0.1: 3235 - version "26.0.1" 3236 - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.0.1.tgz#a4fe54fe428ad2fd3413ca6bbd1ec8c2e277e197" 3237 - integrity sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw== 3238 dependencies: 3239 - "@jest/types" "^26.0.1" 3240 ansi-regex "^5.0.0" 3241 - ansi-styles "^4.0.0" 3242 - react-is "^16.12.0" 3243 3244 prompts@^2.0.1: 3245 version "2.3.2" ··· 3249 kleur "^3.0.3" 3250 sisteransi "^1.0.4" 3251 3252 - psl@^1.1.28: 3253 version "1.8.0" 3254 resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 3255 integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 3256 3257 - pump@^3.0.0: 3258 - version "3.0.0" 3259 - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 3260 - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 3261 - dependencies: 3262 - end-of-stream "^1.1.0" 3263 - once "^1.3.1" 3264 - 3265 - punycode@^2.1.0, punycode@^2.1.1: 3266 version "2.1.1" 3267 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 3268 integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 3269 3270 - qs@~6.5.2: 3271 - version "6.5.2" 3272 - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 3273 - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 3274 - 3275 - react-is@^16.12.0: 3276 - version "16.13.1" 3277 - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 3278 - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 3279 - 3280 - read-pkg-up@^7.0.1: 3281 - version "7.0.1" 3282 - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" 3283 - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== 3284 - dependencies: 3285 - find-up "^4.1.0" 3286 - read-pkg "^5.2.0" 3287 - type-fest "^0.8.1" 3288 3289 read-pkg@^3.0.0: 3290 version "3.0.0" ··· 3295 normalize-package-data "^2.3.2" 3296 path-type "^3.0.0" 3297 3298 - read-pkg@^5.2.0: 3299 - version "5.2.0" 3300 - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" 3301 - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== 3302 dependencies: 3303 - "@types/normalize-package-data" "^2.4.0" 3304 - normalize-package-data "^2.5.0" 3305 - parse-json "^5.0.0" 3306 - type-fest "^0.6.0" 3307 3308 regenerate-unicode-properties@^8.0.2: 3309 version "8.2.0" ··· 3317 resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 3318 integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 3319 3320 - regex-not@^1.0.0, regex-not@^1.0.2: 3321 - version "1.0.2" 3322 - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 3323 - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 3324 - dependencies: 3325 - extend-shallow "^3.0.2" 3326 - safe-regex "^1.1.0" 3327 - 3328 regexpu-core@4.5.4: 3329 version "4.5.4" 3330 resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" ··· 3354 resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 3355 integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 3356 3357 - repeat-element@^1.1.2: 3358 - version "1.1.3" 3359 - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 3360 - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== 3361 - 3362 - repeat-string@^1.6.1: 3363 - version "1.6.1" 3364 - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 3365 - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 3366 - 3367 - request-promise-core@1.1.3: 3368 - version "1.1.3" 3369 - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" 3370 - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== 3371 - dependencies: 3372 - lodash "^4.17.15" 3373 - 3374 - request-promise-native@^1.0.8: 3375 - version "1.0.8" 3376 - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" 3377 - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== 3378 - dependencies: 3379 - request-promise-core "1.1.3" 3380 - stealthy-require "^1.1.1" 3381 - tough-cookie "^2.3.3" 3382 - 3383 - request@^2.88.2: 3384 - version "2.88.2" 3385 - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 3386 - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 3387 - dependencies: 3388 - aws-sign2 "~0.7.0" 3389 - aws4 "^1.8.0" 3390 - caseless "~0.12.0" 3391 - combined-stream "~1.0.6" 3392 - extend "~3.0.2" 3393 - forever-agent "~0.6.1" 3394 - form-data "~2.3.2" 3395 - har-validator "~5.1.3" 3396 - http-signature "~1.2.0" 3397 - is-typedarray "~1.0.0" 3398 - isstream "~0.1.2" 3399 - json-stringify-safe "~5.0.1" 3400 - mime-types "~2.1.19" 3401 - oauth-sign "~0.9.0" 3402 - performance-now "^2.1.0" 3403 - qs "~6.5.2" 3404 - safe-buffer "^5.1.2" 3405 - tough-cookie "~2.5.0" 3406 - tunnel-agent "^0.6.0" 3407 - uuid "^3.3.2" 3408 3409 require-directory@^2.1.1: 3410 version "2.1.1" 3411 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 3412 integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 3413 3414 - require-main-filename@^2.0.0: 3415 - version "2.0.0" 3416 - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 3417 - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 3418 - 3419 resolve-cwd@^3.0.0: 3420 version "3.0.0" 3421 resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" ··· 3433 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 3434 integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 3435 3436 - resolve-url@^0.2.1: 3437 - version "0.2.1" 3438 - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 3439 - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 3440 - 3441 - resolve@^1.10.0, resolve@^1.11.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2: 3442 version "1.17.0" 3443 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 3444 integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 3445 dependencies: 3446 path-parse "^1.0.6" 3447 3448 restore-cursor@^3.1.0: 3449 version "3.1.0" 3450 resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" ··· 3453 onetime "^5.1.0" 3454 signal-exit "^3.0.2" 3455 3456 - ret@~0.1.10: 3457 - version "0.1.15" 3458 - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 3459 - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 3460 - 3461 rimraf@^3.0.0, rimraf@^3.0.2: 3462 version "3.0.2" 3463 resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" ··· 3465 dependencies: 3466 glob "^7.1.3" 3467 3468 - rollup-plugin-babel@^4.4.0: 3469 - version "4.4.0" 3470 - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" 3471 - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== 3472 - dependencies: 3473 - "@babel/helper-module-imports" "^7.0.0" 3474 - rollup-pluginutils "^2.8.1" 3475 - 3476 - rollup-pluginutils@^2.8.1: 3477 - version "2.8.2" 3478 - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 3479 - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 3480 - dependencies: 3481 - estree-walker "^0.6.1" 3482 - 3483 - rollup@^2.10.2: 3484 - version "2.10.2" 3485 - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.10.2.tgz#9adfcf8ab36861b5b0f8ca7b436f5866e3e9e200" 3486 - integrity sha512-tivFM8UXBlYOUqpBYD3pRktYpZvK/eiCQ190eYlrAyrpE/lzkyG2gbawroNdbwmzyUc7Y4eT297xfzv0BDh9qw== 3487 optionalDependencies: 3488 - fsevents "~2.1.2" 3489 - 3490 - rsvp@^4.8.4: 3491 - version "4.8.5" 3492 - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" 3493 - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== 3494 3495 - rxjs@^6.3.3: 3496 - version "6.5.5" 3497 - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" 3498 - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== 3499 dependencies: 3500 tslib "^1.9.0" 3501 3502 - safe-buffer@^5.0.1, safe-buffer@^5.1.2: 3503 - version "5.2.1" 3504 - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 3505 - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 3506 - 3507 - safe-buffer@~5.1.1: 3508 version "5.1.2" 3509 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 3510 integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 3511 3512 - safe-regex@^1.1.0: 3513 - version "1.1.0" 3514 - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 3515 - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 3516 - dependencies: 3517 - ret "~0.1.10" 3518 - 3519 - "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 3520 version "2.1.2" 3521 resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 3522 integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 3523 3524 - sane@^4.0.3: 3525 - version "4.1.0" 3526 - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" 3527 - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== 3528 - dependencies: 3529 - "@cnakazawa/watch" "^1.0.3" 3530 - anymatch "^2.0.0" 3531 - capture-exit "^2.0.0" 3532 - exec-sh "^0.3.2" 3533 - execa "^1.0.0" 3534 - fb-watchman "^2.0.0" 3535 - micromatch "^3.1.4" 3536 - minimist "^1.1.1" 3537 - walker "~1.0.5" 3538 - 3539 - saxes@^5.0.0: 3540 version "5.0.1" 3541 resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 3542 integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== ··· 3548 resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 3549 integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 3550 3551 - semver-regex@^2.0.0: 3552 - version "2.0.0" 3553 - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" 3554 - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== 3555 3556 "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: 3557 version "5.7.1" ··· 3563 resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 3564 integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 3565 3566 - semver@^7.2.1, semver@^7.3.2: 3567 version "7.3.2" 3568 resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 3569 integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 3570 3571 - set-blocking@^2.0.0: 3572 - version "2.0.0" 3573 - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 3574 - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 3575 - 3576 - set-value@^2.0.0, set-value@^2.0.1: 3577 - version "2.0.1" 3578 - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" 3579 - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== 3580 - dependencies: 3581 - extend-shallow "^2.0.1" 3582 - is-extendable "^0.1.1" 3583 - is-plain-object "^2.0.3" 3584 - split-string "^3.0.1" 3585 - 3586 shebang-command@^1.2.0: 3587 version "1.2.0" 3588 resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" ··· 3612 resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 3613 integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 3614 3615 - shellwords@^0.1.1: 3616 - version "0.1.1" 3617 - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" 3618 - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== 3619 - 3620 - signal-exit@^3.0.0, signal-exit@^3.0.2: 3621 version "3.0.3" 3622 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 3623 integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== ··· 3650 astral-regex "^2.0.0" 3651 is-fullwidth-code-point "^3.0.0" 3652 3653 - snapdragon-node@^2.0.1: 3654 - version "2.1.1" 3655 - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 3656 - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 3657 - dependencies: 3658 - define-property "^1.0.0" 3659 - isobject "^3.0.0" 3660 - snapdragon-util "^3.0.1" 3661 - 3662 - snapdragon-util@^3.0.1: 3663 - version "3.0.1" 3664 - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 3665 - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 3666 - dependencies: 3667 - kind-of "^3.2.0" 3668 - 3669 - snapdragon@^0.8.1: 3670 - version "0.8.2" 3671 - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 3672 - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 3673 - dependencies: 3674 - base "^0.11.1" 3675 - debug "^2.2.0" 3676 - define-property "^0.2.5" 3677 - extend-shallow "^2.0.1" 3678 - map-cache "^0.2.2" 3679 - source-map "^0.5.6" 3680 - source-map-resolve "^0.5.0" 3681 - use "^3.1.0" 3682 - 3683 - source-map-resolve@^0.5.0: 3684 - version "0.5.3" 3685 - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" 3686 - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== 3687 - dependencies: 3688 - atob "^2.1.2" 3689 - decode-uri-component "^0.2.0" 3690 - resolve-url "^0.2.1" 3691 - source-map-url "^0.4.0" 3692 - urix "^0.1.0" 3693 - 3694 source-map-support@^0.5.6: 3695 version "0.5.19" 3696 resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" ··· 3699 buffer-from "^1.0.0" 3700 source-map "^0.6.0" 3701 3702 - source-map-url@^0.4.0: 3703 - version "0.4.0" 3704 - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 3705 - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 3706 - 3707 - source-map@^0.5.0, source-map@^0.5.6: 3708 version "0.5.7" 3709 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 3710 integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= ··· 3719 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 3720 integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 3721 3722 - sourcemap-codec@^1.4.4: 3723 version "1.4.8" 3724 resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 3725 integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== ··· 3750 resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 3751 integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 3752 3753 - split-string@^3.0.1, split-string@^3.0.2: 3754 - version "3.1.0" 3755 - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 3756 - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 3757 - dependencies: 3758 - extend-shallow "^3.0.0" 3759 - 3760 sprintf-js@~1.0.2: 3761 version "1.0.3" 3762 resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3763 integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 3764 3765 - sshpk@^1.7.0: 3766 - version "1.16.1" 3767 - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 3768 - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 3769 - dependencies: 3770 - asn1 "~0.2.3" 3771 - assert-plus "^1.0.0" 3772 - bcrypt-pbkdf "^1.0.0" 3773 - dashdash "^1.12.0" 3774 - ecc-jsbn "~0.1.1" 3775 - getpass "^0.1.1" 3776 - jsbn "~0.1.0" 3777 - safer-buffer "^2.0.2" 3778 - tweetnacl "~0.14.0" 3779 - 3780 - stack-utils@^2.0.2: 3781 - version "2.0.2" 3782 - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" 3783 - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== 3784 dependencies: 3785 escape-string-regexp "^2.0.0" 3786 - 3787 - static-extend@^0.1.1: 3788 - version "0.1.2" 3789 - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 3790 - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 3791 - dependencies: 3792 - define-property "^0.2.5" 3793 - object-copy "^0.1.0" 3794 - 3795 - stealthy-require@^1.1.1: 3796 - version "1.1.1" 3797 - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 3798 - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 3799 3800 string-argv@0.3.1: 3801 version "0.3.1" ··· 3861 define-properties "^1.1.3" 3862 es-abstract "^1.17.5" 3863 3864 stringify-object@^3.3.0: 3865 version "3.3.0" 3866 resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" ··· 3887 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 3888 integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 3889 3890 - strip-eof@^1.0.0: 3891 - version "1.0.0" 3892 - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 3893 - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 3894 - 3895 strip-final-newline@^2.0.0: 3896 version "2.0.0" 3897 resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 3898 integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 3899 3900 supports-color@^5.3.0: 3901 version "5.5.0" 3902 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" ··· 3911 dependencies: 3912 has-flag "^4.0.0" 3913 3914 supports-hyperlinks@^2.0.0: 3915 version "2.1.0" 3916 resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" ··· 3941 glob "^7.1.4" 3942 minimatch "^3.0.4" 3943 3944 - throat@^5.0.0: 3945 - version "5.0.0" 3946 - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" 3947 - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== 3948 3949 through@^2.3.8: 3950 version "2.3.8" ··· 3961 resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 3962 integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 3963 3964 - to-object-path@^0.3.0: 3965 - version "0.3.0" 3966 - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 3967 - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 3968 - dependencies: 3969 - kind-of "^3.0.2" 3970 - 3971 - to-regex-range@^2.1.0: 3972 - version "2.1.1" 3973 - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 3974 - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 3975 - dependencies: 3976 - is-number "^3.0.0" 3977 - repeat-string "^1.6.1" 3978 - 3979 to-regex-range@^5.0.1: 3980 version "5.0.1" 3981 resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" ··· 3983 dependencies: 3984 is-number "^7.0.0" 3985 3986 - to-regex@^3.0.1, to-regex@^3.0.2: 3987 - version "3.0.2" 3988 - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 3989 - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 3990 - dependencies: 3991 - define-property "^2.0.2" 3992 - extend-shallow "^3.0.2" 3993 - regex-not "^1.0.2" 3994 - safe-regex "^1.1.0" 3995 - 3996 - tough-cookie@^2.3.3, tough-cookie@~2.5.0: 3997 - version "2.5.0" 3998 - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 3999 - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 4000 - dependencies: 4001 - psl "^1.1.28" 4002 - punycode "^2.1.1" 4003 - 4004 - tough-cookie@^3.0.1: 4005 - version "3.0.1" 4006 - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" 4007 - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== 4008 dependencies: 4009 - ip-regex "^2.1.0" 4010 - psl "^1.1.28" 4011 punycode "^2.1.1" 4012 4013 tr46@^2.0.2: 4014 version "2.0.2" ··· 4017 dependencies: 4018 punycode "^2.1.1" 4019 4020 tslib@^1.9.0: 4021 version "1.13.0" 4022 resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 4023 integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 4024 4025 - tunnel-agent@^0.6.0: 4026 - version "0.6.0" 4027 - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 4028 - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 4029 - dependencies: 4030 - safe-buffer "^5.0.1" 4031 - 4032 - tweetnacl@^0.14.3, tweetnacl@~0.14.0: 4033 - version "0.14.5" 4034 - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 4035 - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 4036 - 4037 type-check@~0.3.2: 4038 version "0.3.2" 4039 resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" ··· 4050 version "0.11.0" 4051 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 4052 integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 4053 - 4054 - type-fest@^0.6.0: 4055 - version "0.6.0" 4056 - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" 4057 - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== 4058 - 4059 - type-fest@^0.8.1: 4060 - version "0.8.1" 4061 - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 4062 - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 4063 4064 typedarray-to-buffer@^3.1.5: 4065 version "3.1.5" ··· 4091 resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" 4092 integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== 4093 4094 - union-value@^1.0.0: 4095 - version "1.0.1" 4096 - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" 4097 - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== 4098 - dependencies: 4099 - arr-union "^3.1.0" 4100 - get-value "^2.0.6" 4101 - is-extendable "^0.1.1" 4102 - set-value "^2.0.1" 4103 - 4104 - unset-value@^1.0.0: 4105 - version "1.0.0" 4106 - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 4107 - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 4108 - dependencies: 4109 - has-value "^0.3.1" 4110 - isobject "^3.0.0" 4111 - 4112 - uri-js@^4.2.2: 4113 - version "4.2.2" 4114 - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 4115 - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 4116 - dependencies: 4117 - punycode "^2.1.0" 4118 - 4119 - urix@^0.1.0: 4120 - version "0.1.0" 4121 - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 4122 - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 4123 4124 - use@^3.1.0: 4125 - version "3.1.1" 4126 - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 4127 - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 4128 - 4129 - uuid@^3.3.2: 4130 - version "3.4.0" 4131 - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 4132 - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 4133 4134 - uuid@^7.0.2, uuid@^7.0.3: 4135 - version "7.0.3" 4136 - resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" 4137 - integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== 4138 4139 - v8-to-istanbul@^4.1.3: 4140 - version "4.1.4" 4141 - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" 4142 - integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== 4143 dependencies: 4144 "@types/istanbul-lib-coverage" "^2.0.1" 4145 convert-source-map "^1.6.0" ··· 4153 spdx-correct "^3.0.0" 4154 spdx-expression-parse "^3.0.0" 4155 4156 - verror@1.10.0: 4157 - version "1.10.0" 4158 - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 4159 - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 4160 dependencies: 4161 - assert-plus "^1.0.0" 4162 - core-util-is "1.0.2" 4163 - extsprintf "^1.2.0" 4164 4165 w3c-hr-time@^1.0.2: 4166 version "1.0.2" ··· 4176 dependencies: 4177 xml-name-validator "^3.0.0" 4178 4179 - walker@^1.0.7, walker@~1.0.5: 4180 version "1.0.7" 4181 resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" 4182 integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= 4183 dependencies: 4184 makeerror "1.0.x" 4185 4186 - wcwidth@^1.0.1: 4187 - version "1.0.1" 4188 - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 4189 - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= 4190 - dependencies: 4191 - defaults "^1.0.3" 4192 - 4193 webidl-conversions@^5.0.0: 4194 version "5.0.0" 4195 resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 4196 integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 4197 4198 - webidl-conversions@^6.0.0: 4199 version "6.1.0" 4200 resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 4201 integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== ··· 4221 tr46 "^2.0.2" 4222 webidl-conversions "^5.0.0" 4223 4224 - which-module@^2.0.0: 4225 - version "2.0.0" 4226 - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 4227 - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 4228 4229 which-pm-runs@^1.0.0: 4230 version "1.0.0" ··· 4238 dependencies: 4239 isexe "^2.0.0" 4240 4241 - which@^2.0.1, which@^2.0.2: 4242 version "2.0.2" 4243 resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 4244 integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== ··· 4259 string-width "^4.1.0" 4260 strip-ansi "^6.0.0" 4261 4262 wrappy@1: 4263 version "1.0.2" 4264 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" ··· 4274 signal-exit "^3.0.2" 4275 typedarray-to-buffer "^3.1.5" 4276 4277 - ws@^7.2.3: 4278 - version "7.3.0" 4279 - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" 4280 - integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== 4281 4282 xml-name-validator@^3.0.0: 4283 version "3.0.0" ··· 4289 resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 4290 integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 4291 4292 - y18n@^4.0.0: 4293 - version "4.0.0" 4294 - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 4295 - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 4296 4297 - yaml@^1.7.2: 4298 - version "1.10.0" 4299 - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" 4300 - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== 4301 4302 - yargs-parser@^18.1.1: 4303 - version "18.1.3" 4304 - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" 4305 - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== 4306 - dependencies: 4307 - camelcase "^5.0.0" 4308 - decamelize "^1.2.0" 4309 4310 - yargs@^15.3.1: 4311 - version "15.3.1" 4312 - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" 4313 - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== 4314 dependencies: 4315 - cliui "^6.0.0" 4316 - decamelize "^1.2.0" 4317 - find-up "^4.1.0" 4318 - get-caller-file "^2.0.1" 4319 require-directory "^2.1.1" 4320 - require-main-filename "^2.0.0" 4321 - set-blocking "^2.0.0" 4322 string-width "^4.2.0" 4323 - which-module "^2.0.0" 4324 - y18n "^4.0.0" 4325 - yargs-parser "^18.1.1"
··· 2 # yarn lockfile v1 3 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 + 26 "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": 27 version "7.8.3" 28 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" ··· 30 dependencies: 31 "@babel/highlight" "^7.8.3" 32 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": 67 version "7.9.6" 68 resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" 69 integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== ··· 85 semver "^5.4.1" 86 source-map "^0.5.0" 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 + 97 "@babel/generator@^7.9.6": 98 version "7.9.6" 99 resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" ··· 104 lodash "^4.17.13" 105 source-map "^0.5.0" 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 + 126 "@babel/helper-function-name@^7.9.5": 127 version "7.9.5" 128 resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" ··· 132 "@babel/template" "^7.8.3" 133 "@babel/types" "^7.9.5" 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 + 142 "@babel/helper-get-function-arity@^7.8.3": 143 version "7.8.3" 144 resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" 145 integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== 146 dependencies: 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" 162 163 "@babel/helper-member-expression-to-functions@^7.8.3": 164 version "7.8.3" ··· 167 dependencies: 168 "@babel/types" "^7.8.3" 169 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": 178 version "7.8.3" 179 resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" 180 integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== 181 dependencies: 182 "@babel/types" "^7.8.3" 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 + 198 "@babel/helper-module-transforms@^7.9.0": 199 version "7.9.0" 200 resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" ··· 208 "@babel/types" "^7.9.0" 209 lodash "^4.17.13" 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 + 218 "@babel/helper-optimise-call-expression@^7.8.3": 219 version "7.8.3" 220 resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" ··· 227 resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" 228 integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== 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 + 250 "@babel/helper-replace-supers@^7.8.6": 251 version "7.9.6" 252 resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" ··· 257 "@babel/traverse" "^7.9.6" 258 "@babel/types" "^7.9.6" 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 + 267 "@babel/helper-simple-access@^7.8.3": 268 version "7.8.3" 269 resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" ··· 272 "@babel/template" "^7.8.3" 273 "@babel/types" "^7.8.3" 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 + 282 "@babel/helper-split-export-declaration@^7.8.3": 283 version "7.8.3" 284 resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" ··· 286 dependencies: 287 "@babel/types" "^7.8.3" 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 + 294 "@babel/helper-validator-identifier@^7.9.5": 295 version "7.9.5" 296 resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" 297 integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== 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 + 313 "@babel/helpers@^7.9.6": 314 version "7.9.6" 315 resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" ··· 319 "@babel/traverse" "^7.9.6" 320 "@babel/types" "^7.9.6" 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 + 331 "@babel/highlight@^7.8.3": 332 version "7.8.3" 333 resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" ··· 341 version "7.9.6" 342 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" 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== 349 350 "@babel/plugin-syntax-async-generators@^7.8.4": 351 version "7.8.4" ··· 367 integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== 368 dependencies: 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" 377 378 "@babel/plugin-syntax-json-strings@^7.8.3": 379 version "7.8.3" ··· 424 dependencies: 425 "@babel/helper-plugin-utils" "^7.8.0" 426 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== 431 dependencies: 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" 449 babel-plugin-dynamic-import-node "^2.3.3" 450 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== 462 dependencies: 463 + "@babel/code-frame" "^7.14.5" 464 + "@babel/parser" "^7.14.5" 465 + "@babel/types" "^7.14.5" 466 467 "@babel/template@^7.3.3", "@babel/template@^7.8.3", "@babel/template@^7.8.6": 468 version "7.8.6" ··· 488 globals "^11.1.0" 489 lodash "^4.17.13" 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 + 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": 507 version "7.9.6" 508 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" ··· 512 lodash "^4.17.13" 513 to-fast-properties "^2.0.0" 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 + 523 "@bcoe/v8-coverage@^0.2.3": 524 version "0.2.3" 525 resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 526 integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 527 528 "@istanbuljs/load-nyc-config@^1.0.0": 529 version "1.0.0" ··· 540 resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" 541 integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== 542 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== 547 dependencies: 548 + "@jest/types" "^27.1.0" 549 + "@types/node" "*" 550 chalk "^4.0.0" 551 + jest-message-util "^27.1.0" 552 + jest-util "^27.1.0" 553 slash "^3.0.0" 554 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== 559 dependencies: 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" "*" 566 ansi-escapes "^4.2.1" 567 chalk "^4.0.0" 568 + emittery "^0.8.1" 569 exit "^0.1.2" 570 graceful-fs "^4.2.4" 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" 585 p-each-series "^2.1.0" 586 rimraf "^3.0.0" 587 slash "^3.0.0" 588 strip-ansi "^6.0.0" 589 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== 594 dependencies: 595 + "@jest/fake-timers" "^27.1.0" 596 + "@jest/types" "^27.1.0" 597 + "@types/node" "*" 598 + jest-mock "^27.1.0" 599 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== 604 dependencies: 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" 611 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== 616 dependencies: 617 + "@jest/environment" "^27.1.0" 618 + "@jest/types" "^27.1.0" 619 + expect "^27.1.0" 620 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== 625 dependencies: 626 "@bcoe/v8-coverage" "^0.2.3" 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" 631 chalk "^4.0.0" 632 collect-v8-coverage "^1.0.0" 633 exit "^0.1.2" 634 glob "^7.1.2" 635 graceful-fs "^4.2.4" 636 istanbul-lib-coverage "^3.0.0" 637 + istanbul-lib-instrument "^4.0.3" 638 istanbul-lib-report "^3.0.0" 639 istanbul-lib-source-maps "^4.0.0" 640 istanbul-reports "^3.0.2" 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" 645 slash "^3.0.0" 646 source-map "^0.6.0" 647 string-length "^4.0.1" 648 terminal-link "^2.0.0" 649 + v8-to-istanbul "^8.0.0" 650 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== 655 dependencies: 656 callsites "^3.0.0" 657 graceful-fs "^4.2.4" 658 source-map "^0.6.0" 659 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== 664 dependencies: 665 + "@jest/console" "^27.1.0" 666 + "@jest/types" "^27.1.0" 667 "@types/istanbul-lib-coverage" "^2.0.0" 668 collect-v8-coverage "^1.0.0" 669 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== 674 dependencies: 675 + "@jest/test-result" "^27.1.0" 676 graceful-fs "^4.2.4" 677 + jest-haste-map "^27.1.0" 678 + jest-runtime "^27.1.0" 679 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== 684 dependencies: 685 "@babel/core" "^7.1.0" 686 + "@jest/types" "^27.1.0" 687 babel-plugin-istanbul "^6.0.0" 688 chalk "^4.0.0" 689 convert-source-map "^1.4.0" 690 fast-json-stable-stringify "^2.0.0" 691 graceful-fs "^4.2.4" 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" 696 pirates "^4.0.1" 697 slash "^3.0.0" 698 source-map "^0.6.1" 699 write-file-atomic "^3.0.0" 700 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== 705 dependencies: 706 "@types/istanbul-lib-coverage" "^2.0.0" 707 + "@types/istanbul-reports" "^3.0.0" 708 + "@types/node" "*" 709 + "@types/yargs" "^16.0.0" 710 chalk "^4.0.0" 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 + 717 "@rollup/plugin-buble@^0.21.3": 718 version "0.21.3" 719 resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz#1649a915b1d051a4f430d40e7734a7f67a69b33e" ··· 723 "@types/buble" "^0.19.2" 724 buble "^0.20.0" 725 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== 730 dependencies: 731 + "@rollup/pluginutils" "^3.1.0" 732 commondir "^1.0.1" 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" 738 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== 743 dependencies: 744 + "@rollup/pluginutils" "^3.1.0" 745 + "@types/resolve" "1.17.1" 746 builtin-modules "^3.1.0" 747 + deepmerge "^4.2.2" 748 is-module "^1.0.0" 749 + resolve "^1.19.0" 750 751 "@rollup/pluginutils@^3.0.8": 752 version "3.0.10" ··· 757 estree-walker "^1.0.1" 758 picomatch "^2.2.2" 759 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== 764 dependencies: 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" 776 777 "@sinonjs/commons@^1.7.0": 778 version "1.7.2" ··· 781 dependencies: 782 type-detect "4.0.8" 783 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== 788 dependencies: 789 "@sinonjs/commons" "^1.7.0" 790 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== 807 dependencies: 808 "@babel/parser" "^7.1.0" 809 "@babel/types" "^7.0.0" ··· 833 dependencies: 834 "@babel/types" "^7.3.0" 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 + 843 "@types/buble@^0.19.2": 844 version "0.19.2" 845 resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1" ··· 851 version "1.1.1" 852 resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 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== 859 860 "@types/estree@0.0.39": 861 version "0.0.39" ··· 881 dependencies: 882 "@types/istanbul-lib-coverage" "*" 883 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== 888 dependencies: 889 "@types/istanbul-lib-report" "*" 890 891 "@types/node@*": ··· 893 resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" 894 integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== 895 896 "@types/parse-json@^4.0.0": 897 version "4.0.0" 898 resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 899 integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 900 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== 905 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== 910 dependencies: 911 "@types/node" "*" 912 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== 917 918 "@types/yargs-parser@*": 919 version "15.0.0" 920 resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" 921 integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== 922 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== 927 dependencies: 928 "@types/yargs-parser" "*" 929 ··· 931 version "2.0.3" 932 resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" 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== 939 940 acorn-dynamic-import@^4.0.0: 941 version "4.0.0" ··· 955 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 956 integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 957 958 + acorn-walk@7.1.1, acorn-walk@^7.1.1: 959 version "7.1.1" 960 resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" 961 integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== 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 + 968 acorn@^6.4.1: 969 version "6.4.1" 970 resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" ··· 974 version "7.2.0" 975 resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" 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" 989 990 aggregate-error@^3.0.0: 991 version "3.0.1" ··· 995 clean-stack "^2.0.0" 996 indent-string "^4.0.0" 997 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== 1002 1003 ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: 1004 version "4.3.1" ··· 1027 "@types/color-name" "^1.1.1" 1028 color-convert "^2.0.1" 1029 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== 1034 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= 1039 1040 anymatch@^3.0.3: 1041 version "3.1.1" ··· 1052 dependencies: 1053 sprintf-js "~1.0.2" 1054 1055 astral-regex@^2.0.0: 1056 version "2.0.0" 1057 resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" ··· 1062 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 1063 integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 1064 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== 1069 dependencies: 1070 + "@jest/transform" "^27.1.0" 1071 + "@jest/types" "^27.1.0" 1072 + "@types/babel__core" "^7.1.14" 1073 babel-plugin-istanbul "^6.0.0" 1074 + babel-preset-jest "^27.0.6" 1075 chalk "^4.0.0" 1076 graceful-fs "^4.2.4" 1077 slash "^3.0.0" 1078 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== 1083 1084 babel-plugin-dynamic-import-node@^2.3.3: 1085 version "2.3.3" ··· 1099 istanbul-lib-instrument "^4.0.0" 1100 test-exclude "^6.0.0" 1101 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== 1106 dependencies: 1107 "@babel/template" "^7.3.3" 1108 "@babel/types" "^7.3.3" 1109 + "@types/babel__core" "^7.0.0" 1110 "@types/babel__traverse" "^7.0.6" 1111 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== 1116 dependencies: 1117 "@babel/plugin-syntax-async-generators" "^7.8.4" 1118 "@babel/plugin-syntax-bigint" "^7.8.3" 1119 "@babel/plugin-syntax-class-properties" "^7.8.3" 1120 + "@babel/plugin-syntax-import-meta" "^7.8.3" 1121 "@babel/plugin-syntax-json-strings" "^7.8.3" 1122 "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 1123 "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" ··· 1125 "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 1126 "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 1127 "@babel/plugin-syntax-optional-chaining" "^7.8.3" 1128 + "@babel/plugin-syntax-top-level-await" "^7.8.3" 1129 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== 1134 dependencies: 1135 + babel-plugin-jest-hoist "^27.0.6" 1136 + babel-preset-current-node-syntax "^1.0.0" 1137 1138 balanced-match@^1.0.0: 1139 version "1.0.0" 1140 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 1141 integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 1142 1143 brace-expansion@^1.1.7: 1144 version "1.1.11" 1145 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" ··· 1148 balanced-match "^1.0.0" 1149 concat-map "0.0.1" 1150 1151 braces@^3.0.1: 1152 version "3.0.2" 1153 resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" ··· 1159 version "1.0.0" 1160 resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 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" 1173 1174 bser@2.1.1: 1175 version "2.1.1" ··· 1201 resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 1202 integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 1203 1204 callsites@^3.0.0: 1205 version "3.1.0" 1206 resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 1207 integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1208 1209 + camelcase@^5.3.1: 1210 version "5.3.1" 1211 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 1212 integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 1213 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== 1218 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== 1223 1224 + chalk@2.x, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: 1225 version "2.4.2" 1226 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1227 integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== ··· 1230 escape-string-regexp "^1.0.5" 1231 supports-color "^5.3.0" 1232 1233 chalk@^4.0.0: 1234 version "4.0.0" 1235 resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" ··· 1238 ansi-styles "^4.1.0" 1239 supports-color "^7.1.0" 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 + 1249 char-regex@^1.0.2: 1250 version "1.0.2" 1251 resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" ··· 1256 resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 1257 integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 1258 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== 1268 1269 clean-stack@^2.0.0: 1270 version "2.2.0" ··· 1286 slice-ansi "^3.0.0" 1287 string-width "^4.2.0" 1288 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== 1293 dependencies: 1294 string-width "^4.2.0" 1295 strip-ansi "^6.0.0" 1296 + wrap-ansi "^7.0.0" 1297 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" 1321 1322 co@^4.6.0: 1323 version "4.6.0" ··· 1328 version "1.0.1" 1329 resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 1330 integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== 1331 1332 color-convert@^1.9.0: 1333 version "1.9.3" ··· 1353 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1354 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1355 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: 1362 version "1.0.8" 1363 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1364 integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1365 dependencies: 1366 delayed-stream "~1.0.0" 1367 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== 1377 1378 commondir@^1.0.1: 1379 version "1.0.1" ··· 1385 resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" 1386 integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== 1387 1388 concat-map@0.0.1: 1389 version "0.0.1" 1390 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" ··· 1397 dependencies: 1398 safe-buffer "~5.1.1" 1399 1400 + core-util-is@~1.0.0: 1401 version "1.0.2" 1402 resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1403 integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 1404 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== 1409 dependencies: 1410 "@types/parse-json" "^4.0.0" 1411 + import-fresh "^3.2.1" 1412 parse-json "^5.0.0" 1413 path-type "^4.0.0" 1414 + yaml "^1.10.0" 1415 1416 + cross-spawn@^6.0.5: 1417 version "6.0.5" 1418 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 1419 integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== ··· 1424 shebang-command "^1.2.0" 1425 which "^1.2.9" 1426 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== 1431 dependencies: 1432 path-key "^3.1.0" 1433 shebang-command "^2.0.0" ··· 1443 resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 1444 integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 1445 1446 + cssstyle@^2.3.0: 1447 version "2.3.0" 1448 resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 1449 integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 1450 dependencies: 1451 cssom "~0.3.6" 1452 1453 data-urls@^2.0.0: 1454 version "2.0.0" 1455 resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" ··· 1459 whatwg-mimetype "^2.3.0" 1460 whatwg-url "^8.0.0" 1461 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== 1466 dependencies: 1467 + ms "2.1.2" 1468 1469 debug@^4.1.0, debug@^4.1.1: 1470 version "4.1.1" ··· 1473 dependencies: 1474 ms "^2.1.1" 1475 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== 1480 1481 dedent@^0.7.0: 1482 version "0.7.0" ··· 1493 resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 1494 integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 1495 1496 define-properties@^1.1.2, define-properties@^1.1.3: 1497 version "1.1.3" 1498 resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" ··· 1500 dependencies: 1501 object-keys "^1.0.12" 1502 1503 delayed-stream@~1.0.0: 1504 version "1.0.0" 1505 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" ··· 1510 resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1511 integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1512 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== 1517 1518 domexception@^2.0.1: 1519 version "2.0.1" ··· 1522 dependencies: 1523 webidl-conversions "^5.0.0" 1524 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== 1529 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== 1534 1535 emoji-regex@^8.0.0: 1536 version "8.0.0" 1537 resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1538 integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1539 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== 1544 dependencies: 1545 + ansi-colors "^4.1.1" 1546 1547 error-ex@^1.3.1: 1548 version "1.3.2" ··· 1577 is-date-object "^1.0.1" 1578 is-symbol "^1.0.2" 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 + 1585 escape-string-regexp@^1.0.5: 1586 version "1.0.5" 1587 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" ··· 1592 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1593 integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1594 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== 1599 dependencies: 1600 esprima "^4.0.1" 1601 + estraverse "^5.2.0" 1602 esutils "^2.0.2" 1603 optionator "^0.8.1" 1604 optionalDependencies: ··· 1609 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1610 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1611 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== 1616 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== 1621 1622 estree-walker@^1.0.1: 1623 version "1.0.1" ··· 1629 resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1630 integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1631 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== 1636 dependencies: 1637 + cross-spawn "^7.0.3" 1638 + get-stream "^6.0.0" 1639 + human-signals "^2.1.0" 1640 is-stream "^2.0.0" 1641 merge-stream "^2.0.0" 1642 + npm-run-path "^4.0.1" 1643 + onetime "^5.1.2" 1644 + signal-exit "^3.0.3" 1645 strip-final-newline "^2.0.0" 1646 1647 exit@^0.1.2: ··· 1649 resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1650 integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= 1651 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== 1656 dependencies: 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" 1663 1664 fast-json-stable-stringify@^2.0.0: 1665 version "2.1.0" ··· 1678 dependencies: 1679 bser "2.1.1" 1680 1681 fill-range@^7.0.1: 1682 version "7.0.1" 1683 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" ··· 1693 locate-path "^5.0.0" 1694 path-exists "^4.0.0" 1695 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== 1700 dependencies: 1701 + locate-path "^6.0.0" 1702 + path-exists "^4.0.0" 1703 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" 1710 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== 1715 dependencies: 1716 asynckit "^0.4.0" 1717 + combined-stream "^1.0.8" 1718 mime-types "^2.1.12" 1719 1720 fs.realpath@^1.0.0: 1721 version "1.0.0" 1722 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1723 integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1724 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== 1729 1730 function-bind@^1.1.1: 1731 version "1.1.1" ··· 1737 resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" 1738 integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== 1739 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: 1746 version "2.0.5" 1747 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1748 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== ··· 1752 resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 1753 integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 1754 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== 1759 1760 + glob@7.1.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: 1761 version "7.1.6" 1762 resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1763 integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== ··· 1769 once "^1.3.0" 1770 path-is-absolute "^1.0.0" 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 + 1784 globals@^11.1.0: 1785 version "11.12.0" 1786 resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1787 integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1788 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== 1793 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== 1798 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== 1803 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== 1813 dependencies: 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== 1828 1829 has-flag@^3.0.0: 1830 version "3.0.0" ··· 1841 resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1842 integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1843 1844 has@^1.0.3: 1845 version "1.0.3" 1846 resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" ··· 1865 resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1866 integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1867 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== 1872 dependencies: 1873 + "@tootallnate/once" "1" 1874 + agent-base "6" 1875 + debug "4" 1876 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" 1884 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== 1894 dependencies: 1895 chalk "^4.0.0" 1896 ci-info "^2.0.0" 1897 compare-versions "^3.6.0" 1898 + cosmiconfig "^7.0.0" 1899 + find-versions "^4.0.0" 1900 opencollective-postinstall "^2.0.2" 1901 + pkg-dir "^5.0.0" 1902 please-upgrade-node "^3.2.0" 1903 slash "^3.0.0" 1904 which-pm-runs "^1.0.0" ··· 1910 dependencies: 1911 safer-buffer ">= 2.1.2 < 3" 1912 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== 1917 dependencies: 1918 parent-module "^1.0.0" 1919 resolve-from "^4.0.0" ··· 1944 once "^1.3.0" 1945 wrappy "1" 1946 1947 + inherits@2, inherits@^2.0.1, inherits@~2.0.3: 1948 version "2.0.4" 1949 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1950 integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1951 1952 is-arrayish@^0.2.1: 1953 version "0.2.1" 1954 resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1955 integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1956 1957 is-callable@^1.1.4, is-callable@^1.1.5: 1958 version "1.1.5" 1959 resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 1960 integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 1961 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== 1966 dependencies: 1967 + ci-info "^3.1.1" 1968 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== 1973 dependencies: 1974 + has "^1.0.3" 1975 1976 is-date-object@^1.0.1: 1977 version "1.0.2" 1978 resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1979 integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1980 1981 is-fullwidth-code-point@^3.0.0: 1982 version "3.0.0" 1983 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" ··· 1992 version "1.0.0" 1993 resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 1994 integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 1995 1996 is-number@^7.0.0: 1997 version "7.0.0" ··· 2003 resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 2004 integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 2005 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== 2010 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== 2015 dependencies: 2016 + "@types/estree" "*" 2017 2018 is-regex@^1.0.5: 2019 version "1.0.5" ··· 2027 resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 2028 integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 2029 2030 is-stream@^2.0.0: 2031 version "2.0.0" 2032 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" ··· 2039 dependencies: 2040 has-symbols "^1.0.1" 2041 2042 + is-typedarray@^1.0.0: 2043 version "1.0.0" 2044 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 2045 integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 2046 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== 2051 2052 + isarray@~1.0.0: 2053 version "1.0.0" 2054 resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 2055 integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= ··· 2059 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 2060 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 2061 2062 istanbul-lib-coverage@^3.0.0: 2063 version "3.0.0" 2064 resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" 2065 integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== 2066 2067 + istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: 2068 version "4.0.3" 2069 resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" 2070 integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== ··· 2100 html-escaper "^2.0.0" 2101 istanbul-lib-report "^3.0.0" 2102 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== 2116 dependencies: 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" 2136 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== 2141 dependencies: 2142 + "@jest/core" "^27.1.0" 2143 + "@jest/test-result" "^27.1.0" 2144 + "@jest/types" "^27.1.0" 2145 chalk "^4.0.0" 2146 exit "^0.1.2" 2147 graceful-fs "^4.2.4" 2148 import-local "^3.0.2" 2149 + jest-config "^27.1.0" 2150 + jest-util "^27.1.0" 2151 + jest-validate "^27.1.0" 2152 prompts "^2.0.1" 2153 + yargs "^16.0.3" 2154 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== 2159 dependencies: 2160 "@babel/core" "^7.1.0" 2161 + "@jest/test-sequencer" "^27.1.0" 2162 + "@jest/types" "^27.1.0" 2163 + babel-jest "^27.1.0" 2164 chalk "^4.0.0" 2165 deepmerge "^4.2.2" 2166 glob "^7.1.1" 2167 graceful-fs "^4.2.4" 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" 2181 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== 2186 dependencies: 2187 chalk "^4.0.0" 2188 + diff-sequences "^27.0.6" 2189 + jest-get-type "^27.0.6" 2190 + pretty-format "^27.1.0" 2191 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== 2196 dependencies: 2197 detect-newline "^3.0.0" 2198 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== 2203 dependencies: 2204 + "@jest/types" "^27.1.0" 2205 chalk "^4.0.0" 2206 + jest-get-type "^27.0.6" 2207 + jest-util "^27.1.0" 2208 + pretty-format "^27.1.0" 2209 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== 2214 dependencies: 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" 2222 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== 2227 dependencies: 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" 2234 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== 2239 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== 2244 dependencies: 2245 + "@jest/types" "^27.1.0" 2246 "@types/graceful-fs" "^4.1.2" 2247 + "@types/node" "*" 2248 anymatch "^3.0.3" 2249 fb-watchman "^2.0.0" 2250 graceful-fs "^4.2.4" 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" 2256 walker "^1.0.7" 2257 optionalDependencies: 2258 + fsevents "^2.3.2" 2259 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== 2264 dependencies: 2265 "@babel/traverse" "^7.1.0" 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" "*" 2271 chalk "^4.0.0" 2272 co "^4.6.0" 2273 + expect "^27.1.0" 2274 is-generator-fn "^2.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" 2283 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== 2288 dependencies: 2289 + jest-get-type "^27.0.6" 2290 + pretty-format "^27.1.0" 2291 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== 2296 dependencies: 2297 chalk "^4.0.0" 2298 + jest-diff "^27.1.0" 2299 + jest-get-type "^27.0.6" 2300 + pretty-format "^27.1.0" 2301 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== 2306 dependencies: 2307 + "@babel/code-frame" "^7.12.13" 2308 + "@jest/types" "^27.1.0" 2309 + "@types/stack-utils" "^2.0.0" 2310 chalk "^4.0.0" 2311 graceful-fs "^4.2.4" 2312 + micromatch "^4.0.4" 2313 + pretty-format "^27.1.0" 2314 slash "^3.0.0" 2315 + stack-utils "^2.0.3" 2316 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== 2321 dependencies: 2322 + "@jest/types" "^27.1.0" 2323 + "@types/node" "*" 2324 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== 2329 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== 2334 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== 2339 dependencies: 2340 + "@jest/types" "^27.1.0" 2341 + jest-regex-util "^27.0.6" 2342 + jest-snapshot "^27.1.0" 2343 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== 2348 dependencies: 2349 + "@jest/types" "^27.1.0" 2350 chalk "^4.0.0" 2351 + escalade "^3.1.1" 2352 graceful-fs "^4.2.4" 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" 2358 slash "^3.0.0" 2359 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== 2364 dependencies: 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" "*" 2371 chalk "^4.0.0" 2372 + emittery "^0.8.1" 2373 exit "^0.1.2" 2374 graceful-fs "^4.2.4" 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" 2385 source-map-support "^0.5.6" 2386 + throat "^6.0.1" 2387 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== 2392 dependencies: 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" 2402 chalk "^4.0.0" 2403 + cjs-module-lexer "^1.0.0" 2404 collect-v8-coverage "^1.0.0" 2405 + execa "^5.0.0" 2406 exit "^0.1.2" 2407 glob "^7.1.3" 2408 graceful-fs "^4.2.4" 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" 2417 slash "^3.0.0" 2418 strip-bom "^4.0.0" 2419 + yargs "^16.0.3" 2420 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== 2425 dependencies: 2426 + "@types/node" "*" 2427 graceful-fs "^4.2.4" 2428 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== 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" 2439 "@babel/types" "^7.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" 2445 chalk "^4.0.0" 2446 + expect "^27.1.0" 2447 graceful-fs "^4.2.4" 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" 2455 natural-compare "^1.4.0" 2456 + pretty-format "^27.1.0" 2457 semver "^7.3.2" 2458 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== 2463 dependencies: 2464 + "@jest/types" "^27.1.0" 2465 + "@types/node" "*" 2466 chalk "^4.0.0" 2467 graceful-fs "^4.2.4" 2468 + is-ci "^3.0.0" 2469 + picomatch "^2.2.3" 2470 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== 2475 dependencies: 2476 + "@jest/types" "^27.1.0" 2477 + camelcase "^6.2.0" 2478 chalk "^4.0.0" 2479 + jest-get-type "^27.0.6" 2480 leven "^3.1.0" 2481 + pretty-format "^27.1.0" 2482 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== 2487 dependencies: 2488 + "@jest/test-result" "^27.1.0" 2489 + "@jest/types" "^27.1.0" 2490 + "@types/node" "*" 2491 ansi-escapes "^4.2.1" 2492 chalk "^4.0.0" 2493 + jest-util "^27.1.0" 2494 string-length "^4.0.1" 2495 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== 2500 dependencies: 2501 + "@types/node" "*" 2502 merge-stream "^2.0.0" 2503 + supports-color "^8.0.0" 2504 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== 2509 dependencies: 2510 + "@jest/core" "^27.1.0" 2511 import-local "^3.0.2" 2512 + jest-cli "^27.1.0" 2513 2514 js-tokens@^4.0.0: 2515 version "4.0.0" ··· 2524 argparse "^1.0.7" 2525 esprima "^4.0.0" 2526 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== 2531 dependencies: 2532 + abab "^2.0.5" 2533 + acorn "^8.2.4" 2534 acorn-globals "^6.0.0" 2535 cssom "^0.4.4" 2536 + cssstyle "^2.3.0" 2537 data-urls "^2.0.0" 2538 + decimal.js "^10.2.1" 2539 domexception "^2.0.1" 2540 + escodegen "^2.0.0" 2541 + form-data "^3.0.0" 2542 html-encoding-sniffer "^2.0.1" 2543 + http-proxy-agent "^4.0.1" 2544 + https-proxy-agent "^5.0.0" 2545 + is-potential-custom-element-name "^1.0.1" 2546 nwsapi "^2.2.0" 2547 + parse5 "6.0.1" 2548 + saxes "^5.0.1" 2549 symbol-tree "^3.2.4" 2550 + tough-cookie "^4.0.0" 2551 w3c-hr-time "^1.0.2" 2552 w3c-xmlserializer "^2.0.0" 2553 + webidl-conversions "^6.1.0" 2554 whatwg-encoding "^1.0.5" 2555 whatwg-mimetype "^2.3.0" 2556 + whatwg-url "^8.5.0" 2557 + ws "^7.4.6" 2558 xml-name-validator "^3.0.0" 2559 2560 jsesc@^2.5.1: ··· 2572 resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 2573 integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 2574 2575 json5@^2.1.2: 2576 version "2.1.3" 2577 resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" ··· 2579 dependencies: 2580 minimist "^1.2.5" 2581 2582 kleur@^3.0.3: 2583 version "3.0.3" 2584 resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" ··· 2602 resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 2603 integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 2604 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== 2609 dependencies: 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" 2620 normalize-path "^3.0.0" 2621 please-upgrade-node "^3.2.0" 2622 string-argv "0.3.1" 2623 stringify-object "^3.3.0" 2624 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== 2629 dependencies: 2630 cli-truncate "^2.1.0" 2631 + colorette "^1.2.2" 2632 log-update "^4.0.0" 2633 p-map "^4.0.0" 2634 + rxjs "^6.6.7" 2635 through "^2.3.8" 2636 + wrap-ansi "^7.0.0" 2637 2638 load-json-file@^4.0.0: 2639 version "4.0.0" ··· 2652 dependencies: 2653 p-locate "^4.1.0" 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 + 2662 lodash.sortby@^4.7.0: 2663 version "4.7.0" 2664 resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 2665 integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= 2666 2667 + lodash@^4.17.13: 2668 version "4.17.15" 2669 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 2670 integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 2671 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== 2681 dependencies: 2682 + chalk "^4.1.0" 2683 + is-unicode-supported "^0.1.0" 2684 2685 log-update@^4.0.0: 2686 version "4.0.0" ··· 2692 slice-ansi "^4.0.0" 2693 wrap-ansi "^6.2.0" 2694 2695 + magic-string@0.25.7, magic-string@^0.25.0, magic-string@^0.25.7: 2696 version "0.25.7" 2697 resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 2698 integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== ··· 2713 dependencies: 2714 tmpl "1.0.x" 2715 2716 memorystream@^0.3.1: 2717 version "0.3.1" 2718 resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" ··· 2723 resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2724 integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2725 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== 2730 dependencies: 2731 braces "^3.0.1" 2732 + picomatch "^2.2.3" 2733 2734 mime-db@1.44.0: 2735 version "1.44.0" 2736 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 2737 integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 2738 2739 + mime-types@^2.1.12: 2740 version "2.1.27" 2741 resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 2742 integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== ··· 2755 dependencies: 2756 brace-expansion "^1.1.7" 2757 2758 + minimist@1.x, minimist@^1.2.5: 2759 version "1.2.5" 2760 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2761 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2762 2763 + ms@2.1.2, ms@^2.1.1: 2764 version "2.1.2" 2765 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2766 integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2767 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== 2772 dependencies: 2773 + any-promise "^1.0.0" 2774 + object-assign "^4.0.1" 2775 + thenify-all "^1.0.0" 2776 2777 natural-compare@^1.4.0: 2778 version "1.4.0" ··· 2794 resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" 2795 integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= 2796 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== 2801 2802 + normalize-package-data@^2.3.2: 2803 version "2.5.0" 2804 resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 2805 integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== ··· 2808 resolve "^1.10.0" 2809 semver "2 || 3 || 4 || 5" 2810 validate-npm-package-license "^3.0.1" 2811 2812 normalize-path@^3.0.0: 2813 version "3.0.0" ··· 2829 shell-quote "^1.6.1" 2830 string.prototype.padend "^3.0.0" 2831 2832 + npm-run-path@^4.0.1: 2833 version "4.0.1" 2834 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2835 integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== ··· 2841 resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 2842 integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 2843 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= 2848 2849 object-inspect@^1.7.0: 2850 version "1.7.0" ··· 2856 resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 2857 integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 2858 2859 object.assign@^4.1.0: 2860 version "4.1.0" 2861 resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" ··· 2866 has-symbols "^1.0.0" 2867 object-keys "^1.0.11" 2868 2869 + once@^1.3.0: 2870 version "1.4.0" 2871 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2872 integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= ··· 2880 dependencies: 2881 mimic-fn "^2.1.0" 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 + 2890 opencollective-postinstall@^2.0.2: 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== 2894 2895 optionator@^0.8.1: 2896 version "0.8.3" ··· 2909 resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" 2910 integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== 2911 2912 p-limit@^2.2.0: 2913 version "2.3.0" 2914 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" ··· 2916 dependencies: 2917 p-try "^2.0.0" 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 + 2926 p-locate@^4.1.0: 2927 version "4.1.0" 2928 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" ··· 2930 dependencies: 2931 p-limit "^2.2.0" 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 + 2940 p-map@^4.0.0: 2941 version "4.0.0" 2942 resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" ··· 2948 version "2.2.0" 2949 resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2950 integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2951 2952 parent-module@^1.0.0: 2953 version "1.0.1" ··· 2974 json-parse-better-errors "^1.0.1" 2975 lines-and-columns "^1.1.6" 2976 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== 2981 2982 path-exists@^4.0.0: 2983 version "4.0.0" ··· 2989 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2990 integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2991 2992 + path-key@^2.0.1: 2993 version "2.0.1" 2994 resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2995 integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= ··· 3016 resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 3017 integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 3018 3019 + picomatch@^2.0.4, picomatch@^2.2.2: 3020 version "2.2.2" 3021 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 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== 3028 3029 pidtree@^0.3.0: 3030 version "0.3.1" ··· 3050 dependencies: 3051 find-up "^4.0.0" 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 + 3060 please-upgrade-node@^3.2.0: 3061 version "3.2.0" 3062 resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" ··· 3064 dependencies: 3065 semver-compare "^1.0.0" 3066 3067 prelude-ls@~1.1.2: 3068 version "1.1.2" 3069 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 3070 integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 3071 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== 3076 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== 3081 dependencies: 3082 + "@jest/types" "^27.1.0" 3083 ansi-regex "^5.0.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== 3091 3092 prompts@^2.0.1: 3093 version "2.3.2" ··· 3097 kleur "^3.0.3" 3098 sisteransi "^1.0.4" 3099 3100 + psl@^1.1.33: 3101 version "1.8.0" 3102 resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 3103 integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 3104 3105 + punycode@^2.1.1: 3106 version "2.1.1" 3107 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 3108 integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 3109 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== 3114 3115 read-pkg@^3.0.0: 3116 version "3.0.0" ··· 3121 normalize-package-data "^2.3.2" 3122 path-type "^3.0.0" 3123 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== 3128 dependencies: 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" 3136 3137 regenerate-unicode-properties@^8.0.2: 3138 version "8.2.0" ··· 3146 resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 3147 integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 3148 3149 regexpu-core@4.5.4: 3150 version "4.5.4" 3151 resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" ··· 3175 resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 3176 integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 3177 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== 3182 3183 require-directory@^2.1.1: 3184 version "2.1.1" 3185 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 3186 integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 3187 3188 resolve-cwd@^3.0.0: 3189 version "3.0.0" 3190 resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" ··· 3202 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 3203 integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 3204 3205 + resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: 3206 version "1.17.0" 3207 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 3208 integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 3209 dependencies: 3210 path-parse "^1.0.6" 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 + 3220 restore-cursor@^3.1.0: 3221 version "3.1.0" 3222 resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" ··· 3225 onetime "^5.1.0" 3226 signal-exit "^3.0.2" 3227 3228 rimraf@^3.0.0, rimraf@^3.0.2: 3229 version "3.0.2" 3230 resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" ··· 3232 dependencies: 3233 glob "^7.1.3" 3234 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== 3239 optionalDependencies: 3240 + fsevents "~2.3.2" 3241 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== 3246 dependencies: 3247 tslib "^1.9.0" 3248 3249 + safe-buffer@~5.1.0, safe-buffer@~5.1.1: 3250 version "5.1.2" 3251 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 3252 integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 3253 3254 + "safer-buffer@>= 2.1.2 < 3": 3255 version "2.1.2" 3256 resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 3257 integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 3258 3259 + saxes@^5.0.1: 3260 version "5.0.1" 3261 resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 3262 integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== ··· 3268 resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 3269 integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 3270 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== 3275 3276 "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: 3277 version "5.7.1" ··· 3283 resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 3284 integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 3285 3286 + semver@^7.3.2: 3287 version "7.3.2" 3288 resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 3289 integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 3290 3291 shebang-command@^1.2.0: 3292 version "1.2.0" 3293 resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" ··· 3317 resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 3318 integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 3319 3320 + signal-exit@^3.0.2, signal-exit@^3.0.3: 3321 version "3.0.3" 3322 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 3323 integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== ··· 3350 astral-regex "^2.0.0" 3351 is-fullwidth-code-point "^3.0.0" 3352 3353 source-map-support@^0.5.6: 3354 version "0.5.19" 3355 resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" ··· 3358 buffer-from "^1.0.0" 3359 source-map "^0.6.0" 3360 3361 + source-map@^0.5.0, source-map@^0.5.1: 3362 version "0.5.7" 3363 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 3364 integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= ··· 3373 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 3374 integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 3375 3376 + sourcemap-codec@1.4.8, sourcemap-codec@^1.4.4: 3377 version "1.4.8" 3378 resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 3379 integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== ··· 3404 resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 3405 integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 3406 3407 sprintf-js@~1.0.2: 3408 version "1.0.3" 3409 resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3410 integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 3411 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== 3416 dependencies: 3417 escape-string-regexp "^2.0.0" 3418 3419 string-argv@0.3.1: 3420 version "0.3.1" ··· 3480 define-properties "^1.1.3" 3481 es-abstract "^1.17.5" 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 + 3490 stringify-object@^3.3.0: 3491 version "3.3.0" 3492 resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" ··· 3513 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 3514 integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 3515 3516 strip-final-newline@^2.0.0: 3517 version "2.0.0" 3518 resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 3519 integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 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 + 3533 supports-color@^5.3.0: 3534 version "5.5.0" 3535 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" ··· 3544 dependencies: 3545 has-flag "^4.0.0" 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 + 3554 supports-hyperlinks@^2.0.0: 3555 version "2.1.0" 3556 resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" ··· 3581 glob "^7.1.4" 3582 minimatch "^3.0.4" 3583 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== 3602 3603 through@^2.3.8: 3604 version "2.3.8" ··· 3615 resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 3616 integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 3617 3618 to-regex-range@^5.0.1: 3619 version "5.0.1" 3620 resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" ··· 3622 dependencies: 3623 is-number "^7.0.0" 3624 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== 3629 dependencies: 3630 + psl "^1.1.33" 3631 punycode "^2.1.1" 3632 + universalify "^0.1.2" 3633 3634 tr46@^2.0.2: 3635 version "2.0.2" ··· 3638 dependencies: 3639 punycode "^2.1.1" 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 + 3653 tslib@^1.9.0: 3654 version "1.13.0" 3655 resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 3656 integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 3657 3658 type-check@~0.3.2: 3659 version "0.3.2" 3660 resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" ··· 3671 version "0.11.0" 3672 resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 3673 integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 3674 3675 typedarray-to-buffer@^3.1.5: 3676 version "3.1.5" ··· 3702 resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" 3703 integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== 3704 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== 3709 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= 3714 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== 3719 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== 3724 dependencies: 3725 "@types/istanbul-lib-coverage" "^2.0.1" 3726 convert-source-map "^1.6.0" ··· 3734 spdx-correct "^3.0.0" 3735 spdx-expression-parse "^3.0.0" 3736 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= 3741 dependencies: 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" 3755 3756 w3c-hr-time@^1.0.2: 3757 version "1.0.2" ··· 3767 dependencies: 3768 xml-name-validator "^3.0.0" 3769 3770 + walker@^1.0.7: 3771 version "1.0.7" 3772 resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" 3773 integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= 3774 dependencies: 3775 makeerror "1.0.x" 3776 3777 webidl-conversions@^5.0.0: 3778 version "5.0.0" 3779 resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 3780 integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 3781 3782 + webidl-conversions@^6.1.0: 3783 version "6.1.0" 3784 resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 3785 integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== ··· 3805 tr46 "^2.0.2" 3806 webidl-conversions "^5.0.0" 3807 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" 3816 3817 which-pm-runs@^1.0.0: 3818 version "1.0.0" ··· 3826 dependencies: 3827 isexe "^2.0.0" 3828 3829 + which@^2.0.1: 3830 version "2.0.2" 3831 resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 3832 integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== ··· 3847 string-width "^4.1.0" 3848 strip-ansi "^6.0.0" 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 + 3859 wrappy@1: 3860 version "1.0.2" 3861 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" ··· 3871 signal-exit "^3.0.2" 3872 typedarray-to-buffer "^3.1.5" 3873 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== 3878 3879 xml-name-validator@^3.0.0: 3880 version "3.0.0" ··· 3886 resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 3887 integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 3888 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== 3893 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== 3898 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== 3903 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== 3908 dependencies: 3909 + cliui "^7.0.2" 3910 + escalade "^3.1.1" 3911 + get-caller-file "^2.0.5" 3912 require-directory "^2.1.1" 3913 string-width "^4.2.0" 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==