Mirror: The magical sticky regex-based parser generator 🧙

Publish RegHex

kitten.sh 5dd1c1cb

+1
.gitattributes
···
+
* text=auto
+8
.gitignore
···
+
/.vscode
+
*.log
+
.rts2_cache*
+
dist/
+
node_modules/
+
package-lock.json
+
.DS_Store
+
.next
+21
LICENSE.md
···
+
MIT License
+
+
Copyright (c) 2020 Phil Plückthun
+
+
Permission is hereby granted, free of charge, to any person obtaining a copy
+
of this software and associated documentation files (the "Software"), to deal
+
in the Software without restriction, including without limitation the rights
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
copies of the Software, and to permit persons to whom the Software is
+
furnished to do so, subject to the following conditions:
+
+
The above copyright notice and this permission notice shall be included in all
+
copies or substantial portions of the Software.
+
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
SOFTWARE.
+349
README.md
···
+
<div align="center">
+
<img alt="reghex" width="250" src="docs/reghex-logo.png" />
+
<br />
+
<br />
+
<strong>
+
The magical sticky regex-based parser generator
+
</strong>
+
<br />
+
<br />
+
<br />
+
</div>
+
+
Leveraging the power of sticky regexes and Babel code generation, `reghex` allows
+
you to code parsers quickly, by surrounding regular expressions with a regex-like
+
[DSL](https://en.wikipedia.org/wiki/Domain-specific_language).
+
+
With `reghex` you can generate a parser from a tagged template literal, which is
+
quick to prototype and generates reasonably compact and performant code.
+
+
_This project is still in its early stages and is experimental. Its API may still
+
change and some issues may need to be ironed out._
+
+
## Quick Start
+
+
##### 1. Install with yarn or npm
+
+
```sh
+
yarn add reghex
+
# or
+
npm install --save reghex
+
```
+
+
##### 2. Add the plugin to your Babel configuration (`.babelrc`, `babel.config.js`, or `package.json:babel`)
+
+
```json
+
{
+
"plugins": ["reghex/babel"]
+
}
+
```
+
+
Alternatively, you can set up [`babel-plugin-macros`](https://github.com/kentcdodds/babel-plugin-macros) and
+
import `reghex` from `"reghex/macro"` instead.
+
+
##### 3. Have fun writing parsers!
+
+
```js
+
import match, { parse } from 'reghex';
+
+
const name = match('name')`
+
${/\w+/}
+
`;
+
+
parse(name)('hello');
+
// [ "hello", .tag = "name" ]
+
```
+
+
## Concepts
+
+
The fundamental concept of `reghex` are regexes, specifically
+
[sticky regexes](https://www.loganfranken.com/blog/831/es6-everyday-sticky-regex-matches/)!
+
These are regular expressions that don't search a target string, but instead match at the
+
specific position they're at. The flag for sticky regexes is `y` and hence
+
they can be created using `/phrase/y` or `new RegExp('phrase', 'y')`.
+
+
**Sticky Regexes** are the perfect foundation for a parsing framework in JavaScript!
+
Because they only match at a single position they can be used to match patterns
+
continuously, as a parser would. Like global regexes, we can then manipulate where
+
they should be matched by setting `regex.lastIndex = index;` and after matching
+
read back their updated `regex.lastIndex`.
+
+
> **Note:** Sticky Regexes aren't natively
+
> [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.
+
+
This primitive allows us to build up a parser from regexes that you pass when
+
authoring a parser function, also called a "matcher" in `reghex`. When `reghex` compiles
+
to parser code, this code is just a sequence and combination of sticky regexes that
+
are executed in order!
+
+
```js
+
let input = 'phrases should be parsed...';
+
let lastIndex = 0;
+
+
const regex = /phrase/y;
+
function matcher() {
+
let match;
+
// Before matching we set the current index on the RegExp
+
regex.lastIndex = lastIndex;
+
// Then we match and store the result
+
if ((match = regex.exec(input))) {
+
// If the RegExp matches successfully, we update our lastIndex
+
lastIndex = regex.lastIndex;
+
}
+
}
+
```
+
+
This mechanism is used in all matcher functions that `reghex` generates.
+
Internally `reghex` keeps track of the input string and the current index on
+
that string, and the matcher functions execute regexes against this state.
+
+
## Authoring Guide
+
+
You can write "matchers" by importing the default import from `reghex` and
+
using it to write a matcher expression.
+
+
```js
+
import match from 'reghex';
+
+
const name = match('name')`
+
${/\w+/}
+
`;
+
```
+
+
As can be seen above, the `match` function, which is what we've called the
+
default import, is called with a "node name" and is then called as a tagged
+
template. This template is our **parsing definition**.
+
+
`reghex` functions only with its Babel plugin, which will detect `match('name')`
+
and replace the entire tag with a parsing function, which may then look like
+
the following in your transpiled code:
+
+
```js
+
import { _pattern /* ... */ } from 'reghex';
+
+
var _name_expression = _pattern(/\w+/);
+
var name = function name() {
+
/* ... */
+
};
+
```
+
+
We've now successfully created a matcher, which matches a single regex, which
+
is a pattern of one or more letters. We can execute this matcher by calling
+
it with the curried `parse` utility:
+
+
```js
+
import { parse } from 'reghex';
+
+
const result = parse(name)('Tim');
+
+
console.log(result); // [ "Tim", .tag = "name" ]
+
console.log(result.tag); // "name"
+
```
+
+
If the string (Here: "Tim") was parsed successfully by the matcher, it will
+
return an array that contains the result of the regex. The array is special
+
in that it will also have a `tag` property set to the matcher's name, here
+
`"name"`, which we determined when we defined the matcher as `match('name')`.
+
+
```js
+
import { parse } from 'reghex';
+
parse(name)('42'); // undefined
+
```
+
+
Similarly, if the matcher does not parse an input string successfully, it will
+
return `undefined` instead.
+
+
### Nested matchers
+
+
This on its own is nice, but a parser must be able to traverse a string and
+
turn it into an [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree).
+
To introduce nesting to `reghex` matchers, we can refer to one matcher in another!
+
Let's extend our original example;
+
+
```js
+
import match from 'reghex';
+
+
const name = match('name')`
+
${/\w+/}
+
`;
+
+
const hello = match('hello')`
+
${/hello /} ${name}
+
`;
+
```
+
+
The new `hello` matcher is set to match `/hello /` and then attempts to match
+
the `name` matcher afterwards. If either of these matchers fail, it will return
+
`undefined` as well and roll back its changes. Using this matcher will give us
+
**nested abstract output**.
+
+
We can also see in this example that _outside_ of the regex interpolations,
+
whitespaces and newlines don't matter.
+
+
```js
+
import { parse } from 'reghex';
+
+
parse(hello)('hello tim');
+
/*
+
[
+
"hello",
+
["tim", .tag = "name"],
+
.tag = "hello"
+
]
+
*/
+
```
+
+
### Regex-like DSL
+
+
We've seen in the previous examples that matchers are authored using tagged
+
template literals, where interpolations can either be filled using regexes,
+
`${/pattern/}`, or with other matchers `${name}`.
+
+
The tagged template syntax supports more ways to match these interpolations,
+
using a regex-like Domain Specific Language. Unlike in regexes, whitespaces
+
and newlines don't matter to make it easier to format and read matchers.
+
+
We can create **sequences** of matchers by adding multiple expressions in
+
a row. A matcher using `${/1/} ${/2/}` will attempt to match `1` and then `2`
+
in the parsed string. This is just one feature of the regex-like DSL. The
+
available operators are the following:
+
+
| Operator | Example | Description |
+
| -------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+
| `?` | `${/1/}?` | An **optional** may be used to make an interpolation optional. This will mean that the interpolation may or may not match. |
+
| `*` | `${/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. |
+
| `+` | `${/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. |
+
| `\|` | `${/1/} \| ${/2/}` | An **alternation** can be used to match either one thing or another, falling back when the first interpolation fails. |
+
| `()` | `(${/1/} ${/2/})+` | A **group** can be used apply one of the other operators to an entire group of interpolations. |
+
| `(?: )` | `(?: ${/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. |
+
| `(?= )` | `(?= ${/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. |
+
| `(?! )` | `(?! ${/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. |
+
+
We can combine and compose these operators to create more complex matchers.
+
For instance, we can extend the original example to only allow a specific set
+
of names by using the `|` operator:
+
+
```js
+
const name = match('name')`
+
${/tim/} | ${/tom/} | ${/tam/}
+
`;
+
+
parse(name)('tim'); // [ "tim", .tag = "name" ]
+
parse(name)('tom'); // [ "tom", .tag = "name" ]
+
parse(name)('patrick'); // undefined
+
```
+
+
The above will now only match specific name strings. When one pattern in this
+
chain of **alternations** does not match, it will try the next one.
+
+
We can also use **groups** to add more matchers around the alternations themselves,
+
by surrounding the alternations with `(` and `)`
+
+
```js
+
const name = match('name')`
+
(${/tim/} | ${/tom/}) ${/!/}
+
`;
+
+
parse(name)('tim!'); // [ "tim", "!", .tag = "name" ]
+
parse(name)('tom!'); // [ "tom", "!", .tag = "name" ]
+
parse(name)('tim'); // undefined
+
```
+
+
Maybe we're also not that interested in the `"!"` showing up in the output node.
+
If we want to get rid of it, we can use a **non-capturing group** to hide it,
+
while still requiring it.
+
+
```js
+
const name = match('name')`
+
(${/tim/} | ${/tom/}) (?: ${/!/})
+
`;
+
+
parse(name)('tim!'); // [ "tim", .tag = "name" ]
+
parse(name)('tim'); // undefined
+
```
+
+
Lastly, like with regexex `?`, `*`, and `+` may be used as "quantifiers". The first two
+
may also be optional and _not_ match their patterns without the matcher failing.
+
The `+` operator is used to match an interpolation _one or more_ times, while the
+
`*` operators may match _zero or more_ times. Let's use this to allow the `"!"`
+
to repeat.
+
+
```js
+
const name = match('name')`
+
(${/tim/} | ${/tom/})+ (?: ${/!/})*
+
`;
+
+
parse(name)('tim!'); // [ "tim", .tag = "name" ]
+
parse(name)('tim!!!!'); // [ "tim", .tag = "name" ]
+
parse(name)('tim'); // [ "tim", .tag = "name" ]
+
parse(name)('timtim'); // [ "tim", tim", .tag = "name" ]
+
```
+
+
As we can see from the above, like in regexes, quantifiers can be combined with groups,
+
non-capturing groups, or other groups.
+
+
### Transforming as we match
+
+
In the previous sections, we've seen that the **nodes** that `reghex` outputs are arrays containing
+
match strings or other nodes and have a special `tag` property with the node's type.
+
We can **change this output** while we're parsing by passing a second function to our matcher definition.
+
+
```js
+
const name = match('name', (x) => x[0])`
+
(${/tim/} | ${/tom/}) ${/!/}
+
`;
+
+
parse(name)('tim'); // "tim"
+
```
+
+
In the above example, we're passing a small function, `x => x[0]` to the matcher as a
+
second argument. This will change the matcher's output, which causes the parser to
+
now return a new output for this matcher.
+
+
We can use this function creatively by outputting full AST nodes, maybe like the
+
ones even that resemble Babel's output:
+
+
```js
+
const identifier = match('identifier', (x) => ({
+
type: 'Identifier',
+
name: x[0],
+
}))`
+
${/[\w_][\w\d_]+/}
+
`;
+
+
parse(name)('var_name'); // { type: "Identifier", name: "var_name" }
+
```
+
+
We've now entirely changed the output of the parser for this matcher. Given that each
+
matcher can change its output, we're free to change the parser's output entirely.
+
By **returning a falsy** in this matcher, we can also change the matcher to not have
+
matched, which would cause other matchers to treat it like a mismatch!
+
+
```js
+
import match, { parse } from 'reghex';
+
+
const name = match('name')((x) => {
+
return x !== 'tim' ? x : undefined;
+
})`
+
${/\w+/}
+
`;
+
+
const hello = match('hello')`
+
${/hello /} ${name}
+
`;
+
+
parse(name)('tom'); // ["hello", ["tom", .tag = "name"], .tag = "hello"]
+
parse(name)('tim'); // undefined
+
```
+
+
Lastly, if we need to create these special array nodes ourselves, we can use `reghex`'s
+
`tag` export for this purpose.
+
+
```js
+
import { tag } from 'reghex';
+
+
tag(['test'], 'node_name');
+
// ["test", .tag = "node_name"]
+
```
+
+
**That's it! May the RegExp be ever in your favor.**
+1
babel.js
···
+
module.exports = require('./dist/reghex-babel.js').default;
docs/reghex-logo.png

This is a binary file and will not be displayed.

+1
macro.js
···
+
module.exports = require('./dist/reghex-macro.js').default;
+85
package.json
···
+
{
+
"name": "reghex",
+
"version": "1.0.0",
+
"description": "The magical sticky regex-based parser generator 🧙",
+
"author": "Phil Pluckthun <phil@kitten.sh>",
+
"license": "MIT",
+
"main": "dist/reghex-core",
+
"module": "dist/reghex-core.mjs",
+
"source": "src/core.js",
+
"files": [
+
"README.md",
+
"LICENSE.md",
+
"dist",
+
"src",
+
"babel.js",
+
"macro.js"
+
],
+
"exports": {
+
".": {
+
"import": "./dist/reghex-core.mjs",
+
"require": "./dist/reghex-core.js"
+
},
+
"./babel": {
+
"import": "./dist/reghex-babel.mjs",
+
"require": "./dist/reghex-babel.js"
+
},
+
"./macro": {
+
"import": "./dist/reghex-macro.mjs",
+
"require": "./dist/reghex-macro.js"
+
},
+
"./package.json": "./package.json"
+
},
+
"scripts": {
+
"prepublishOnly": "run-s clean build test",
+
"clean": "rimraf dist ./node_modules/.cache",
+
"build": "rollup -c rollup.config.js",
+
"test": "jest"
+
},
+
"keywords": [
+
"regex",
+
"sticky regex",
+
"parser",
+
"parser generator",
+
"babel"
+
],
+
"repository": "https://github.com/kitten/reghex",
+
"bugs": {
+
"url": "https://github.com/kitten/reghex/issues"
+
},
+
"devDependencies": {
+
"@babel/core": "7.9.6",
+
"@babel/plugin-transform-modules-commonjs": "^7.9.6",
+
"@babel/plugin-transform-object-assign": "^7.8.3",
+
"@rollup/plugin-buble": "^0.21.3",
+
"@rollup/plugin-commonjs": "^11.1.0",
+
"@rollup/plugin-node-resolve": "^7.1.3",
+
"babel-jest": "^26.0.1",
+
"babel-plugin-closure-elimination": "^1.3.1",
+
"husky": "^4.2.5",
+
"jest": "^26.0.1",
+
"lint-staged": "^10.2.2",
+
"npm-run-all": "^4.1.5",
+
"prettier": "^2.0.5",
+
"rimraf": "^3.0.2",
+
"rollup": "^2.10.2",
+
"rollup-plugin-babel": "^4.4.0"
+
},
+
"prettier": {
+
"singleQuote": true
+
},
+
"lint-staged": {
+
"*.{js,jsx,json,md}": "prettier --write"
+
},
+
"husky": {
+
"hooks": {
+
"pre-commit": "lint-staged --quiet --relative"
+
}
+
},
+
"jest": {
+
"testEnvironment": "node",
+
"transform": {
+
"\\.js$": "<rootDir>/scripts/jest-transform-esm.js"
+
}
+
}
+
}
+65
rollup.config.js
···
+
import commonjs from '@rollup/plugin-commonjs';
+
import resolve from '@rollup/plugin-node-resolve';
+
import buble from '@rollup/plugin-buble';
+
import babel from 'rollup-plugin-babel';
+
+
const plugins = [
+
commonjs({
+
ignoreGlobal: true,
+
include: ['*', '**'],
+
extensions: ['.js', '.ts', '.tsx'],
+
}),
+
resolve({
+
mainFields: ['module', 'jsnext', 'main'],
+
extensions: ['.js', '.ts', '.tsx'],
+
browser: true,
+
}),
+
buble({
+
transforms: {
+
unicodeRegExp: false,
+
dangerousForOf: true,
+
dangerousTaggedTemplateString: true,
+
},
+
objectAssign: 'Object.assign',
+
exclude: 'node_modules/**',
+
}),
+
babel({
+
babelrc: false,
+
extensions: ['ts', 'tsx', 'js'],
+
exclude: 'node_modules/**',
+
presets: [],
+
plugins: [
+
'@babel/plugin-transform-object-assign',
+
'babel-plugin-closure-elimination',
+
],
+
}),
+
];
+
+
const output = (format = 'cjs', ext = '.js') => ({
+
chunkFileNames: '[hash]' + ext,
+
entryFileNames: 'reghex-[name]' + ext,
+
dir: './dist',
+
exports: 'named',
+
externalLiveBindings: false,
+
sourcemap: true,
+
esModule: false,
+
indent: false,
+
freeze: false,
+
strict: false,
+
format,
+
});
+
+
export default {
+
input: {
+
core: './src/core.js',
+
babel: './src/babel/plugin.js',
+
macro: './src/babel/macro.js',
+
},
+
onwarn: () => {},
+
external: () => false,
+
treeshake: {
+
propertyReadSideEffects: false,
+
},
+
plugins,
+
output: [output('cjs', '.js'), output('esm', '.mjs')],
+
};
+5
scripts/jest-transform-esm.js
···
+
const { createTransformer } = require('babel-jest');
+
+
module.exports = createTransformer({
+
plugins: [require.resolve('@babel/plugin-transform-modules-commonjs')],
+
});
+250
src/babel/__snapshots__/plugin.test.js.snap
···
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+
exports[`works together with @babel/plugin-transform-modules-commonjs 1`] = `
+
"\\"use strict\\";
+
+
var _reghex = require(\\"reghex\\");
+
+
var _node_expression = (0, _reghex._pattern)(1),
+
_node_expression2 = (0, _reghex._pattern)(2);
+
+
const node = function _node() {
+
var match,
+
last_index = (0, _reghex._getLastIndex)(),
+
node = (0, _reghex.tag)([], 'node');
+
+
if (match = (0, _reghex._execPattern)(_node_expression)) {
+
node.push(match);
+
} else {
+
(0, _reghex._setLastIndex)(last_index);
+
return;
+
}
+
+
if (match = (0, _reghex._execPattern)(_node_expression2)) {
+
node.push(match);
+
} else {
+
(0, _reghex._setLastIndex)(last_index);
+
return;
+
}
+
+
return node;
+
};"
+
`;
+
+
exports[`works with local recursion 1`] = `
+
"import { tag, _getLastIndex, _setLastIndex, _execPattern, _pattern } from 'reghex';
+
+
var _inner_expression = _pattern(/inner/);
+
+
const inner = function _inner() {
+
var match,
+
last_index = _getLastIndex(),
+
node = tag([], 'inner');
+
+
if (match = _execPattern(_inner_expression)) {
+
node.push(match);
+
} else {
+
_setLastIndex(last_index);
+
+
return;
+
}
+
+
return node;
+
};
+
+
const node = function _node() {
+
var match,
+
last_index = _getLastIndex(),
+
node = tag([], 'node');
+
+
if (match = inner()) {
+
node.push(match);
+
} else {
+
_setLastIndex(last_index);
+
+
return;
+
}
+
+
return node;
+
};"
+
`;
+
+
exports[`works with non-capturing groups 1`] = `
+
"import { _getLastIndex, _setLastIndex, _execPattern, _pattern, tag as _tag } from 'reghex';
+
+
var _node_expression = _pattern(1),
+
_node_expression2 = _pattern(2),
+
_node_expression3 = _pattern(3);
+
+
const node = function _node() {
+
var match,
+
last_index = _getLastIndex(),
+
node = _tag([], 'node');
+
+
if (match = _execPattern(_node_expression)) {
+
node.push(match);
+
} else {
+
_setLastIndex(last_index);
+
+
return;
+
}
+
+
var length_0 = node.length;
+
+
alternation_1: {
+
block_1: {
+
var index_1 = _getLastIndex();
+
+
if (match = _execPattern(_node_expression2)) {
+
node.push(match);
+
} else {
+
node.length = length_0;
+
+
_setLastIndex(index_1);
+
+
break block_1;
+
}
+
+
break alternation_1;
+
}
+
+
loop_1: for (var iter_1 = 0; true; iter_1++) {
+
var index_1 = _getLastIndex();
+
+
if (!_execPattern(_node_expression3)) {
+
if (iter_1) {
+
_setLastIndex(index_1);
+
+
break loop_1;
+
}
+
+
node.length = length_0;
+
+
_setLastIndex(last_index);
+
+
return;
+
}
+
}
+
}
+
+
return node;
+
};"
+
`;
+
+
exports[`works with standard features 1`] = `
+
"import { _getLastIndex, _setLastIndex, _execPattern, _pattern, tag as _tag } from \\"reghex\\";
+
+
var _node_expression = _pattern(1),
+
_node_expression2 = _pattern(2),
+
_node_expression3 = _pattern(3),
+
_node_expression4 = _pattern(4),
+
_node_expression5 = _pattern(5);
+
+
const node = function _node() {
+
var match,
+
last_index = _getLastIndex(),
+
node = _tag([], 'node');
+
+
block_0: {
+
var index_0 = _getLastIndex();
+
+
loop_0: for (var iter_0 = 0; true; iter_0++) {
+
var index_0 = _getLastIndex();
+
+
if (match = _execPattern(_node_expression)) {
+
node.push(match);
+
} else {
+
if (iter_0) {
+
_setLastIndex(index_0);
+
+
break loop_0;
+
}
+
+
_setLastIndex(index_0);
+
+
break block_0;
+
}
+
}
+
+
return node;
+
}
+
+
loop_0: for (var iter_0 = 0; true; iter_0++) {
+
var index_0 = _getLastIndex();
+
+
if (match = _execPattern(_node_expression2)) {
+
node.push(match);
+
} else {
+
if (iter_0) {
+
_setLastIndex(index_0);
+
+
break loop_0;
+
}
+
+
_setLastIndex(last_index);
+
+
return;
+
}
+
}
+
+
loop_0: while (true) {
+
var index_0 = _getLastIndex();
+
+
var length_0 = node.length;
+
+
if (match = _execPattern(_node_expression3)) {
+
node.push(match);
+
} else {
+
node.length = length_0;
+
+
_setLastIndex(index_0);
+
+
break loop_0;
+
}
+
+
var index_2 = _getLastIndex();
+
+
if (match = _execPattern(_node_expression4)) {
+
node.push(match);
+
} else {
+
_setLastIndex(index_2);
+
}
+
+
if (match = _execPattern(_node_expression5)) {
+
node.push(match);
+
} else {
+
node.length = length_0;
+
+
_setLastIndex(index_0);
+
+
break loop_0;
+
}
+
}
+
+
return node;
+
};"
+
`;
+
+
exports[`works with transform functions 1`] = `
+
"import { _getLastIndex, _setLastIndex, _execPattern, _pattern, tag as _tag } from 'reghex';
+
+
var _inner_transform = x => x;
+
+
const first = function _inner() {
+
var match,
+
last_index = _getLastIndex(),
+
node = _tag([], 'inner');
+
+
return _inner_transform(node);
+
};
+
+
const transform = x => x;
+
+
const second = function _node() {
+
var match,
+
last_index = _getLastIndex(),
+
node = _tag([], 'node');
+
+
return transform(node);
+
};"
+
`;
+573
src/babel/__tests__/suite.js
···
+
import * as reghex from '../../..';
+
import * as types from '@babel/types';
+
import { transform } from '@babel/core';
+
import { makeHelpers } from '../transform';
+
+
const match = (name) => (quasis, ...expressions) => {
+
const helpers = makeHelpers(types);
+
+
let str = '';
+
for (let i = 0; i < quasis.length; i++) {
+
str += quasis[i];
+
if (i < expressions.length) str += '${' + expressions[i].toString() + '}';
+
}
+
+
const template = `(function () { return match('${name}')\`${str}\`; })()`;
+
+
const testPlugin = () => ({
+
visitor: {
+
TaggedTemplateExpression(path) {
+
helpers.transformMatch(path);
+
},
+
},
+
});
+
+
const { code } = transform(template, {
+
babelrc: false,
+
presets: [],
+
plugins: [testPlugin],
+
});
+
+
const argKeys = Object.keys(reghex).filter((x) => {
+
return x.startsWith('_') || x === 'tag';
+
});
+
+
const args = argKeys.map((key) => reghex[key]);
+
return new Function(...argKeys, 'return ' + code)(...args);
+
};
+
+
const expectToParse = (node, input, result, lastIndex = 0) => {
+
expect(reghex.parse(node)(input)).toEqual(
+
result === undefined ? result : reghex.tag(result, 'node')
+
);
+
+
// NOTE: After parsing we expect the current index to exactly match the
+
// sum amount of matched characters
+
if (result === undefined) {
+
expect(reghex._getLastIndex()).toBe(0);
+
} else {
+
const index = lastIndex || result.reduce((acc, x) => acc + x.length, 0);
+
expect(reghex._getLastIndex()).toBe(index);
+
}
+
};
+
+
describe('required matcher', () => {
+
const node = match('node')`${/1/}`;
+
it.each`
+
input | result
+
${'1'} | ${['1']}
+
${''} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('optional matcher', () => {
+
const node = match('node')`${/1/}?`;
+
it.each`
+
input | result
+
${'1'} | ${['1']}
+
${'_'} | ${[]}
+
${''} | ${[]}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('star matcher', () => {
+
const node = match('node')`${/1/}*`;
+
it.each`
+
input | result
+
${'1'} | ${['1']}
+
${'11'} | ${['1', '1']}
+
${'111'} | ${['1', '1', '1']}
+
${'_'} | ${[]}
+
${''} | ${[]}
+
`('should return $result when "$input" is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('plus matcher', () => {
+
const node = match('node')`${/1/}+`;
+
it.each`
+
input | result
+
${'1'} | ${['1']}
+
${'11'} | ${['1', '1']}
+
${'111'} | ${['1', '1', '1']}
+
${'_'} | ${undefined}
+
${''} | ${undefined}
+
`('should return $result when "$input" is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('optional then required matcher', () => {
+
const node = match('node')`${/1/}? ${/2/}`;
+
it.each`
+
input | result
+
${'12'} | ${['1', '2']}
+
${'2'} | ${['2']}
+
${''} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('star then required matcher', () => {
+
const node = match('node')`${/1/}* ${/2/}`;
+
it.each`
+
input | result
+
${'12'} | ${['1', '2']}
+
${'112'} | ${['1', '1', '2']}
+
${'2'} | ${['2']}
+
${''} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('plus then required matcher', () => {
+
const node = match('node')`${/1/}+ ${/2/}`;
+
it.each`
+
input | result
+
${'12'} | ${['1', '2']}
+
${'112'} | ${['1', '1', '2']}
+
${'2'} | ${undefined}
+
${''} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('optional group then required matcher', () => {
+
const node = match('node')`(${/1/} ${/2/})? ${/3/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'3'} | ${['3']}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('star group then required matcher', () => {
+
const node = match('node')`(${/1/} ${/2/})* ${/3/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'12123'} | ${['1', '2', '1', '2', '3']}
+
${'3'} | ${['3']}
+
${'13'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('plus group then required matcher', () => {
+
const node = match('node')`(${/1/} ${/2/})+ ${/3/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'12123'} | ${['1', '2', '1', '2', '3']}
+
${'3'} | ${undefined}
+
${'13'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('optional group with nested optional matcher, then required matcher', () => {
+
const node = match('node')`(${/1/}? ${/2/})? ${/3/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'23'} | ${['2', '3']}
+
${'3'} | ${['3']}
+
${'13'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('star group with nested optional matcher, then required matcher', () => {
+
const node = match('node')`(${/1/}? ${/2/})* ${/3/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'23'} | ${['2', '3']}
+
${'223'} | ${['2', '2', '3']}
+
${'2123'} | ${['2', '1', '2', '3']}
+
${'3'} | ${['3']}
+
${'13'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('plus group with nested optional matcher, then required matcher', () => {
+
const node = match('node')`(${/1/}? ${/2/})+ ${/3/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'23'} | ${['2', '3']}
+
${'223'} | ${['2', '2', '3']}
+
${'2123'} | ${['2', '1', '2', '3']}
+
${'3'} | ${undefined}
+
${'13'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('plus group with nested plus matcher, then required matcher', () => {
+
const node = match('node')`(${/1/}+ ${/2/})+ ${/3/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'1123'} | ${['1', '1', '2', '3']}
+
${'12123'} | ${['1', '2', '1', '2', '3']}
+
${'121123'} | ${['1', '2', '1', '1', '2', '3']}
+
${'3'} | ${undefined}
+
${'23'} | ${undefined}
+
${'13'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('plus group with nested required and plus matcher, then required matcher', () => {
+
const node = match('node')`(${/1/} ${/2/}+)+ ${/3/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'1223'} | ${['1', '2', '2', '3']}
+
${'122123'} | ${['1', '2', '2', '1', '2', '3']}
+
${'13'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('nested plus group with nested required and plus matcher, then required matcher or alternate', () => {
+
const node = match('node')`(${/1/} ${/2/}+)+ ${/3/} | ${/1/}`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'1223'} | ${['1', '2', '2', '3']}
+
${'122123'} | ${['1', '2', '2', '1', '2', '3']}
+
${'1'} | ${['1']}
+
${'13'} | ${['1']}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('nested plus group with nested required and plus matcher, then alternate', () => {
+
const node = match('node')`(${/1/} ${/2/}+)+ (${/3/} | ${/4/})`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'124'} | ${['1', '2', '4']}
+
${'1223'} | ${['1', '2', '2', '3']}
+
${'1224'} | ${['1', '2', '2', '4']}
+
${'1'} | ${undefined}
+
${'13'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('regular alternate', () => {
+
const node = match('node')`${/1/} | ${/2/} | ${/3/} | ${/4/}`;
+
it.each`
+
input | result
+
${'1'} | ${['1']}
+
${'2'} | ${['2']}
+
${'3'} | ${['3']}
+
${'4'} | ${['4']}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('nested alternate in nested alternate in alternate', () => {
+
const node = match('node')`((${/1/} | ${/2/}) | ${/3/}) | ${/4/}`;
+
it.each`
+
input | result
+
${'1'} | ${['1']}
+
${'2'} | ${['2']}
+
${'3'} | ${['3']}
+
${'4'} | ${['4']}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('alternate after required matcher', () => {
+
const node = match('node')`${/1/} (${/2/} | ${/3/})`;
+
it.each`
+
input | result
+
${'12'} | ${['1', '2']}
+
${'13'} | ${['1', '3']}
+
${'14'} | ${undefined}
+
${'3'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('alternate with star group and required matcher after required matcher', () => {
+
const node = match('node')`${/1/} (${/2/}* ${/3/} | ${/4/})`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'1223'} | ${['1', '2', '2', '3']}
+
${'13'} | ${['1', '3']}
+
${'14'} | ${['1', '4']}
+
${'12'} | ${undefined}
+
${'15'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('alternate with plus group and required matcher after required matcher', () => {
+
const node = match('node')`${/1/} (${/2/}+ ${/3/} | ${/4/})`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'1223'} | ${['1', '2', '2', '3']}
+
${'14'} | ${['1', '4']}
+
${'13'} | ${undefined}
+
${'12'} | ${undefined}
+
${'15'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('alternate with optional and required matcher after required matcher', () => {
+
const node = match('node')`${/1/} (${/2/}? ${/3/} | ${/4/})`;
+
it.each`
+
input | result
+
${'123'} | ${['1', '2', '3']}
+
${'13'} | ${['1', '3']}
+
${'14'} | ${['1', '4']}
+
${'12'} | ${undefined}
+
${'15'} | ${undefined}
+
${'_'} | ${undefined}
+
`('should return $result when $input is passed', ({ input, result }) => {
+
expectToParse(node, input, result);
+
});
+
});
+
+
describe('non-capturing group', () => {
+
const node = match('node')`${/1/} (?: ${/2/}+)`;
+
it.each`
+
input | result | lastIndex
+
${'12'} | ${['1']} | ${2}
+
${'122'} | ${['1']} | ${3}
+
${'13'} | ${undefined} | ${0}
+
${'1'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('non-capturing group with plus matcher, then required matcher', () => {
+
const node = match('node')`(?: ${/1/}+) ${/2/}`;
+
it.each`
+
input | result | lastIndex
+
${'12'} | ${['2']} | ${2}
+
${'112'} | ${['2']} | ${3}
+
${'1'} | ${undefined} | ${0}
+
${'13'} | ${undefined} | ${0}
+
${'2'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('non-capturing group with star group and required matcher, then required matcher', () => {
+
const node = match('node')`(?: ${/1/}* ${/2/}) ${/3/}`;
+
it.each`
+
input | result | lastIndex
+
${'123'} | ${['3']} | ${3}
+
${'1123'} | ${['3']} | ${4}
+
${'23'} | ${['3']} | ${2}
+
${'13'} | ${undefined} | ${0}
+
${'2'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('non-capturing group with plus group and required matcher, then required matcher', () => {
+
const node = match('node')`(?: ${/1/}+ ${/2/}) ${/3/}`;
+
it.each`
+
input | result | lastIndex
+
${'123'} | ${['3']} | ${3}
+
${'1123'} | ${['3']} | ${4}
+
${'23'} | ${undefined} | ${0}
+
${'13'} | ${undefined} | ${0}
+
${'2'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('non-capturing group with optional and required matcher, then required matcher', () => {
+
const node = match('node')`(?: ${/1/}? ${/2/}) ${/3/}`;
+
it.each`
+
input | result | lastIndex
+
${'123'} | ${['3']} | ${3}
+
${'23'} | ${['3']} | ${2}
+
${'13'} | ${undefined} | ${0}
+
${'2'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('positive lookahead group', () => {
+
const node = match('node')`(?= ${/1/}) ${/\d/}`;
+
it.each`
+
input | result | lastIndex
+
${'1'} | ${['1']} | ${1}
+
${'13'} | ${['1']} | ${1}
+
${'2'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('positive lookahead group with plus matcher', () => {
+
const node = match('node')`(?= ${/1/}+) ${/\d/}`;
+
it.each`
+
input | result | lastIndex
+
${'1'} | ${['1']} | ${1}
+
${'11'} | ${['1']} | ${1}
+
${'12'} | ${['1']} | ${1}
+
${'22'} | ${undefined} | ${0}
+
${'2'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('positive lookahead group with plus group and required matcher', () => {
+
const node = match('node')`(?= ${/1/}+ ${/2/}) ${/\d/}`;
+
it.each`
+
input | result | lastIndex
+
${'12'} | ${['1']} | ${1}
+
${'112'} | ${['1']} | ${1}
+
${'1123'} | ${['1']} | ${1}
+
${'2'} | ${undefined} | ${0}
+
${'1'} | ${undefined} | ${0}
+
${'2'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('negative lookahead group', () => {
+
const node = match('node')`(?! ${/1/}) ${/\d/}`;
+
it.each`
+
input | result | lastIndex
+
${'2'} | ${['2']} | ${1}
+
${'23'} | ${['2']} | ${1}
+
${'1'} | ${undefined} | ${0}
+
${'1'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('negative lookahead group with plus matcher', () => {
+
const node = match('node')`(?! ${/1/}+) ${/\d/}`;
+
it.each`
+
input | result | lastIndex
+
${'2'} | ${['2']} | ${1}
+
${'21'} | ${['2']} | ${1}
+
${'22'} | ${['2']} | ${1}
+
${'11'} | ${undefined} | ${0}
+
${'1'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+
+
describe('negative lookahead group with plus group and required matcher', () => {
+
const node = match('node')`(?! ${/1/}+ ${/2/}) ${/\d/}`;
+
it.each`
+
input | result | lastIndex
+
${'21'} | ${['2']} | ${1}
+
${'211'} | ${['2']} | ${1}
+
${'113'} | ${['1']} | ${1}
+
${'1'} | ${['1']} | ${1}
+
${'112'} | ${undefined} | ${0}
+
${'12'} | ${undefined} | ${0}
+
${'_'} | ${undefined} | ${0}
+
`(
+
'should return $result when $input is passed',
+
({ input, result, lastIndex }) => {
+
expectToParse(node, input, result, lastIndex);
+
}
+
);
+
});
+411
src/babel/generator.js
···
+
let t;
+
let ids = {};
+
+
export function initGenerator(_ids, _t) {
+
ids = _ids;
+
t = _t;
+
}
+
+
/** var id = getLastIndex(); */
+
class AssignIndexNode {
+
constructor(id) {
+
this.id = id;
+
}
+
+
statement() {
+
const call = t.callExpression(ids.getLastIndex, []);
+
return t.variableDeclaration('var', [t.variableDeclarator(this.id, call)]);
+
}
+
}
+
+
/** setLastIndex(id); */
+
class RestoreIndexNode {
+
constructor(id) {
+
this.id = id;
+
}
+
+
statement() {
+
const expression = t.callExpression(ids.setLastIndex, [this.id]);
+
return t.expressionStatement(expression);
+
}
+
}
+
+
/** var id = node.length; */
+
class AssignLengthNode {
+
constructor(id) {
+
this.id = id;
+
}
+
+
statement() {
+
return t.variableDeclaration('var', [
+
t.variableDeclarator(
+
this.id,
+
t.memberExpression(ids.node, t.identifier('length'))
+
),
+
]);
+
}
+
}
+
+
/** node.length = id; */
+
class RestoreLengthNode {
+
constructor(id) {
+
this.id = id;
+
}
+
+
statement() {
+
const expression = t.assignmentExpression(
+
'=',
+
t.memberExpression(ids.node, t.identifier('length')),
+
this.id
+
);
+
+
return t.expressionStatement(expression);
+
}
+
}
+
+
/** return; break id; */
+
class AbortNode {
+
constructor(id) {
+
this.id = id || null;
+
}
+
+
statement() {
+
const statement = this.id ? t.breakStatement(this.id) : t.returnStatement();
+
return statement;
+
}
+
}
+
+
/** if (condition) { return; break id; } */
+
class AbortConditionNode {
+
constructor(condition, opts) {
+
this.condition = condition || null;
+
+
this.abort = opts.abort;
+
this.abortCondition = opts.abortCondition || null;
+
this.restoreIndex = opts.restoreIndex;
+
}
+
+
statement() {
+
return t.ifStatement(
+
this.condition,
+
t.blockStatement(
+
[this.restoreIndex.statement(), this.abort.statement()].filter(Boolean)
+
),
+
this.abortCondition ? this.abortCondition.statement() : null
+
);
+
}
+
}
+
+
/** Generates a full matcher for an expression */
+
class ExpressionNode {
+
constructor(ast, depth, opts) {
+
this.ast = ast;
+
this.depth = depth || 0;
+
this.capturing = !!opts.capturing;
+
this.restoreIndex = opts.restoreIndex;
+
this.restoreLength = opts.restoreLength || null;
+
this.abortCondition = opts.abortCondition || null;
+
this.abort = opts.abort || null;
+
}
+
+
statements() {
+
const execMatch = this.ast.expression;
+
const assignMatch = t.assignmentExpression('=', ids.match, execMatch);
+
+
const successNodes = t.blockStatement([
+
t.expressionStatement(
+
t.callExpression(t.memberExpression(ids.node, t.identifier('push')), [
+
ids.match,
+
])
+
),
+
]);
+
+
const abortNodes = t.blockStatement(
+
[
+
this.abortCondition && this.abortCondition.statement(),
+
this.abort && this.restoreLength && this.restoreLength.statement(),
+
this.restoreIndex && this.restoreIndex.statement(),
+
this.abort && this.abort.statement(),
+
].filter(Boolean)
+
);
+
+
return [
+
!this.capturing
+
? t.ifStatement(t.unaryExpression('!', execMatch), abortNodes)
+
: t.ifStatement(assignMatch, successNodes, abortNodes),
+
];
+
}
+
}
+
+
/** Generates a full matcher for a group */
+
class GroupNode {
+
constructor(ast, depth, opts) {
+
this.ast = ast;
+
this.depth = depth || 0;
+
if (ast.sequence.length === 1) {
+
return new ExpressionNode(ast.sequence[0], depth, opts);
+
}
+
+
const lengthId = t.identifier(`length_${depth}`);
+
const childOpts = {
+
...opts,
+
capturing: !!opts.capturing && !!ast.capturing,
+
};
+
+
this.assignLength = null;
+
if (!childOpts.restoreLength && childOpts.capturing) {
+
this.assignLength = new AssignLengthNode(lengthId);
+
childOpts.restoreLength = new RestoreLengthNode(lengthId);
+
}
+
+
this.alternation = new AlternationNode(ast.sequence, depth + 1, childOpts);
+
}
+
+
statements() {
+
return [
+
this.assignLength && this.assignLength.statement(),
+
...this.alternation.statements(),
+
].filter(Boolean);
+
}
+
}
+
+
/** Generates looping logic around another group or expression matcher */
+
class QuantifierNode {
+
constructor(ast, depth, opts) {
+
const { quantifier } = ast;
+
this.ast = ast;
+
this.depth = depth || 0;
+
+
const invertId = t.identifier(`invert_${this.depth}`);
+
const loopId = t.identifier(`loop_${this.depth}`);
+
const iterId = t.identifier(`iter_${this.depth}`);
+
const indexId = t.identifier(`index_${this.depth}`);
+
const ChildNode = ast.type === 'group' ? GroupNode : ExpressionNode;
+
const childOpts = { ...opts };
+
+
this.assignIndex = null;
+
this.restoreIndex = null;
+
this.blockId = null;
+
this.abort = null;
+
if (ast.type === 'group' && !!ast.lookahead) {
+
this.restoreIndex = new RestoreIndexNode(indexId);
+
this.assignIndex = new AssignIndexNode(indexId);
+
childOpts.restoreIndex = null;
+
}
+
+
if (ast.type === 'group' && ast.lookahead === 'negative') {
+
this.blockId = invertId;
+
this.abort = opts.abort;
+
childOpts.abort = new AbortNode(invertId);
+
}
+
+
if (quantifier && !quantifier.singular && quantifier.required) {
+
childOpts.abortCondition = new AbortConditionNode(iterId, {
+
...opts,
+
restoreIndex: new RestoreIndexNode(indexId),
+
abort: new AbortNode(loopId),
+
});
+
} else if (quantifier && !quantifier.singular) {
+
childOpts.restoreLength = null;
+
childOpts.restoreIndex = new RestoreIndexNode(indexId);
+
childOpts.abort = new AbortNode(loopId);
+
childOpts.abortCondition = null;
+
} else if (quantifier && !quantifier.required) {
+
childOpts.restoreIndex = new RestoreIndexNode(indexId);
+
childOpts.abortCondition = null;
+
childOpts.abort = null;
+
}
+
+
this.childNode = new ChildNode(ast, depth, childOpts);
+
}
+
+
statements() {
+
const { quantifier } = this.ast;
+
const loopId = t.identifier(`loop_${this.depth}`);
+
const iterId = t.identifier(`iter_${this.depth}`);
+
const indexId = t.identifier(`index_${this.depth}`);
+
const getLastIndex = t.callExpression(ids.getLastIndex, []);
+
+
let statements;
+
if (quantifier && !quantifier.singular && quantifier.required) {
+
statements = [
+
t.labeledStatement(
+
loopId,
+
t.forStatement(
+
t.variableDeclaration('var', [
+
t.variableDeclarator(iterId, t.numericLiteral(0)),
+
]),
+
t.booleanLiteral(true),
+
t.updateExpression('++', iterId),
+
t.blockStatement([
+
t.variableDeclaration('var', [
+
t.variableDeclarator(indexId, getLastIndex),
+
]),
+
...this.childNode.statements(),
+
])
+
)
+
),
+
];
+
} else if (quantifier && !quantifier.singular) {
+
statements = [
+
t.labeledStatement(
+
loopId,
+
t.whileStatement(
+
t.booleanLiteral(true),
+
t.blockStatement([
+
t.variableDeclaration('var', [
+
t.variableDeclarator(indexId, getLastIndex),
+
]),
+
...this.childNode.statements(),
+
])
+
)
+
),
+
];
+
} else if (quantifier && !quantifier.required) {
+
statements = [
+
t.variableDeclaration('var', [
+
t.variableDeclarator(indexId, getLastIndex),
+
]),
+
...this.childNode.statements(),
+
];
+
} else {
+
statements = this.childNode.statements();
+
}
+
+
if (this.restoreIndex && this.assignIndex) {
+
statements.unshift(this.assignIndex.statement());
+
statements.push(this.restoreIndex.statement());
+
}
+
+
if (this.blockId) {
+
statements = [
+
t.labeledStatement(
+
this.blockId,
+
t.blockStatement([...statements, this.abort.statement()])
+
),
+
];
+
}
+
+
return statements;
+
}
+
}
+
+
/** Generates a matcher of a sequence of sub-matchers for a single sequence */
+
class SequenceNode {
+
constructor(ast, depth, opts) {
+
this.ast = ast;
+
this.depth = depth || 0;
+
+
const indexId = t.identifier(`index_${depth}`);
+
const blockId = t.identifier(`block_${this.depth}`);
+
+
this.returnStatement = opts.returnStatement;
+
this.assignIndex = ast.alternation ? new AssignIndexNode(indexId) : null;
+
+
this.quantifiers = ast.sequence.map((childAst) => {
+
return new QuantifierNode(childAst, depth, {
+
...opts,
+
restoreIndex: ast.alternation
+
? new RestoreIndexNode(indexId)
+
: opts.restoreIndex,
+
abortCondition: ast.alternation ? null : opts.abortCondition,
+
abort: ast.alternation ? new AbortNode(blockId) : opts.abort,
+
});
+
});
+
}
+
+
statements() {
+
const blockId = t.identifier(`block_${this.depth}`);
+
const alternationId = t.identifier(`alternation_${this.depth}`);
+
const statements = this.quantifiers.reduce((block, node) => {
+
block.push(...node.statements());
+
return block;
+
}, []);
+
+
if (!this.ast.alternation) {
+
return statements;
+
}
+
+
const abortNode =
+
this.depth === 0 ? this.returnStatement : t.breakStatement(alternationId);
+
+
return [
+
t.labeledStatement(
+
blockId,
+
t.blockStatement([
+
this.assignIndex && this.assignIndex.statement(),
+
...statements,
+
abortNode,
+
])
+
),
+
];
+
}
+
}
+
+
/** Generates matchers for sequences with (or without) alternations */
+
class AlternationNode {
+
constructor(ast, depth, opts) {
+
this.ast = ast;
+
this.depth = depth || 0;
+
this.sequences = [];
+
for (let current = ast; current; current = current.alternation) {
+
this.sequences.push(new SequenceNode(current, depth, opts));
+
}
+
}
+
+
statements() {
+
if (this.sequences.length === 1) {
+
return this.sequences[0].statements();
+
}
+
+
const statements = [];
+
for (let i = 0; i < this.sequences.length; i++) {
+
statements.push(...this.sequences[i].statements());
+
}
+
+
if (this.depth === 0) {
+
return statements;
+
}
+
+
const alternationId = t.identifier(`alternation_${this.depth}`);
+
return [t.labeledStatement(alternationId, t.blockStatement(statements))];
+
}
+
}
+
+
export class RootNode {
+
constructor(ast, nameNode, transformNode) {
+
const indexId = t.identifier('last_index');
+
+
this.returnStatement = t.returnStatement(
+
transformNode ? t.callExpression(transformNode, [ids.node]) : ids.node
+
);
+
+
this.nameNode = nameNode;
+
this.node = new AlternationNode(ast, 0, {
+
returnStatement: this.returnStatement,
+
restoreIndex: new RestoreIndexNode(indexId, true),
+
restoreLength: null,
+
abortCondition: null,
+
abort: new AbortNode(),
+
capturing: true,
+
});
+
}
+
+
statements() {
+
const indexId = t.identifier('last_index');
+
const getLastIndex = t.callExpression(ids.getLastIndex, []);
+
+
return [
+
t.variableDeclaration('var', [
+
t.variableDeclarator(ids.match),
+
t.variableDeclarator(indexId, getLastIndex),
+
t.variableDeclarator(
+
ids.node,
+
t.callExpression(ids.tag, [t.arrayExpression(), this.nameNode])
+
),
+
]),
+
...this.node.statements(),
+
this.returnStatement,
+
];
+
}
+
}
+25
src/babel/macro.js
···
+
import { createMacro } from 'babel-plugin-macros';
+
import { makeHelpers } from './transform';
+
+
function reghexMacro({ references, babel: { types: t } }) {
+
const helpers = makeHelpers(t);
+
const defaultRefs = references.default || [];
+
+
defaultRefs.forEach((ref) => {
+
if (!t.isCallExpression(ref.parentPath.node)) return;
+
const path = ref.parentPath.parentPath;
+
if (!helpers.isMatch(path)) return;
+
+
const importPath = helpers.getMatchImport(path);
+
if (!importPath) return;
+
+
helpers.updateImport(importPath);
+
helpers.transformMatch(path);
+
});
+
+
return {
+
keepImports: true,
+
};
+
}
+
+
export default createMacro(reghexMacro);
+22
src/babel/plugin.js
···
+
import { makeHelpers } from './transform';
+
+
export default function reghexPlugin({ types }) {
+
let helpers;
+
+
return {
+
name: 'reghex',
+
visitor: {
+
Program() {
+
helpers = makeHelpers(types);
+
},
+
ImportDeclaration(path) {
+
helpers.updateImport(path);
+
},
+
TaggedTemplateExpression(path) {
+
if (helpers.isMatch(path) && helpers.getMatchImport(path)) {
+
helpers.transformMatch(path);
+
}
+
},
+
},
+
};
+
}
+95
src/babel/plugin.test.js
···
+
import { transform } from '@babel/core';
+
import reghexPlugin from './plugin';
+
+
it('works with standard features', () => {
+
const code = `
+
import match from 'reghex/macro';
+
+
const node = match('node')\`
+
\${1}+ | \${2}+ (\${3} ( \${4}? \${5} ) )*
+
\`;
+
`;
+
+
expect(
+
transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] })
+
.code
+
).toMatchSnapshot();
+
});
+
+
it('works with local recursion', () => {
+
// NOTE: A different default name is allowed
+
const code = `
+
import match_rec, { tag } from 'reghex';
+
+
const inner = match_rec('inner')\`
+
\${/inner/}
+
\`;
+
+
const node = match_rec('node')\`
+
\${inner}
+
\`;
+
`;
+
+
expect(
+
transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] })
+
.code
+
).toMatchSnapshot();
+
});
+
+
it('works with transform functions', () => {
+
const code = `
+
import match from 'reghex';
+
+
const first = match('inner', x => x)\`\`;
+
+
const transform = x => x;
+
const second = match('node', transform)\`\`;
+
`;
+
+
expect(
+
transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] })
+
.code
+
).toMatchSnapshot();
+
});
+
+
it('works with non-capturing groups', () => {
+
const code = `
+
import match from 'reghex';
+
+
const node = match('node')\`
+
\${1} (\${2} | (?: \${3})+)
+
\`;
+
`;
+
+
expect(
+
transform(code, { babelrc: false, presets: [], plugins: [reghexPlugin] })
+
.code
+
).toMatchSnapshot();
+
});
+
+
it('works together with @babel/plugin-transform-modules-commonjs', () => {
+
const code = `
+
import match from 'reghex';
+
+
const node = match('node')\`
+
\${1} \${2}
+
\`;
+
`;
+
+
expect(
+
transform(code, {
+
babelrc: false,
+
presets: [],
+
plugins: [
+
reghexPlugin,
+
[
+
'@babel/plugin-transform-modules-commonjs',
+
{
+
noInterop: true,
+
loose: true,
+
},
+
],
+
],
+
}).code
+
).toMatchSnapshot();
+
});
+38
src/babel/sharedIds.js
···
+
export class SharedIds {
+
constructor(t) {
+
this.t = t;
+
this.getLastIndexId = t.identifier('_getLastIndex');
+
this.setLastIndexId = t.identifier('_setLastIndex');
+
this.execPatternId = t.identifier('_execPattern');
+
this.patternId = t.identifier('_pattern');
+
this.tagId = t.identifier('tag');
+
}
+
+
get node() {
+
return this.t.identifier('node');
+
}
+
+
get match() {
+
return this.t.identifier('match');
+
}
+
+
get getLastIndex() {
+
return this.t.identifier(this.getLastIndexId.name);
+
}
+
+
get setLastIndex() {
+
return this.t.identifier(this.setLastIndexId.name);
+
}
+
+
get execPattern() {
+
return this.t.identifier(this.execPatternId.name);
+
}
+
+
get pattern() {
+
return this.t.identifier(this.patternId.name);
+
}
+
+
get tag() {
+
return this.t.identifier(this.tagId.name);
+
}
+
}
+219
src/babel/transform.js
···
+
import { parse } from '../parser';
+
import { SharedIds } from './sharedIds';
+
import { initGenerator, RootNode } from './generator';
+
+
export function makeHelpers(t) {
+
const importSourceRe = /reghex$|^reghex\/macro/;
+
const importName = 'reghex';
+
const ids = new SharedIds(t);
+
initGenerator(ids, t);
+
+
let _hasUpdatedImport = false;
+
+
return {
+
/** Adds the reghex import declaration to the Program scope */
+
updateImport(path) {
+
if (_hasUpdatedImport) return;
+
if (!importSourceRe.test(path.node.source.value)) return;
+
_hasUpdatedImport = true;
+
+
const defaultSpecifierIndex = path.node.specifiers.findIndex((node) => {
+
return t.isImportDefaultSpecifier(node);
+
});
+
+
if (defaultSpecifierIndex > -1) {
+
path.node.specifiers.splice(defaultSpecifierIndex, 1);
+
}
+
+
if (path.node.source.value !== importName) {
+
path.node.source = t.stringLiteral(importName);
+
}
+
+
path.node.specifiers.push(
+
t.importSpecifier(
+
(ids.getLastIndexId = path.scope.generateUidIdentifier(
+
'getLastIndex'
+
)),
+
t.identifier('_getLastIndex')
+
),
+
t.importSpecifier(
+
(ids.setLastIndexId = path.scope.generateUidIdentifier(
+
'setLastIndex'
+
)),
+
t.identifier('_setLastIndex')
+
),
+
t.importSpecifier(
+
(ids.execPatternId = path.scope.generateUidIdentifier('execPattern')),
+
t.identifier('_execPattern')
+
),
+
t.importSpecifier(
+
(ids.patternId = path.scope.generateUidIdentifier('pattern')),
+
t.identifier('_pattern')
+
)
+
);
+
+
const tagImport = path.node.specifiers.find((node) => {
+
return t.isImportSpecifier(node) && node.imported.name === 'tag';
+
});
+
if (!tagImport) {
+
path.node.specifiers.push(
+
t.importSpecifier(
+
(ids.tagId = path.scope.generateUidIdentifier('tag')),
+
t.identifier('tag')
+
)
+
);
+
} else {
+
ids.tagId = tagImport.imported;
+
}
+
},
+
+
/** Determines whether the given tagged template expression is a reghex match */
+
isMatch(path) {
+
if (
+
t.isTaggedTemplateExpression(path.node) &&
+
t.isCallExpression(path.node.tag) &&
+
t.isIdentifier(path.node.tag.callee) &&
+
path.scope.hasBinding(path.node.tag.callee.name)
+
) {
+
if (t.isVariableDeclarator(path.parentPath))
+
path.parentPath._isMatch = true;
+
return true;
+
}
+
+
return (
+
t.isVariableDeclarator(path.parentPath) && path.parentPath._isMatch
+
);
+
},
+
+
/** Given a reghex match, returns the path to reghex's match import declaration */
+
getMatchImport(path) {
+
t.assertTaggedTemplateExpression(path.node);
+
const binding = path.scope.getBinding(path.node.tag.callee.name);
+
+
if (
+
binding.kind !== 'module' ||
+
!t.isImportDeclaration(binding.path.parent) ||
+
!importSourceRe.test(binding.path.parent.source.value) ||
+
!t.isImportDefaultSpecifier(binding.path.node)
+
) {
+
return null;
+
}
+
+
return binding.path.parentPath;
+
},
+
+
/** Given a match, returns an evaluated name or a best guess */
+
getMatchName(path) {
+
t.assertTaggedTemplateExpression(path.node);
+
const nameArgumentPath = path.get('tag.arguments.0');
+
const { confident, value } = nameArgumentPath.evaluate();
+
if (!confident && t.isIdentifier(nameArgumentPath.node)) {
+
return nameArgumentPath.node.name;
+
} else if (confident && typeof value === 'string') {
+
return value;
+
} else {
+
return path.scope.generateUidIdentifierBasedOnNode(path.node);
+
}
+
},
+
+
/** Given a match, hoists its expressions in front of the match's statement */
+
_hoistExpressions(path) {
+
t.assertTaggedTemplateExpression(path.node);
+
+
const variableDeclarators = [];
+
const matchName = this.getMatchName(path);
+
+
const hoistedExpressions = path.node.quasi.expressions.map(
+
(expression) => {
+
if (
+
t.isIdentifier(expression) &&
+
path.scope.hasBinding(expression.name)
+
) {
+
const binding = path.scope.getBinding(expression.name);
+
if (t.isVariableDeclarator(binding.path.node)) {
+
const matchPath = binding.path.get('init');
+
if (this.isMatch(matchPath)) return expression;
+
}
+
}
+
+
const id = path.scope.generateUidIdentifier(
+
`${matchName}_expression`
+
);
+
variableDeclarators.push(
+
t.variableDeclarator(
+
id,
+
t.callExpression(ids.pattern, [expression])
+
)
+
);
+
return id;
+
}
+
);
+
+
if (variableDeclarators.length) {
+
path
+
.getStatementParent()
+
.insertBefore(t.variableDeclaration('var', variableDeclarators));
+
}
+
+
return hoistedExpressions;
+
},
+
+
_hoistTransform(path) {
+
const transformNode = path.node.tag.arguments[1];
+
if (!transformNode) return null;
+
if (t.isIdentifier(transformNode)) return transformNode;
+
+
const matchName = this.getMatchName(path);
+
const id = path.scope.generateUidIdentifier(`${matchName}_transform`);
+
const declarator = t.variableDeclarator(id, transformNode);
+
+
path
+
.getStatementParent()
+
.insertBefore(t.variableDeclaration('var', [declarator]));
+
return id;
+
},
+
+
transformMatch(path) {
+
if (!path.node.tag.arguments.length) {
+
throw path
+
.get('tag')
+
.buildCodeFrameError(
+
'match() must at least be called with a node name'
+
);
+
}
+
+
const matchName = this.getMatchName(path);
+
const nameNode = path.node.tag.arguments[0];
+
const quasis = path.node.quasi.quasis.map((x) => x.value.cooked);
+
+
// Hoist expressions and wrap them in an execPattern call
+
const expressions = this._hoistExpressions(path).map((id) => {
+
// Directly call expression if it's sure to be another matcher
+
const binding = path.scope.getBinding(id.name);
+
if (binding && t.isVariableDeclarator(binding.path.node)) {
+
const matchPath = binding.path.get('init');
+
if (this.isMatch(matchPath)) return t.callExpression(id, []);
+
}
+
+
return t.callExpression(ids.execPattern, [id]);
+
});
+
+
// Hoist transform argument if necessary
+
const transformNode = this._hoistTransform(path);
+
+
let ast;
+
try {
+
ast = parse(quasis, expressions);
+
} catch (error) {
+
if (error.name !== 'SyntaxError') throw error;
+
throw path.get('quasi').buildCodeFrameError(error.message);
+
}
+
+
const generator = new RootNode(ast, nameNode, transformNode);
+
const body = t.blockStatement(generator.statements());
+
const matchFunctionId = path.scope.generateUidIdentifier(matchName);
+
const matchFunction = t.functionExpression(matchFunctionId, [], body);
+
path.replaceWith(matchFunction);
+
},
+
};
+
}
+56
src/core.js
···
+
const isStickySupported = typeof /./g.sticky === 'boolean';
+
+
let state$input = '';
+
let state$lastIndex = 0;
+
+
export const _getLastIndex = () => {
+
return state$lastIndex;
+
};
+
+
export const _setLastIndex = (index) => {
+
state$lastIndex = index;
+
};
+
+
export const _pattern = (input) => {
+
if (typeof input === 'function') return input;
+
+
const source = typeof input !== 'string' ? input.source : input;
+
return isStickySupported
+
? new RegExp(source, 'y')
+
: new RegExp(`^(?:${source})`, 'g');
+
};
+
+
export const _execPattern = (pattern) => {
+
if (typeof pattern === 'function') return pattern();
+
+
let match;
+
if (isStickySupported) {
+
pattern.lastIndex = state$lastIndex;
+
match = pattern.exec(state$input);
+
state$lastIndex = pattern.lastIndex;
+
} else {
+
pattern.lastIndex = 0;
+
match = pattern.exec(state$input.slice(state$lastIndex));
+
state$lastIndex += pattern.lastIndex;
+
}
+
+
return match && match[0];
+
};
+
+
export const tag = (array, tag) => {
+
array.tag = tag;
+
return array;
+
};
+
+
export const parse = (pattern) => (input) => {
+
state$input = input;
+
state$lastIndex = 0;
+
return pattern();
+
};
+
+
export const match = (_name) => {
+
throw new TypeError(
+
'This match() function was not transformed. ' +
+
'Ensure that the Babel plugin is set up correctly and try again.'
+
);
+
};
+110
src/parser.js
···
+
export const parse = (quasis, expressions) => {
+
let quasiIndex = 0;
+
let stackIndex = 0;
+
+
const sequenceStack = [];
+
const rootSequence = {
+
type: 'sequence',
+
sequence: [],
+
alternation: null,
+
};
+
+
let currentGroup = null;
+
let lastMatch;
+
let currentSequence = rootSequence;
+
+
while (stackIndex < quasis.length + expressions.length) {
+
if (stackIndex % 2 !== 0) {
+
const expression = expressions[stackIndex++ >> 1];
+
+
currentSequence.sequence.push({
+
type: 'expression',
+
expression,
+
quantifier: null,
+
});
+
}
+
+
const quasi = quasis[stackIndex >> 1];
+
while (quasiIndex < quasi.length) {
+
const char = quasi[quasiIndex++];
+
+
if (char === ' ' || char === '\t' || char === '\r' || char === '\n') {
+
continue;
+
} else if (char === '|' && currentSequence.sequence.length > 0) {
+
currentSequence = currentSequence.alternation = {
+
type: 'sequence',
+
sequence: [],
+
alternation: null,
+
};
+
+
continue;
+
} else if (char === ')' && currentSequence.sequence.length > 0) {
+
currentGroup = null;
+
currentSequence = sequenceStack.pop();
+
if (currentSequence) continue;
+
} else if (char === '(') {
+
currentGroup = {
+
type: 'group',
+
sequence: {
+
type: 'sequence',
+
sequence: [],
+
alternation: null,
+
},
+
capturing: true,
+
lookahead: null,
+
quantifier: null,
+
};
+
+
sequenceStack.push(currentSequence);
+
currentSequence.sequence.push(currentGroup);
+
currentSequence = currentGroup.sequence;
+
continue;
+
} else if (
+
char === '?' &&
+
currentSequence.sequence.length === 0 &&
+
currentGroup
+
) {
+
const nextChar = quasi[quasiIndex++];
+
if (!nextChar) {
+
throw new SyntaxError('Unexpected end of input after ' + char);
+
}
+
+
if (nextChar === ':') {
+
currentGroup.capturing = false;
+
continue;
+
} else if (nextChar === '=') {
+
currentGroup.capturing = false;
+
currentGroup.lookahead = 'positive';
+
continue;
+
} else if (nextChar === '!') {
+
currentGroup.capturing = false;
+
currentGroup.lookahead = 'negative';
+
continue;
+
}
+
} else if (
+
(char === '?' || char === '+' || char === '*') &&
+
(lastMatch =
+
currentSequence.sequence[currentSequence.sequence.length - 1])
+
) {
+
if (lastMatch.type === 'group' && lastMatch.lookahead) {
+
throw new SyntaxError('Unexpected quantifier on lookahead group');
+
}
+
+
lastMatch.quantifier = {
+
type: 'quantifier',
+
required: char === '+',
+
singular: char === '?',
+
};
+
+
continue;
+
}
+
+
throw new SyntaxError('Unexpected token ' + char);
+
}
+
+
stackIndex++;
+
quasiIndex = 0;
+
}
+
+
return rootSequence;
+
};
+160
src/parser.test.js
···
+
import { parse } from './parser';
+
+
const parseTag = (quasis, ...expressions) => parse(quasis, expressions);
+
+
it('supports parsing expressions', () => {
+
expect(parseTag`${1}`).toEqual({
+
type: 'sequence',
+
sequence: [
+
{
+
type: 'expression',
+
expression: 1,
+
quantifier: null,
+
},
+
],
+
alternation: null,
+
});
+
});
+
+
it('supports parsing expressions with quantifiers', () => {
+
let ast;
+
+
ast = parseTag`${1}?`;
+
expect(ast).toHaveProperty('sequence.0.type', 'expression');
+
expect(ast).toHaveProperty('sequence.0.quantifier', {
+
type: 'quantifier',
+
required: false,
+
singular: true,
+
});
+
+
ast = parseTag`${1}+`;
+
expect(ast).toHaveProperty('sequence.0.type', 'expression');
+
expect(ast).toHaveProperty('sequence.0.quantifier', {
+
type: 'quantifier',
+
required: true,
+
singular: false,
+
});
+
+
ast = parseTag`${1}*`;
+
expect(ast).toHaveProperty('sequence.0.type', 'expression');
+
expect(ast).toHaveProperty('sequence.0.quantifier', {
+
type: 'quantifier',
+
required: false,
+
singular: false,
+
});
+
});
+
+
it('supports top-level alternations', () => {
+
let ast;
+
+
ast = parseTag`${1} | ${2}`;
+
expect(ast).toHaveProperty('sequence.length', 1);
+
expect(ast).toHaveProperty('sequence.0.type', 'expression');
+
expect(ast).toHaveProperty('sequence.0.expression', 1);
+
expect(ast).toHaveProperty('alternation.type', 'sequence');
+
expect(ast).toHaveProperty('alternation.sequence.0.expression', 2);
+
+
ast = parseTag`${1}? | ${2}?`;
+
expect(ast).toHaveProperty('sequence.0.quantifier.type', 'quantifier');
+
expect(ast).toHaveProperty(
+
'alternation.sequence.0.quantifier.type',
+
'quantifier'
+
);
+
});
+
+
it('supports groups with quantifiers', () => {
+
let ast;
+
+
ast = parseTag`(${1} ${2})`;
+
expect(ast).toHaveProperty('sequence.length', 1);
+
expect(ast).toHaveProperty('sequence.0.type', 'group');
+
expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 2);
+
expect(ast).toHaveProperty('sequence.0.sequence.sequence.0.expression', 1);
+
expect(ast).toHaveProperty('sequence.0.sequence.sequence.1.expression', 2);
+
+
ast = parseTag`(${1} ${2}?)?`;
+
expect(ast).toHaveProperty('sequence.length', 1);
+
expect(ast).toHaveProperty('sequence.0.type', 'group');
+
expect(ast).toHaveProperty('sequence.0.quantifier.type', 'quantifier');
+
expect(ast).toHaveProperty('sequence.0.sequence.sequence.0.quantifier', null);
+
expect(ast).toHaveProperty(
+
'sequence.0.sequence.sequence.1.quantifier.type',
+
'quantifier'
+
);
+
});
+
+
it('supports non-capturing groups', () => {
+
const ast = parseTag`(?: ${1})`;
+
expect(ast).toHaveProperty('sequence.length', 1);
+
expect(ast).toHaveProperty('sequence.0.type', 'group');
+
expect(ast).toHaveProperty('sequence.0.capturing', false);
+
expect(ast).toHaveProperty('sequence.0.lookahead', null);
+
expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1);
+
});
+
+
it('supports positive lookahead groups', () => {
+
const ast = parseTag`(?= ${1})`;
+
expect(ast).toHaveProperty('sequence.length', 1);
+
expect(ast).toHaveProperty('sequence.0.type', 'group');
+
expect(ast).toHaveProperty('sequence.0.capturing', false);
+
expect(ast).toHaveProperty('sequence.0.lookahead', 'positive');
+
expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1);
+
});
+
+
it('supports negative lookahead groups', () => {
+
const ast = parseTag`(?! ${1})`;
+
expect(ast).toHaveProperty('sequence.length', 1);
+
expect(ast).toHaveProperty('sequence.0.type', 'group');
+
expect(ast).toHaveProperty('sequence.0.capturing', false);
+
expect(ast).toHaveProperty('sequence.0.lookahead', 'negative');
+
expect(ast).toHaveProperty('sequence.0.sequence.sequence.length', 1);
+
});
+
+
it('throws when a quantifier is combined with a lookahead', () => {
+
expect(() => parseTag`(?! ${1})+`).toThrow();
+
expect(() => parseTag`(?! ${1})?`).toThrow();
+
expect(() => parseTag`(?! ${1})*`).toThrow();
+
});
+
+
it('supports groups with alternates', () => {
+
expect(parseTag`(${1} | ${2}) ${3}`).toMatchInlineSnapshot(`
+
Object {
+
"alternation": null,
+
"sequence": Array [
+
Object {
+
"capturing": true,
+
"lookahead": null,
+
"quantifier": null,
+
"sequence": Object {
+
"alternation": Object {
+
"alternation": null,
+
"sequence": Array [
+
Object {
+
"expression": 2,
+
"quantifier": null,
+
"type": "expression",
+
},
+
],
+
"type": "sequence",
+
},
+
"sequence": Array [
+
Object {
+
"expression": 1,
+
"quantifier": null,
+
"type": "expression",
+
},
+
],
+
"type": "sequence",
+
},
+
"type": "group",
+
},
+
Object {
+
"expression": 3,
+
"quantifier": null,
+
"type": "expression",
+
},
+
],
+
"type": "sequence",
+
}
+
`);
+
});
+4325
yarn.lock
···
+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+
# yarn lockfile v1
+
+
+
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e"
+
integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==
+
dependencies:
+
"@babel/highlight" "^7.8.3"
+
+
"@babel/core@7.9.6", "@babel/core@^7.1.0", "@babel/core@^7.7.5":
+
version "7.9.6"
+
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376"
+
integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==
+
dependencies:
+
"@babel/code-frame" "^7.8.3"
+
"@babel/generator" "^7.9.6"
+
"@babel/helper-module-transforms" "^7.9.0"
+
"@babel/helpers" "^7.9.6"
+
"@babel/parser" "^7.9.6"
+
"@babel/template" "^7.8.6"
+
"@babel/traverse" "^7.9.6"
+
"@babel/types" "^7.9.6"
+
convert-source-map "^1.7.0"
+
debug "^4.1.0"
+
gensync "^1.0.0-beta.1"
+
json5 "^2.1.2"
+
lodash "^4.17.13"
+
resolve "^1.3.2"
+
semver "^5.4.1"
+
source-map "^0.5.0"
+
+
"@babel/generator@^7.9.6":
+
version "7.9.6"
+
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43"
+
integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==
+
dependencies:
+
"@babel/types" "^7.9.6"
+
jsesc "^2.5.1"
+
lodash "^4.17.13"
+
source-map "^0.5.0"
+
+
"@babel/helper-function-name@^7.9.5":
+
version "7.9.5"
+
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c"
+
integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==
+
dependencies:
+
"@babel/helper-get-function-arity" "^7.8.3"
+
"@babel/template" "^7.8.3"
+
"@babel/types" "^7.9.5"
+
+
"@babel/helper-get-function-arity@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5"
+
integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==
+
dependencies:
+
"@babel/types" "^7.8.3"
+
+
"@babel/helper-member-expression-to-functions@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c"
+
integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==
+
dependencies:
+
"@babel/types" "^7.8.3"
+
+
"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498"
+
integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==
+
dependencies:
+
"@babel/types" "^7.8.3"
+
+
"@babel/helper-module-transforms@^7.9.0":
+
version "7.9.0"
+
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5"
+
integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==
+
dependencies:
+
"@babel/helper-module-imports" "^7.8.3"
+
"@babel/helper-replace-supers" "^7.8.6"
+
"@babel/helper-simple-access" "^7.8.3"
+
"@babel/helper-split-export-declaration" "^7.8.3"
+
"@babel/template" "^7.8.6"
+
"@babel/types" "^7.9.0"
+
lodash "^4.17.13"
+
+
"@babel/helper-optimise-call-expression@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9"
+
integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==
+
dependencies:
+
"@babel/types" "^7.8.3"
+
+
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670"
+
integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==
+
+
"@babel/helper-replace-supers@^7.8.6":
+
version "7.9.6"
+
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444"
+
integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==
+
dependencies:
+
"@babel/helper-member-expression-to-functions" "^7.8.3"
+
"@babel/helper-optimise-call-expression" "^7.8.3"
+
"@babel/traverse" "^7.9.6"
+
"@babel/types" "^7.9.6"
+
+
"@babel/helper-simple-access@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae"
+
integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==
+
dependencies:
+
"@babel/template" "^7.8.3"
+
"@babel/types" "^7.8.3"
+
+
"@babel/helper-split-export-declaration@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9"
+
integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==
+
dependencies:
+
"@babel/types" "^7.8.3"
+
+
"@babel/helper-validator-identifier@^7.9.5":
+
version "7.9.5"
+
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80"
+
integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==
+
+
"@babel/helpers@^7.9.6":
+
version "7.9.6"
+
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580"
+
integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==
+
dependencies:
+
"@babel/template" "^7.8.3"
+
"@babel/traverse" "^7.9.6"
+
"@babel/types" "^7.9.6"
+
+
"@babel/highlight@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797"
+
integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==
+
dependencies:
+
chalk "^2.0.0"
+
esutils "^2.0.2"
+
js-tokens "^4.0.0"
+
+
"@babel/parser@^7.1.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6":
+
version "7.9.6"
+
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7"
+
integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==
+
+
"@babel/plugin-syntax-async-generators@^7.8.4":
+
version "7.8.4"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+
integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.0"
+
+
"@babel/plugin-syntax-bigint@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
+
integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.0"
+
+
"@babel/plugin-syntax-class-properties@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7"
+
integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.3"
+
+
"@babel/plugin-syntax-json-strings@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+
integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.0"
+
+
"@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897"
+
integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.3"
+
+
"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+
integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.0"
+
+
"@babel/plugin-syntax-numeric-separator@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f"
+
integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.3"
+
+
"@babel/plugin-syntax-object-rest-spread@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+
integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.0"
+
+
"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+
integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.0"
+
+
"@babel/plugin-syntax-optional-chaining@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+
integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.0"
+
+
"@babel/plugin-transform-modules-commonjs@^7.9.6":
+
version "7.9.6"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277"
+
integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==
+
dependencies:
+
"@babel/helper-module-transforms" "^7.9.0"
+
"@babel/helper-plugin-utils" "^7.8.3"
+
"@babel/helper-simple-access" "^7.8.3"
+
babel-plugin-dynamic-import-node "^2.3.3"
+
+
"@babel/plugin-transform-object-assign@^7.8.3":
+
version "7.8.3"
+
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz#dc3b8dd50ef03837868a37b7df791f64f288538e"
+
integrity sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.8.3"
+
+
"@babel/template@^7.3.3", "@babel/template@^7.8.3", "@babel/template@^7.8.6":
+
version "7.8.6"
+
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b"
+
integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==
+
dependencies:
+
"@babel/code-frame" "^7.8.3"
+
"@babel/parser" "^7.8.6"
+
"@babel/types" "^7.8.6"
+
+
"@babel/traverse@^7.1.0", "@babel/traverse@^7.9.6":
+
version "7.9.6"
+
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442"
+
integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==
+
dependencies:
+
"@babel/code-frame" "^7.8.3"
+
"@babel/generator" "^7.9.6"
+
"@babel/helper-function-name" "^7.9.5"
+
"@babel/helper-split-export-declaration" "^7.8.3"
+
"@babel/parser" "^7.9.6"
+
"@babel/types" "^7.9.6"
+
debug "^4.1.0"
+
globals "^11.1.0"
+
lodash "^4.17.13"
+
+
"@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":
+
version "7.9.6"
+
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7"
+
integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==
+
dependencies:
+
"@babel/helper-validator-identifier" "^7.9.5"
+
lodash "^4.17.13"
+
to-fast-properties "^2.0.0"
+
+
"@bcoe/v8-coverage@^0.2.3":
+
version "0.2.3"
+
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
+
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
+
+
"@cnakazawa/watch@^1.0.3":
+
version "1.0.4"
+
resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
+
integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==
+
dependencies:
+
exec-sh "^0.3.2"
+
minimist "^1.2.0"
+
+
"@istanbuljs/load-nyc-config@^1.0.0":
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b"
+
integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==
+
dependencies:
+
camelcase "^5.3.1"
+
find-up "^4.1.0"
+
js-yaml "^3.13.1"
+
resolve-from "^5.0.0"
+
+
"@istanbuljs/schema@^0.1.2":
+
version "0.1.2"
+
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
+
integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==
+
+
"@jest/console@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.0.1.tgz#62b3b2fa8990f3cbffbef695c42ae9ddbc8f4b39"
+
integrity sha512-9t1KUe/93coV1rBSxMmBAOIK3/HVpwxArCA1CxskKyRiv6o8J70V8C/V3OJminVCTa2M0hQI9AWRd5wxu2dAHw==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
chalk "^4.0.0"
+
jest-message-util "^26.0.1"
+
jest-util "^26.0.1"
+
slash "^3.0.0"
+
+
"@jest/core@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.0.1.tgz#aa538d52497dfab56735efb00e506be83d841fae"
+
integrity sha512-Xq3eqYnxsG9SjDC+WLeIgf7/8KU6rddBxH+SCt18gEpOhAGYC/Mq+YbtlNcIdwjnnT+wDseXSbU0e5X84Y4jTQ==
+
dependencies:
+
"@jest/console" "^26.0.1"
+
"@jest/reporters" "^26.0.1"
+
"@jest/test-result" "^26.0.1"
+
"@jest/transform" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
ansi-escapes "^4.2.1"
+
chalk "^4.0.0"
+
exit "^0.1.2"
+
graceful-fs "^4.2.4"
+
jest-changed-files "^26.0.1"
+
jest-config "^26.0.1"
+
jest-haste-map "^26.0.1"
+
jest-message-util "^26.0.1"
+
jest-regex-util "^26.0.0"
+
jest-resolve "^26.0.1"
+
jest-resolve-dependencies "^26.0.1"
+
jest-runner "^26.0.1"
+
jest-runtime "^26.0.1"
+
jest-snapshot "^26.0.1"
+
jest-util "^26.0.1"
+
jest-validate "^26.0.1"
+
jest-watcher "^26.0.1"
+
micromatch "^4.0.2"
+
p-each-series "^2.1.0"
+
rimraf "^3.0.0"
+
slash "^3.0.0"
+
strip-ansi "^6.0.0"
+
+
"@jest/environment@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.0.1.tgz#82f519bba71959be9b483675ee89de8c8f72a5c8"
+
integrity sha512-xBDxPe8/nx251u0VJ2dFAFz2H23Y98qdIaNwnMK6dFQr05jc+Ne/2np73lOAx+5mSBO/yuQldRrQOf6hP1h92g==
+
dependencies:
+
"@jest/fake-timers" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
jest-mock "^26.0.1"
+
+
"@jest/fake-timers@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.0.1.tgz#f7aeff13b9f387e9d0cac9a8de3bba538d19d796"
+
integrity sha512-Oj/kCBnTKhm7CR+OJSjZty6N1bRDr9pgiYQr4wY221azLz5PHi08x/U+9+QpceAYOWheauLP8MhtSVFrqXQfhg==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
"@sinonjs/fake-timers" "^6.0.1"
+
jest-message-util "^26.0.1"
+
jest-mock "^26.0.1"
+
jest-util "^26.0.1"
+
+
"@jest/globals@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.0.1.tgz#3f67b508a7ce62b6e6efc536f3d18ec9deb19a9c"
+
integrity sha512-iuucxOYB7BRCvT+TYBzUqUNuxFX1hqaR6G6IcGgEqkJ5x4htNKo1r7jk1ji9Zj8ZMiMw0oB5NaA7k5Tx6MVssA==
+
dependencies:
+
"@jest/environment" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
expect "^26.0.1"
+
+
"@jest/reporters@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.0.1.tgz#14ae00e7a93e498cec35b0c00ab21c375d9b078f"
+
integrity sha512-NWWy9KwRtE1iyG/m7huiFVF9YsYv/e+mbflKRV84WDoJfBqUrNRyDbL/vFxQcYLl8IRqI4P3MgPn386x76Gf2g==
+
dependencies:
+
"@bcoe/v8-coverage" "^0.2.3"
+
"@jest/console" "^26.0.1"
+
"@jest/test-result" "^26.0.1"
+
"@jest/transform" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
chalk "^4.0.0"
+
collect-v8-coverage "^1.0.0"
+
exit "^0.1.2"
+
glob "^7.1.2"
+
graceful-fs "^4.2.4"
+
istanbul-lib-coverage "^3.0.0"
+
istanbul-lib-instrument "^4.0.0"
+
istanbul-lib-report "^3.0.0"
+
istanbul-lib-source-maps "^4.0.0"
+
istanbul-reports "^3.0.2"
+
jest-haste-map "^26.0.1"
+
jest-resolve "^26.0.1"
+
jest-util "^26.0.1"
+
jest-worker "^26.0.0"
+
slash "^3.0.0"
+
source-map "^0.6.0"
+
string-length "^4.0.1"
+
terminal-link "^2.0.0"
+
v8-to-istanbul "^4.1.3"
+
optionalDependencies:
+
node-notifier "^7.0.0"
+
+
"@jest/source-map@^26.0.0":
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.0.0.tgz#fd7706484a7d3faf7792ae29783933bbf48a4749"
+
integrity sha512-S2Z+Aj/7KOSU2TfW0dyzBze7xr95bkm5YXNUqqCek+HE0VbNNSNzrRwfIi5lf7wvzDTSS0/ib8XQ1krFNyYgbQ==
+
dependencies:
+
callsites "^3.0.0"
+
graceful-fs "^4.2.4"
+
source-map "^0.6.0"
+
+
"@jest/test-result@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.0.1.tgz#1ffdc1ba4bc289919e54b9414b74c9c2f7b2b718"
+
integrity sha512-oKwHvOI73ICSYRPe8WwyYPTtiuOAkLSbY8/MfWF3qDEd/sa8EDyZzin3BaXTqufir/O/Gzea4E8Zl14XU4Mlyg==
+
dependencies:
+
"@jest/console" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
"@types/istanbul-lib-coverage" "^2.0.0"
+
collect-v8-coverage "^1.0.0"
+
+
"@jest/test-sequencer@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.0.1.tgz#b0563424728f3fe9e75d1442b9ae4c11da73f090"
+
integrity sha512-ssga8XlwfP8YjbDcmVhwNlrmblddMfgUeAkWIXts1V22equp2GMIHxm7cyeD5Q/B0ZgKPK/tngt45sH99yLLGg==
+
dependencies:
+
"@jest/test-result" "^26.0.1"
+
graceful-fs "^4.2.4"
+
jest-haste-map "^26.0.1"
+
jest-runner "^26.0.1"
+
jest-runtime "^26.0.1"
+
+
"@jest/transform@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.0.1.tgz#0e3ecbb34a11cd4b2080ed0a9c4856cf0ceb0639"
+
integrity sha512-pPRkVkAQ91drKGbzCfDOoHN838+FSbYaEAvBXvKuWeeRRUD8FjwXkqfUNUZL6Ke48aA/1cqq/Ni7kVMCoqagWA==
+
dependencies:
+
"@babel/core" "^7.1.0"
+
"@jest/types" "^26.0.1"
+
babel-plugin-istanbul "^6.0.0"
+
chalk "^4.0.0"
+
convert-source-map "^1.4.0"
+
fast-json-stable-stringify "^2.0.0"
+
graceful-fs "^4.2.4"
+
jest-haste-map "^26.0.1"
+
jest-regex-util "^26.0.0"
+
jest-util "^26.0.1"
+
micromatch "^4.0.2"
+
pirates "^4.0.1"
+
slash "^3.0.0"
+
source-map "^0.6.1"
+
write-file-atomic "^3.0.0"
+
+
"@jest/types@^26.0.1":
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.0.1.tgz#b78333fbd113fa7aec8d39de24f88de8686dac67"
+
integrity sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA==
+
dependencies:
+
"@types/istanbul-lib-coverage" "^2.0.0"
+
"@types/istanbul-reports" "^1.1.1"
+
"@types/yargs" "^15.0.0"
+
chalk "^4.0.0"
+
+
"@rollup/plugin-buble@^0.21.3":
+
version "0.21.3"
+
resolved "https://registry.yarnpkg.com/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz#1649a915b1d051a4f430d40e7734a7f67a69b33e"
+
integrity sha512-Iv8cCuFPnMdqV4pcyU+OrfjOfagPArRQ1PyQjx5KgHk3dARedI+8PNTLSMpJts0lQJr8yF2pAU4GxpxCBJ9HYw==
+
dependencies:
+
"@rollup/pluginutils" "^3.0.8"
+
"@types/buble" "^0.19.2"
+
buble "^0.20.0"
+
+
"@rollup/plugin-commonjs@^11.1.0":
+
version "11.1.0"
+
resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef"
+
integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==
+
dependencies:
+
"@rollup/pluginutils" "^3.0.8"
+
commondir "^1.0.1"
+
estree-walker "^1.0.1"
+
glob "^7.1.2"
+
is-reference "^1.1.2"
+
magic-string "^0.25.2"
+
resolve "^1.11.0"
+
+
"@rollup/plugin-node-resolve@^7.1.3":
+
version "7.1.3"
+
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca"
+
integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==
+
dependencies:
+
"@rollup/pluginutils" "^3.0.8"
+
"@types/resolve" "0.0.8"
+
builtin-modules "^3.1.0"
+
is-module "^1.0.0"
+
resolve "^1.14.2"
+
+
"@rollup/pluginutils@^3.0.8":
+
version "3.0.10"
+
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.10.tgz#a659b9025920378494cd8f8c59fbf9b3a50d5f12"
+
integrity sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw==
+
dependencies:
+
"@types/estree" "0.0.39"
+
estree-walker "^1.0.1"
+
picomatch "^2.2.2"
+
+
"@samverschueren/stream-to-observable@^0.3.0":
+
version "0.3.0"
+
resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
+
integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==
+
dependencies:
+
any-observable "^0.3.0"
+
+
"@sinonjs/commons@^1.7.0":
+
version "1.7.2"
+
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2"
+
integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==
+
dependencies:
+
type-detect "4.0.8"
+
+
"@sinonjs/fake-timers@^6.0.1":
+
version "6.0.1"
+
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40"
+
integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==
+
dependencies:
+
"@sinonjs/commons" "^1.7.0"
+
+
"@types/babel__core@^7.1.7":
+
version "7.1.7"
+
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89"
+
integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw==
+
dependencies:
+
"@babel/parser" "^7.1.0"
+
"@babel/types" "^7.0.0"
+
"@types/babel__generator" "*"
+
"@types/babel__template" "*"
+
"@types/babel__traverse" "*"
+
+
"@types/babel__generator@*":
+
version "7.6.1"
+
resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04"
+
integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==
+
dependencies:
+
"@babel/types" "^7.0.0"
+
+
"@types/babel__template@*":
+
version "7.0.2"
+
resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307"
+
integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==
+
dependencies:
+
"@babel/parser" "^7.1.0"
+
"@babel/types" "^7.0.0"
+
+
"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
+
version "7.0.11"
+
resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18"
+
integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q==
+
dependencies:
+
"@babel/types" "^7.3.0"
+
+
"@types/buble@^0.19.2":
+
version "0.19.2"
+
resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.19.2.tgz#a4289d20b175b3c206aaad80caabdabe3ecdfdd1"
+
integrity sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q==
+
dependencies:
+
magic-string "^0.25.0"
+
+
"@types/color-name@^1.1.1":
+
version "1.1.1"
+
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
+
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
+
+
"@types/estree@0.0.39":
+
version "0.0.39"
+
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
+
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
+
+
"@types/graceful-fs@^4.1.2":
+
version "4.1.3"
+
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f"
+
integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ==
+
dependencies:
+
"@types/node" "*"
+
+
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
+
version "2.0.2"
+
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5"
+
integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w==
+
+
"@types/istanbul-lib-report@*":
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
+
integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
+
dependencies:
+
"@types/istanbul-lib-coverage" "*"
+
+
"@types/istanbul-reports@^1.1.1":
+
version "1.1.2"
+
resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2"
+
integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==
+
dependencies:
+
"@types/istanbul-lib-coverage" "*"
+
"@types/istanbul-lib-report" "*"
+
+
"@types/node@*":
+
version "14.0.1"
+
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c"
+
integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA==
+
+
"@types/normalize-package-data@^2.4.0":
+
version "2.4.0"
+
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
+
integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
+
+
"@types/parse-json@^4.0.0":
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+
"@types/prettier@^2.0.0":
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4"
+
integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q==
+
+
"@types/resolve@0.0.8":
+
version "0.0.8"
+
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
+
integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==
+
dependencies:
+
"@types/node" "*"
+
+
"@types/stack-utils@^1.0.1":
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
+
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
+
+
"@types/yargs-parser@*":
+
version "15.0.0"
+
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
+
integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==
+
+
"@types/yargs@^15.0.0":
+
version "15.0.5"
+
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79"
+
integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==
+
dependencies:
+
"@types/yargs-parser" "*"
+
+
abab@^2.0.3:
+
version "2.0.3"
+
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a"
+
integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==
+
+
acorn-dynamic-import@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
+
integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
+
+
acorn-globals@^6.0.0:
+
version "6.0.0"
+
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
+
integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
+
dependencies:
+
acorn "^7.1.1"
+
acorn-walk "^7.1.1"
+
+
acorn-jsx@^5.2.0:
+
version "5.2.0"
+
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
+
integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
+
+
acorn-walk@^7.1.1:
+
version "7.1.1"
+
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e"
+
integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==
+
+
acorn@^6.4.1:
+
version "6.4.1"
+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
+
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
+
+
acorn@^7.1.1:
+
version "7.2.0"
+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe"
+
integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==
+
+
aggregate-error@^3.0.0:
+
version "3.0.1"
+
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0"
+
integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==
+
dependencies:
+
clean-stack "^2.0.0"
+
indent-string "^4.0.0"
+
+
ajv@^6.5.5:
+
version "6.12.2"
+
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
+
integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
+
dependencies:
+
fast-deep-equal "^3.1.1"
+
fast-json-stable-stringify "^2.0.0"
+
json-schema-traverse "^0.4.1"
+
uri-js "^4.2.2"
+
+
ansi-colors@^3.2.1:
+
version "3.2.4"
+
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
+
integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
+
+
ansi-escapes@^4.2.1, ansi-escapes@^4.3.0:
+
version "4.3.1"
+
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
+
integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
+
dependencies:
+
type-fest "^0.11.0"
+
+
ansi-regex@^5.0.0:
+
version "5.0.0"
+
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+
integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
+
ansi-styles@^3.2.1:
+
version "3.2.1"
+
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+
dependencies:
+
color-convert "^1.9.0"
+
+
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+
version "4.2.1"
+
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
+
integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
+
dependencies:
+
"@types/color-name" "^1.1.1"
+
color-convert "^2.0.1"
+
+
any-observable@^0.3.0:
+
version "0.3.0"
+
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
+
integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
+
+
anymatch@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+
integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+
dependencies:
+
micromatch "^3.1.4"
+
normalize-path "^2.1.1"
+
+
anymatch@^3.0.3:
+
version "3.1.1"
+
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+
integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+
dependencies:
+
normalize-path "^3.0.0"
+
picomatch "^2.0.4"
+
+
argparse@^1.0.7:
+
version "1.0.10"
+
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+
dependencies:
+
sprintf-js "~1.0.2"
+
+
arr-diff@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+
integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+
arr-flatten@^1.1.0:
+
version "1.1.0"
+
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+
integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+
arr-union@^3.1.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+
array-unique@^0.3.2:
+
version "0.3.2"
+
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+
asn1@~0.2.3:
+
version "0.2.4"
+
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
+
dependencies:
+
safer-buffer "~2.1.0"
+
+
assert-plus@1.0.0, assert-plus@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+
assign-symbols@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+
astral-regex@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
+
asynckit@^0.4.0:
+
version "0.4.0"
+
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+
atob@^2.1.2:
+
version "2.1.2"
+
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+
aws-sign2@~0.7.0:
+
version "0.7.0"
+
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
+
+
aws4@^1.8.0:
+
version "1.9.1"
+
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
+
integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==
+
+
babel-jest@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.0.1.tgz#450139ce4b6c17174b136425bda91885c397bc46"
+
integrity sha512-Z4GGmSNQ8pX3WS1O+6v3fo41YItJJZsVxG5gIQ+HuB/iuAQBJxMTHTwz292vuYws1LnHfwSRgoqI+nxdy/pcvw==
+
dependencies:
+
"@jest/transform" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
"@types/babel__core" "^7.1.7"
+
babel-plugin-istanbul "^6.0.0"
+
babel-preset-jest "^26.0.0"
+
chalk "^4.0.0"
+
graceful-fs "^4.2.4"
+
slash "^3.0.0"
+
+
babel-plugin-closure-elimination@^1.3.1:
+
version "1.3.1"
+
resolved "https://registry.yarnpkg.com/babel-plugin-closure-elimination/-/babel-plugin-closure-elimination-1.3.1.tgz#c5143ae2cceed6e8451c71ca164bbe1f84852087"
+
integrity sha512-9B85Xh/S32Crdq8K398NZdh2Sl3crBMTpsy8k7OEij41ZztPYc1CACIZ8D1ZNTHuj62HWaStXkevIOF+DjfuWg==
+
+
babel-plugin-dynamic-import-node@^2.3.3:
+
version "2.3.3"
+
resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+
integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+
dependencies:
+
object.assign "^4.1.0"
+
+
babel-plugin-istanbul@^6.0.0:
+
version "6.0.0"
+
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765"
+
integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==
+
dependencies:
+
"@babel/helper-plugin-utils" "^7.0.0"
+
"@istanbuljs/load-nyc-config" "^1.0.0"
+
"@istanbuljs/schema" "^0.1.2"
+
istanbul-lib-instrument "^4.0.0"
+
test-exclude "^6.0.0"
+
+
babel-plugin-jest-hoist@^26.0.0:
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.0.0.tgz#fd1d35f95cf8849fc65cb01b5e58aedd710b34a8"
+
integrity sha512-+AuoehOrjt9irZL7DOt2+4ZaTM6dlu1s5TTS46JBa0/qem4dy7VNW3tMb96qeEqcIh20LD73TVNtmVEeymTG7w==
+
dependencies:
+
"@babel/template" "^7.3.3"
+
"@babel/types" "^7.3.3"
+
"@types/babel__traverse" "^7.0.6"
+
+
babel-preset-current-node-syntax@^0.1.2:
+
version "0.1.2"
+
resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6"
+
integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw==
+
dependencies:
+
"@babel/plugin-syntax-async-generators" "^7.8.4"
+
"@babel/plugin-syntax-bigint" "^7.8.3"
+
"@babel/plugin-syntax-class-properties" "^7.8.3"
+
"@babel/plugin-syntax-json-strings" "^7.8.3"
+
"@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
+
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
"@babel/plugin-syntax-numeric-separator" "^7.8.3"
+
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+
babel-preset-jest@^26.0.0:
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.0.0.tgz#1eac82f513ad36c4db2e9263d7c485c825b1faa6"
+
integrity sha512-9ce+DatAa31DpR4Uir8g4Ahxs5K4W4L8refzt+qHWQANb6LhGcAEfIFgLUwk67oya2cCUd6t4eUMtO/z64ocNw==
+
dependencies:
+
babel-plugin-jest-hoist "^26.0.0"
+
babel-preset-current-node-syntax "^0.1.2"
+
+
balanced-match@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+
base@^0.11.1:
+
version "0.11.2"
+
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+
integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+
dependencies:
+
cache-base "^1.0.1"
+
class-utils "^0.3.5"
+
component-emitter "^1.2.1"
+
define-property "^1.0.0"
+
isobject "^3.0.1"
+
mixin-deep "^1.2.0"
+
pascalcase "^0.1.1"
+
+
bcrypt-pbkdf@^1.0.0:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
+
dependencies:
+
tweetnacl "^0.14.3"
+
+
brace-expansion@^1.1.7:
+
version "1.1.11"
+
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+
dependencies:
+
balanced-match "^1.0.0"
+
concat-map "0.0.1"
+
+
braces@^2.3.1:
+
version "2.3.2"
+
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+
integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+
dependencies:
+
arr-flatten "^1.1.0"
+
array-unique "^0.3.2"
+
extend-shallow "^2.0.1"
+
fill-range "^4.0.0"
+
isobject "^3.0.1"
+
repeat-element "^1.1.2"
+
snapdragon "^0.8.1"
+
snapdragon-node "^2.0.1"
+
split-string "^3.0.2"
+
to-regex "^3.0.1"
+
+
braces@^3.0.1:
+
version "3.0.2"
+
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+
dependencies:
+
fill-range "^7.0.1"
+
+
browser-process-hrtime@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
+
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+
+
bser@2.1.1:
+
version "2.1.1"
+
resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
+
integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
+
dependencies:
+
node-int64 "^0.4.0"
+
+
buble@^0.20.0:
+
version "0.20.0"
+
resolved "https://registry.yarnpkg.com/buble/-/buble-0.20.0.tgz#a143979a8d968b7f76b57f38f2e7ce7cfe938d1f"
+
integrity sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw==
+
dependencies:
+
acorn "^6.4.1"
+
acorn-dynamic-import "^4.0.0"
+
acorn-jsx "^5.2.0"
+
chalk "^2.4.2"
+
magic-string "^0.25.7"
+
minimist "^1.2.5"
+
regexpu-core "4.5.4"
+
+
buffer-from@^1.0.0:
+
version "1.1.1"
+
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+
builtin-modules@^3.1.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
+
integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==
+
+
cache-base@^1.0.1:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+
integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+
dependencies:
+
collection-visit "^1.0.0"
+
component-emitter "^1.2.1"
+
get-value "^2.0.6"
+
has-value "^1.0.0"
+
isobject "^3.0.1"
+
set-value "^2.0.0"
+
to-object-path "^0.3.0"
+
union-value "^1.0.0"
+
unset-value "^1.0.0"
+
+
callsites@^3.0.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+
camelcase@^5.0.0, camelcase@^5.3.1:
+
version "5.3.1"
+
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+
camelcase@^6.0.0:
+
version "6.0.0"
+
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e"
+
integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==
+
+
capture-exit@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
+
integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==
+
dependencies:
+
rsvp "^4.8.4"
+
+
caseless@~0.12.0:
+
version "0.12.0"
+
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+
+
chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
+
version "2.4.2"
+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+
dependencies:
+
ansi-styles "^3.2.1"
+
escape-string-regexp "^1.0.5"
+
supports-color "^5.3.0"
+
+
chalk@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
+
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+
dependencies:
+
ansi-styles "^4.1.0"
+
supports-color "^7.1.0"
+
+
chalk@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72"
+
integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==
+
dependencies:
+
ansi-styles "^4.1.0"
+
supports-color "^7.1.0"
+
+
char-regex@^1.0.2:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
+
integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
+
+
ci-info@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+
class-utils@^0.3.5:
+
version "0.3.6"
+
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+
integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+
dependencies:
+
arr-union "^3.1.0"
+
define-property "^0.2.5"
+
isobject "^3.0.0"
+
static-extend "^0.1.1"
+
+
clean-stack@^2.0.0:
+
version "2.2.0"
+
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+
cli-cursor@^3.1.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+
integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+
dependencies:
+
restore-cursor "^3.1.0"
+
+
cli-truncate@^2.1.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
+
integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
+
dependencies:
+
slice-ansi "^3.0.0"
+
string-width "^4.2.0"
+
+
cliui@^6.0.0:
+
version "6.0.0"
+
resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+
integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+
dependencies:
+
string-width "^4.2.0"
+
strip-ansi "^6.0.0"
+
wrap-ansi "^6.2.0"
+
+
clone@^1.0.2:
+
version "1.0.4"
+
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+
co@^4.6.0:
+
version "4.6.0"
+
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+
+
collect-v8-coverage@^1.0.0:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
+
integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
+
+
collection-visit@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+
integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+
dependencies:
+
map-visit "^1.0.0"
+
object-visit "^1.0.0"
+
+
color-convert@^1.9.0:
+
version "1.9.3"
+
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+
dependencies:
+
color-name "1.1.3"
+
+
color-convert@^2.0.1:
+
version "2.0.1"
+
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+
dependencies:
+
color-name "~1.1.4"
+
+
color-name@1.1.3:
+
version "1.1.3"
+
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+
color-name@~1.1.4:
+
version "1.1.4"
+
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+
combined-stream@^1.0.6, combined-stream@~1.0.6:
+
version "1.0.8"
+
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+
dependencies:
+
delayed-stream "~1.0.0"
+
+
commander@^5.0.0:
+
version "5.1.0"
+
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
+
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
+
+
commondir@^1.0.1:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+
compare-versions@^3.6.0:
+
version "3.6.0"
+
resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
+
integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==
+
+
component-emitter@^1.2.1:
+
version "1.3.0"
+
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+
concat-map@0.0.1:
+
version "0.0.1"
+
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+
convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+
version "1.7.0"
+
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+
integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
+
dependencies:
+
safe-buffer "~5.1.1"
+
+
copy-descriptor@^0.1.0:
+
version "0.1.1"
+
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+
core-util-is@1.0.2:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+
cosmiconfig@^6.0.0:
+
version "6.0.0"
+
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
+
integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
+
dependencies:
+
"@types/parse-json" "^4.0.0"
+
import-fresh "^3.1.0"
+
parse-json "^5.0.0"
+
path-type "^4.0.0"
+
yaml "^1.7.2"
+
+
cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+
version "6.0.5"
+
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+
dependencies:
+
nice-try "^1.0.4"
+
path-key "^2.0.1"
+
semver "^5.5.0"
+
shebang-command "^1.2.0"
+
which "^1.2.9"
+
+
cross-spawn@^7.0.0:
+
version "7.0.2"
+
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6"
+
integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==
+
dependencies:
+
path-key "^3.1.0"
+
shebang-command "^2.0.0"
+
which "^2.0.1"
+
+
cssom@^0.4.4:
+
version "0.4.4"
+
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
+
integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
+
cssom@~0.3.6:
+
version "0.3.8"
+
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+
cssstyle@^2.2.0:
+
version "2.3.0"
+
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
+
integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+
dependencies:
+
cssom "~0.3.6"
+
+
dashdash@^1.12.0:
+
version "1.14.1"
+
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+
integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+
dependencies:
+
assert-plus "^1.0.0"
+
+
data-urls@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
+
integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
+
dependencies:
+
abab "^2.0.3"
+
whatwg-mimetype "^2.3.0"
+
whatwg-url "^8.0.0"
+
+
debug@^2.2.0, debug@^2.3.3:
+
version "2.6.9"
+
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+
dependencies:
+
ms "2.0.0"
+
+
debug@^4.1.0, debug@^4.1.1:
+
version "4.1.1"
+
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+
dependencies:
+
ms "^2.1.1"
+
+
decamelize@^1.2.0:
+
version "1.2.0"
+
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+
decimal.js@^10.2.0:
+
version "10.2.0"
+
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231"
+
integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==
+
+
decode-uri-component@^0.2.0:
+
version "0.2.0"
+
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+
dedent@^0.7.0:
+
version "0.7.0"
+
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
+
deep-is@~0.1.3:
+
version "0.1.3"
+
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+
deepmerge@^4.2.2:
+
version "4.2.2"
+
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
+
defaults@^1.0.3:
+
version "1.0.3"
+
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+
integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+
dependencies:
+
clone "^1.0.2"
+
+
define-properties@^1.1.2, define-properties@^1.1.3:
+
version "1.1.3"
+
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+
dependencies:
+
object-keys "^1.0.12"
+
+
define-property@^0.2.5:
+
version "0.2.5"
+
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+
integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+
dependencies:
+
is-descriptor "^0.1.0"
+
+
define-property@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+
integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+
dependencies:
+
is-descriptor "^1.0.0"
+
+
define-property@^2.0.2:
+
version "2.0.2"
+
resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+
integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+
dependencies:
+
is-descriptor "^1.0.2"
+
isobject "^3.0.1"
+
+
delayed-stream@~1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+
detect-newline@^3.0.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
+
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
+
+
diff-sequences@^26.0.0:
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6"
+
integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg==
+
+
domexception@^2.0.1:
+
version "2.0.1"
+
resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
+
integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
+
dependencies:
+
webidl-conversions "^5.0.0"
+
+
ecc-jsbn@~0.1.1:
+
version "0.1.2"
+
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+
integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
+
dependencies:
+
jsbn "~0.1.0"
+
safer-buffer "^2.1.0"
+
+
elegant-spinner@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94"
+
integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA==
+
+
emoji-regex@^8.0.0:
+
version "8.0.0"
+
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+
end-of-stream@^1.1.0:
+
version "1.4.4"
+
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+
dependencies:
+
once "^1.4.0"
+
+
enquirer@^2.3.4:
+
version "2.3.5"
+
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381"
+
integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==
+
dependencies:
+
ansi-colors "^3.2.1"
+
+
error-ex@^1.3.1:
+
version "1.3.2"
+
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+
dependencies:
+
is-arrayish "^0.2.1"
+
+
es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
+
version "1.17.5"
+
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
+
integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==
+
dependencies:
+
es-to-primitive "^1.2.1"
+
function-bind "^1.1.1"
+
has "^1.0.3"
+
has-symbols "^1.0.1"
+
is-callable "^1.1.5"
+
is-regex "^1.0.5"
+
object-inspect "^1.7.0"
+
object-keys "^1.1.1"
+
object.assign "^4.1.0"
+
string.prototype.trimleft "^2.1.1"
+
string.prototype.trimright "^2.1.1"
+
+
es-to-primitive@^1.2.1:
+
version "1.2.1"
+
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+
dependencies:
+
is-callable "^1.1.4"
+
is-date-object "^1.0.1"
+
is-symbol "^1.0.2"
+
+
escape-string-regexp@^1.0.5:
+
version "1.0.5"
+
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+
escape-string-regexp@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+
integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
+
escodegen@^1.14.1:
+
version "1.14.1"
+
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457"
+
integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==
+
dependencies:
+
esprima "^4.0.1"
+
estraverse "^4.2.0"
+
esutils "^2.0.2"
+
optionator "^0.8.1"
+
optionalDependencies:
+
source-map "~0.6.1"
+
+
esprima@^4.0.0, esprima@^4.0.1:
+
version "4.0.1"
+
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+
estraverse@^4.2.0:
+
version "4.3.0"
+
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+
estree-walker@^0.6.1:
+
version "0.6.1"
+
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
+
integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
+
+
estree-walker@^1.0.1:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
+
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
+
+
esutils@^2.0.2:
+
version "2.0.3"
+
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+
exec-sh@^0.3.2:
+
version "0.3.4"
+
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5"
+
integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==
+
+
execa@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+
integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+
dependencies:
+
cross-spawn "^6.0.0"
+
get-stream "^4.0.0"
+
is-stream "^1.1.0"
+
npm-run-path "^2.0.0"
+
p-finally "^1.0.0"
+
signal-exit "^3.0.0"
+
strip-eof "^1.0.0"
+
+
execa@^4.0.0:
+
version "4.0.1"
+
resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.1.tgz#988488781f1f0238cd156f7aaede11c3e853b4c1"
+
integrity sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw==
+
dependencies:
+
cross-spawn "^7.0.0"
+
get-stream "^5.0.0"
+
human-signals "^1.1.1"
+
is-stream "^2.0.0"
+
merge-stream "^2.0.0"
+
npm-run-path "^4.0.0"
+
onetime "^5.1.0"
+
signal-exit "^3.0.2"
+
strip-final-newline "^2.0.0"
+
+
exit@^0.1.2:
+
version "0.1.2"
+
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
+
+
expand-brackets@^2.1.4:
+
version "2.1.4"
+
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+
integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+
dependencies:
+
debug "^2.3.3"
+
define-property "^0.2.5"
+
extend-shallow "^2.0.1"
+
posix-character-classes "^0.1.0"
+
regex-not "^1.0.0"
+
snapdragon "^0.8.1"
+
to-regex "^3.0.1"
+
+
expect@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/expect/-/expect-26.0.1.tgz#18697b9611a7e2725e20ba3ceadda49bc9865421"
+
integrity sha512-QcCy4nygHeqmbw564YxNbHTJlXh47dVID2BUP52cZFpLU9zHViMFK6h07cC1wf7GYCTIigTdAXhVua8Yl1FkKg==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
ansi-styles "^4.0.0"
+
jest-get-type "^26.0.0"
+
jest-matcher-utils "^26.0.1"
+
jest-message-util "^26.0.1"
+
jest-regex-util "^26.0.0"
+
+
extend-shallow@^2.0.1:
+
version "2.0.1"
+
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+
integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+
dependencies:
+
is-extendable "^0.1.0"
+
+
extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+
version "3.0.2"
+
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+
dependencies:
+
assign-symbols "^1.0.0"
+
is-extendable "^1.0.1"
+
+
extend@~3.0.2:
+
version "3.0.2"
+
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+
extglob@^2.0.4:
+
version "2.0.4"
+
resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+
integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+
dependencies:
+
array-unique "^0.3.2"
+
define-property "^1.0.0"
+
expand-brackets "^2.1.4"
+
extend-shallow "^2.0.1"
+
fragment-cache "^0.2.1"
+
regex-not "^1.0.0"
+
snapdragon "^0.8.1"
+
to-regex "^3.0.1"
+
+
extsprintf@1.3.0:
+
version "1.3.0"
+
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
+
+
extsprintf@^1.2.0:
+
version "1.4.0"
+
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+
+
fast-deep-equal@^3.1.1:
+
version "3.1.1"
+
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
+
integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
+
+
fast-json-stable-stringify@^2.0.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+
fast-levenshtein@~2.0.6:
+
version "2.0.6"
+
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+
fb-watchman@^2.0.0:
+
version "2.0.1"
+
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
+
integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
+
dependencies:
+
bser "2.1.1"
+
+
figures@^3.2.0:
+
version "3.2.0"
+
resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+
dependencies:
+
escape-string-regexp "^1.0.5"
+
+
fill-range@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+
integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+
dependencies:
+
extend-shallow "^2.0.1"
+
is-number "^3.0.0"
+
repeat-string "^1.6.1"
+
to-regex-range "^2.1.0"
+
+
fill-range@^7.0.1:
+
version "7.0.1"
+
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+
dependencies:
+
to-regex-range "^5.0.1"
+
+
find-up@^4.0.0, find-up@^4.1.0:
+
version "4.1.0"
+
resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+
integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+
dependencies:
+
locate-path "^5.0.0"
+
path-exists "^4.0.0"
+
+
find-versions@^3.2.0:
+
version "3.2.0"
+
resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e"
+
integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==
+
dependencies:
+
semver-regex "^2.0.0"
+
+
for-in@^1.0.2:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+
forever-agent@~0.6.1:
+
version "0.6.1"
+
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+
form-data@~2.3.2:
+
version "2.3.3"
+
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+
dependencies:
+
asynckit "^0.4.0"
+
combined-stream "^1.0.6"
+
mime-types "^2.1.12"
+
+
fragment-cache@^0.2.1:
+
version "0.2.1"
+
resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+
integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+
dependencies:
+
map-cache "^0.2.2"
+
+
fs.realpath@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+
fsevents@^2.1.2, fsevents@~2.1.2:
+
version "2.1.3"
+
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
+
integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
+
+
function-bind@^1.1.1:
+
version "1.1.1"
+
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+
gensync@^1.0.0-beta.1:
+
version "1.0.0-beta.1"
+
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
+
integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==
+
+
get-caller-file@^2.0.1:
+
version "2.0.5"
+
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+
get-own-enumerable-property-symbols@^3.0.0:
+
version "3.0.2"
+
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+
integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
+
get-stream@^4.0.0:
+
version "4.1.0"
+
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+
dependencies:
+
pump "^3.0.0"
+
+
get-stream@^5.0.0:
+
version "5.1.0"
+
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
+
integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==
+
dependencies:
+
pump "^3.0.0"
+
+
get-value@^2.0.3, get-value@^2.0.6:
+
version "2.0.6"
+
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+
getpass@^0.1.1:
+
version "0.1.7"
+
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+
integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
+
dependencies:
+
assert-plus "^1.0.0"
+
+
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
+
version "7.1.6"
+
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+
dependencies:
+
fs.realpath "^1.0.0"
+
inflight "^1.0.4"
+
inherits "2"
+
minimatch "^3.0.4"
+
once "^1.3.0"
+
path-is-absolute "^1.0.0"
+
+
globals@^11.1.0:
+
version "11.12.0"
+
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+
graceful-fs@^4.1.2, graceful-fs@^4.2.4:
+
version "4.2.4"
+
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
+
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+
+
growly@^1.3.0:
+
version "1.3.0"
+
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
+
+
har-schema@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
+
+
har-validator@~5.1.3:
+
version "5.1.3"
+
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
+
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
+
dependencies:
+
ajv "^6.5.5"
+
har-schema "^2.0.0"
+
+
has-flag@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+
has-flag@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+
has-symbols@^1.0.0, has-symbols@^1.0.1:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+
+
has-value@^0.3.1:
+
version "0.3.1"
+
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+
integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+
dependencies:
+
get-value "^2.0.3"
+
has-values "^0.1.4"
+
isobject "^2.0.0"
+
+
has-value@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+
integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+
dependencies:
+
get-value "^2.0.6"
+
has-values "^1.0.0"
+
isobject "^3.0.0"
+
+
has-values@^0.1.4:
+
version "0.1.4"
+
resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+
integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+
has-values@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+
integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+
dependencies:
+
is-number "^3.0.0"
+
kind-of "^4.0.0"
+
+
has@^1.0.3:
+
version "1.0.3"
+
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+
dependencies:
+
function-bind "^1.1.1"
+
+
hosted-git-info@^2.1.4:
+
version "2.8.8"
+
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
+
integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
+
+
html-encoding-sniffer@^2.0.1:
+
version "2.0.1"
+
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
+
integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
+
dependencies:
+
whatwg-encoding "^1.0.5"
+
+
html-escaper@^2.0.0:
+
version "2.0.2"
+
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
+
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
+
+
http-signature@~1.2.0:
+
version "1.2.0"
+
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+
integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
+
dependencies:
+
assert-plus "^1.0.0"
+
jsprim "^1.2.2"
+
sshpk "^1.7.0"
+
+
human-signals@^1.1.1:
+
version "1.1.1"
+
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+
husky@^4.2.5:
+
version "4.2.5"
+
resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36"
+
integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==
+
dependencies:
+
chalk "^4.0.0"
+
ci-info "^2.0.0"
+
compare-versions "^3.6.0"
+
cosmiconfig "^6.0.0"
+
find-versions "^3.2.0"
+
opencollective-postinstall "^2.0.2"
+
pkg-dir "^4.2.0"
+
please-upgrade-node "^3.2.0"
+
slash "^3.0.0"
+
which-pm-runs "^1.0.0"
+
+
iconv-lite@0.4.24:
+
version "0.4.24"
+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+
dependencies:
+
safer-buffer ">= 2.1.2 < 3"
+
+
import-fresh@^3.1.0:
+
version "3.2.1"
+
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
+
integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
+
dependencies:
+
parent-module "^1.0.0"
+
resolve-from "^4.0.0"
+
+
import-local@^3.0.2:
+
version "3.0.2"
+
resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
+
integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
+
dependencies:
+
pkg-dir "^4.2.0"
+
resolve-cwd "^3.0.0"
+
+
imurmurhash@^0.1.4:
+
version "0.1.4"
+
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+
indent-string@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+
inflight@^1.0.4:
+
version "1.0.6"
+
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+
dependencies:
+
once "^1.3.0"
+
wrappy "1"
+
+
inherits@2:
+
version "2.0.4"
+
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+
ip-regex@^2.1.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
+
+
is-accessor-descriptor@^0.1.6:
+
version "0.1.6"
+
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+
integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+
dependencies:
+
kind-of "^3.0.2"
+
+
is-accessor-descriptor@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+
integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+
dependencies:
+
kind-of "^6.0.0"
+
+
is-arrayish@^0.2.1:
+
version "0.2.1"
+
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+
is-buffer@^1.1.5:
+
version "1.1.6"
+
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+
is-callable@^1.1.4, is-callable@^1.1.5:
+
version "1.1.5"
+
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
+
integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
+
+
is-ci@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+
integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+
dependencies:
+
ci-info "^2.0.0"
+
+
is-data-descriptor@^0.1.4:
+
version "0.1.4"
+
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+
integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+
dependencies:
+
kind-of "^3.0.2"
+
+
is-data-descriptor@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+
integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+
dependencies:
+
kind-of "^6.0.0"
+
+
is-date-object@^1.0.1:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
+
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
+
+
is-descriptor@^0.1.0:
+
version "0.1.6"
+
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+
integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+
dependencies:
+
is-accessor-descriptor "^0.1.6"
+
is-data-descriptor "^0.1.4"
+
kind-of "^5.0.0"
+
+
is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+
integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+
dependencies:
+
is-accessor-descriptor "^1.0.0"
+
is-data-descriptor "^1.0.0"
+
kind-of "^6.0.2"
+
+
is-docker@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b"
+
integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==
+
+
is-extendable@^0.1.0, is-extendable@^0.1.1:
+
version "0.1.1"
+
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+
integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+
is-extendable@^1.0.1:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+
integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+
dependencies:
+
is-plain-object "^2.0.4"
+
+
is-fullwidth-code-point@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+
is-generator-fn@^2.0.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
+
integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
+
+
is-module@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
+
+
is-number@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+
integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+
dependencies:
+
kind-of "^3.0.2"
+
+
is-number@^7.0.0:
+
version "7.0.0"
+
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+
is-obj@^1.0.1:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+
version "2.0.4"
+
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+
dependencies:
+
isobject "^3.0.1"
+
+
is-potential-custom-element-name@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397"
+
integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c=
+
+
is-reference@^1.1.2:
+
version "1.1.4"
+
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427"
+
integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==
+
dependencies:
+
"@types/estree" "0.0.39"
+
+
is-regex@^1.0.5:
+
version "1.0.5"
+
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae"
+
integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==
+
dependencies:
+
has "^1.0.3"
+
+
is-regexp@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+
integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+
is-stream@^1.1.0:
+
version "1.1.0"
+
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+
is-stream@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+
integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
+
is-symbol@^1.0.2:
+
version "1.0.3"
+
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+
integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+
dependencies:
+
has-symbols "^1.0.1"
+
+
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+
is-windows@^1.0.2:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+
is-wsl@^2.1.1:
+
version "2.2.0"
+
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+
dependencies:
+
is-docker "^2.0.0"
+
+
isarray@1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+
isexe@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+
isobject@^2.0.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+
integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+
dependencies:
+
isarray "1.0.0"
+
+
isobject@^3.0.0, isobject@^3.0.1:
+
version "3.0.1"
+
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+
isstream@~0.1.2:
+
version "0.1.2"
+
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+
istanbul-lib-coverage@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec"
+
integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
+
+
istanbul-lib-instrument@^4.0.0:
+
version "4.0.3"
+
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
+
integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
+
dependencies:
+
"@babel/core" "^7.7.5"
+
"@istanbuljs/schema" "^0.1.2"
+
istanbul-lib-coverage "^3.0.0"
+
semver "^6.3.0"
+
+
istanbul-lib-report@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
+
integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
+
dependencies:
+
istanbul-lib-coverage "^3.0.0"
+
make-dir "^3.0.0"
+
supports-color "^7.1.0"
+
+
istanbul-lib-source-maps@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9"
+
integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==
+
dependencies:
+
debug "^4.1.1"
+
istanbul-lib-coverage "^3.0.0"
+
source-map "^0.6.1"
+
+
istanbul-reports@^3.0.2:
+
version "3.0.2"
+
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
+
integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
+
dependencies:
+
html-escaper "^2.0.0"
+
istanbul-lib-report "^3.0.0"
+
+
jest-changed-files@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.0.1.tgz#1334630c6a1ad75784120f39c3aa9278e59f349f"
+
integrity sha512-q8LP9Sint17HaE2LjxQXL+oYWW/WeeXMPE2+Op9X3mY8IEGFVc14xRxFjUuXUbcPAlDLhtWdIEt59GdQbn76Hw==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
execa "^4.0.0"
+
throat "^5.0.0"
+
+
jest-cli@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.0.1.tgz#3a42399a4cbc96a519b99ad069a117d955570cac"
+
integrity sha512-pFLfSOBcbG9iOZWaMK4Een+tTxi/Wcm34geqZEqrst9cZDkTQ1LZ2CnBrTlHWuYAiTMFr0EQeK52ScyFU8wK+w==
+
dependencies:
+
"@jest/core" "^26.0.1"
+
"@jest/test-result" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
chalk "^4.0.0"
+
exit "^0.1.2"
+
graceful-fs "^4.2.4"
+
import-local "^3.0.2"
+
is-ci "^2.0.0"
+
jest-config "^26.0.1"
+
jest-util "^26.0.1"
+
jest-validate "^26.0.1"
+
prompts "^2.0.1"
+
yargs "^15.3.1"
+
+
jest-config@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.0.1.tgz#096a3d4150afadf719d1fab00e9a6fb2d6d67507"
+
integrity sha512-9mWKx2L1LFgOXlDsC4YSeavnblN6A4CPfXFiobq+YYLaBMymA/SczN7xYTSmLaEYHZOcB98UdoN4m5uNt6tztg==
+
dependencies:
+
"@babel/core" "^7.1.0"
+
"@jest/test-sequencer" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
babel-jest "^26.0.1"
+
chalk "^4.0.0"
+
deepmerge "^4.2.2"
+
glob "^7.1.1"
+
graceful-fs "^4.2.4"
+
jest-environment-jsdom "^26.0.1"
+
jest-environment-node "^26.0.1"
+
jest-get-type "^26.0.0"
+
jest-jasmine2 "^26.0.1"
+
jest-regex-util "^26.0.0"
+
jest-resolve "^26.0.1"
+
jest-util "^26.0.1"
+
jest-validate "^26.0.1"
+
micromatch "^4.0.2"
+
pretty-format "^26.0.1"
+
+
jest-diff@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.0.1.tgz#c44ab3cdd5977d466de69c46929e0e57f89aa1de"
+
integrity sha512-odTcHyl5X+U+QsczJmOjWw5tPvww+y9Yim5xzqxVl/R1j4z71+fHW4g8qu1ugMmKdFdxw+AtQgs5mupPnzcIBQ==
+
dependencies:
+
chalk "^4.0.0"
+
diff-sequences "^26.0.0"
+
jest-get-type "^26.0.0"
+
pretty-format "^26.0.1"
+
+
jest-docblock@^26.0.0:
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5"
+
integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==
+
dependencies:
+
detect-newline "^3.0.0"
+
+
jest-each@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.0.1.tgz#633083061619302fc90dd8f58350f9d77d67be04"
+
integrity sha512-OTgJlwXCAR8NIWaXFL5DBbeS4QIYPuNASkzSwMCJO+ywo9BEa6TqkaSWsfR7VdbMLdgYJqSfQcIyjJCNwl5n4Q==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
chalk "^4.0.0"
+
jest-get-type "^26.0.0"
+
jest-util "^26.0.1"
+
pretty-format "^26.0.1"
+
+
jest-environment-jsdom@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.0.1.tgz#217690852e5bdd7c846a4e3b50c8ffd441dfd249"
+
integrity sha512-u88NJa3aptz2Xix2pFhihRBAatwZHWwSiRLBDBQE1cdJvDjPvv7ZGA0NQBxWwDDn7D0g1uHqxM8aGgfA9Bx49g==
+
dependencies:
+
"@jest/environment" "^26.0.1"
+
"@jest/fake-timers" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
jest-mock "^26.0.1"
+
jest-util "^26.0.1"
+
jsdom "^16.2.2"
+
+
jest-environment-node@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.0.1.tgz#584a9ff623124ff6eeb49e0131b5f7612b310b13"
+
integrity sha512-4FRBWcSn5yVo0KtNav7+5NH5Z/tEgDLp7VRQVS5tCouWORxj+nI+1tOLutM07Zb2Qi7ja+HEDoOUkjBSWZg/IQ==
+
dependencies:
+
"@jest/environment" "^26.0.1"
+
"@jest/fake-timers" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
jest-mock "^26.0.1"
+
jest-util "^26.0.1"
+
+
jest-get-type@^26.0.0:
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039"
+
integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==
+
+
jest-haste-map@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.0.1.tgz#40dcc03c43ac94d25b8618075804d09cd5d49de7"
+
integrity sha512-J9kBl/EdjmDsvyv7CiyKY5+DsTvVOScenprz/fGqfLg/pm1gdjbwwQ98nW0t+OIt+f+5nAVaElvn/6wP5KO7KA==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
"@types/graceful-fs" "^4.1.2"
+
anymatch "^3.0.3"
+
fb-watchman "^2.0.0"
+
graceful-fs "^4.2.4"
+
jest-serializer "^26.0.0"
+
jest-util "^26.0.1"
+
jest-worker "^26.0.0"
+
micromatch "^4.0.2"
+
sane "^4.0.3"
+
walker "^1.0.7"
+
which "^2.0.2"
+
optionalDependencies:
+
fsevents "^2.1.2"
+
+
jest-jasmine2@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.0.1.tgz#947c40ee816636ba23112af3206d6fa7b23c1c1c"
+
integrity sha512-ILaRyiWxiXOJ+RWTKupzQWwnPaeXPIoLS5uW41h18varJzd9/7I0QJGqg69fhTT1ev9JpSSo9QtalriUN0oqOg==
+
dependencies:
+
"@babel/traverse" "^7.1.0"
+
"@jest/environment" "^26.0.1"
+
"@jest/source-map" "^26.0.0"
+
"@jest/test-result" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
chalk "^4.0.0"
+
co "^4.6.0"
+
expect "^26.0.1"
+
is-generator-fn "^2.0.0"
+
jest-each "^26.0.1"
+
jest-matcher-utils "^26.0.1"
+
jest-message-util "^26.0.1"
+
jest-runtime "^26.0.1"
+
jest-snapshot "^26.0.1"
+
jest-util "^26.0.1"
+
pretty-format "^26.0.1"
+
throat "^5.0.0"
+
+
jest-leak-detector@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.0.1.tgz#79b19ab3f41170e0a78eb8fa754a116d3447fb8c"
+
integrity sha512-93FR8tJhaYIWrWsbmVN1pQ9ZNlbgRpfvrnw5LmgLRX0ckOJ8ut/I35CL7awi2ecq6Ca4lL59bEK9hr7nqoHWPA==
+
dependencies:
+
jest-get-type "^26.0.0"
+
pretty-format "^26.0.1"
+
+
jest-matcher-utils@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.0.1.tgz#12e1fc386fe4f14678f4cc8dbd5ba75a58092911"
+
integrity sha512-PUMlsLth0Azen8Q2WFTwnSkGh2JZ8FYuwijC8NR47vXKpsrKmA1wWvgcj1CquuVfcYiDEdj985u5Wmg7COEARw==
+
dependencies:
+
chalk "^4.0.0"
+
jest-diff "^26.0.1"
+
jest-get-type "^26.0.0"
+
pretty-format "^26.0.1"
+
+
jest-message-util@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.0.1.tgz#07af1b42fc450b4cc8e90e4c9cef11b33ce9b0ac"
+
integrity sha512-CbK8uQREZ8umUfo8+zgIfEt+W7HAHjQCoRaNs4WxKGhAYBGwEyvxuK81FXa7VeB9pwDEXeeKOB2qcsNVCAvB7Q==
+
dependencies:
+
"@babel/code-frame" "^7.0.0"
+
"@jest/types" "^26.0.1"
+
"@types/stack-utils" "^1.0.1"
+
chalk "^4.0.0"
+
graceful-fs "^4.2.4"
+
micromatch "^4.0.2"
+
slash "^3.0.0"
+
stack-utils "^2.0.2"
+
+
jest-mock@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.0.1.tgz#7fd1517ed4955397cf1620a771dc2d61fad8fd40"
+
integrity sha512-MpYTBqycuPYSY6xKJognV7Ja46/TeRbAZept987Zp+tuJvMN0YBWyyhG9mXyYQaU3SBI0TUlSaO5L3p49agw7Q==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
+
jest-pnp-resolver@^1.2.1:
+
version "1.2.1"
+
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a"
+
integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==
+
+
jest-regex-util@^26.0.0:
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28"
+
integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==
+
+
jest-resolve-dependencies@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.0.1.tgz#607ba7ccc32151d185a477cff45bf33bce417f0b"
+
integrity sha512-9d5/RS/ft0vB/qy7jct/qAhzJsr6fRQJyGAFigK3XD4hf9kIbEH5gks4t4Z7kyMRhowU6HWm/o8ILqhaHdSqLw==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
jest-regex-util "^26.0.0"
+
jest-snapshot "^26.0.1"
+
+
jest-resolve@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.0.1.tgz#21d1ee06f9ea270a343a8893051aeed940cde736"
+
integrity sha512-6jWxk0IKZkPIVTvq6s72RH735P8f9eCJW3IM5CX/SJFeKq1p2cZx0U49wf/SdMlhaB/anann5J2nCJj6HrbezQ==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
chalk "^4.0.0"
+
graceful-fs "^4.2.4"
+
jest-pnp-resolver "^1.2.1"
+
jest-util "^26.0.1"
+
read-pkg-up "^7.0.1"
+
resolve "^1.17.0"
+
slash "^3.0.0"
+
+
jest-runner@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.0.1.tgz#ea03584b7ae4bacfb7e533d680a575a49ae35d50"
+
integrity sha512-CApm0g81b49Znm4cZekYQK67zY7kkB4umOlI2Dx5CwKAzdgw75EN+ozBHRvxBzwo1ZLYZ07TFxkaPm+1t4d8jA==
+
dependencies:
+
"@jest/console" "^26.0.1"
+
"@jest/environment" "^26.0.1"
+
"@jest/test-result" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
chalk "^4.0.0"
+
exit "^0.1.2"
+
graceful-fs "^4.2.4"
+
jest-config "^26.0.1"
+
jest-docblock "^26.0.0"
+
jest-haste-map "^26.0.1"
+
jest-jasmine2 "^26.0.1"
+
jest-leak-detector "^26.0.1"
+
jest-message-util "^26.0.1"
+
jest-resolve "^26.0.1"
+
jest-runtime "^26.0.1"
+
jest-util "^26.0.1"
+
jest-worker "^26.0.0"
+
source-map-support "^0.5.6"
+
throat "^5.0.0"
+
+
jest-runtime@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.0.1.tgz#a121a6321235987d294168e282d52b364d7d3f89"
+
integrity sha512-Ci2QhYFmANg5qaXWf78T2Pfo6GtmIBn2rRaLnklRyEucmPccmCKvS9JPljcmtVamsdMmkyNkVFb9pBTD6si9Lw==
+
dependencies:
+
"@jest/console" "^26.0.1"
+
"@jest/environment" "^26.0.1"
+
"@jest/fake-timers" "^26.0.1"
+
"@jest/globals" "^26.0.1"
+
"@jest/source-map" "^26.0.0"
+
"@jest/test-result" "^26.0.1"
+
"@jest/transform" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
"@types/yargs" "^15.0.0"
+
chalk "^4.0.0"
+
collect-v8-coverage "^1.0.0"
+
exit "^0.1.2"
+
glob "^7.1.3"
+
graceful-fs "^4.2.4"
+
jest-config "^26.0.1"
+
jest-haste-map "^26.0.1"
+
jest-message-util "^26.0.1"
+
jest-mock "^26.0.1"
+
jest-regex-util "^26.0.0"
+
jest-resolve "^26.0.1"
+
jest-snapshot "^26.0.1"
+
jest-util "^26.0.1"
+
jest-validate "^26.0.1"
+
slash "^3.0.0"
+
strip-bom "^4.0.0"
+
yargs "^15.3.1"
+
+
jest-serializer@^26.0.0:
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.0.0.tgz#f6c521ddb976943b93e662c0d4d79245abec72a3"
+
integrity sha512-sQGXLdEGWFAE4wIJ2ZaIDb+ikETlUirEOBsLXdoBbeLhTHkZUJwgk3+M8eyFizhM6le43PDCCKPA1hzkSDo4cQ==
+
dependencies:
+
graceful-fs "^4.2.4"
+
+
jest-snapshot@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.0.1.tgz#1baa942bd83d47b837a84af7fcf5fd4a236da399"
+
integrity sha512-jxd+cF7+LL+a80qh6TAnTLUZHyQoWwEHSUFJjkw35u3Gx+BZUNuXhYvDqHXr62UQPnWo2P6fvQlLjsU93UKyxA==
+
dependencies:
+
"@babel/types" "^7.0.0"
+
"@jest/types" "^26.0.1"
+
"@types/prettier" "^2.0.0"
+
chalk "^4.0.0"
+
expect "^26.0.1"
+
graceful-fs "^4.2.4"
+
jest-diff "^26.0.1"
+
jest-get-type "^26.0.0"
+
jest-matcher-utils "^26.0.1"
+
jest-message-util "^26.0.1"
+
jest-resolve "^26.0.1"
+
make-dir "^3.0.0"
+
natural-compare "^1.4.0"
+
pretty-format "^26.0.1"
+
semver "^7.3.2"
+
+
jest-util@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.0.1.tgz#72c4c51177b695fdd795ca072a6f94e3d7cef00a"
+
integrity sha512-byQ3n7ad1BO/WyFkYvlWQHTsomB6GIewBh8tlGtusiylAlaxQ1UpS0XYH0ngOyhZuHVLN79Qvl6/pMiDMSSG1g==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
chalk "^4.0.0"
+
graceful-fs "^4.2.4"
+
is-ci "^2.0.0"
+
make-dir "^3.0.0"
+
+
jest-validate@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.0.1.tgz#a62987e1da5b7f724130f904725e22f4e5b2e23c"
+
integrity sha512-u0xRc+rbmov/VqXnX3DlkxD74rHI/CfS5xaV2VpeaVySjbb1JioNVOyly5b56q2l9ZKe7bVG5qWmjfctkQb0bA==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
camelcase "^6.0.0"
+
chalk "^4.0.0"
+
jest-get-type "^26.0.0"
+
leven "^3.1.0"
+
pretty-format "^26.0.1"
+
+
jest-watcher@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.0.1.tgz#5b5e3ebbdf10c240e22a98af66d645631afda770"
+
integrity sha512-pdZPydsS8475f89kGswaNsN3rhP6lnC3/QDCppP7bg1L9JQz7oU9Mb/5xPETk1RHDCWeqmVC47M4K5RR7ejxFw==
+
dependencies:
+
"@jest/test-result" "^26.0.1"
+
"@jest/types" "^26.0.1"
+
ansi-escapes "^4.2.1"
+
chalk "^4.0.0"
+
jest-util "^26.0.1"
+
string-length "^4.0.1"
+
+
jest-worker@^26.0.0:
+
version "26.0.0"
+
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.0.0.tgz#4920c7714f0a96c6412464718d0c58a3df3fb066"
+
integrity sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw==
+
dependencies:
+
merge-stream "^2.0.0"
+
supports-color "^7.0.0"
+
+
jest@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/jest/-/jest-26.0.1.tgz#5c51a2e58dff7525b65f169721767173bf832694"
+
integrity sha512-29Q54kn5Bm7ZGKIuH2JRmnKl85YRigp0o0asTc6Sb6l2ch1DCXIeZTLLFy9ultJvhkTqbswF5DEx4+RlkmCxWg==
+
dependencies:
+
"@jest/core" "^26.0.1"
+
import-local "^3.0.2"
+
jest-cli "^26.0.1"
+
+
js-tokens@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+
js-yaml@^3.13.1:
+
version "3.13.1"
+
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+
dependencies:
+
argparse "^1.0.7"
+
esprima "^4.0.0"
+
+
jsbn@~0.1.0:
+
version "0.1.1"
+
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
+
+
jsdom@^16.2.2:
+
version "16.2.2"
+
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.2.2.tgz#76f2f7541646beb46a938f5dc476b88705bedf2b"
+
integrity sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg==
+
dependencies:
+
abab "^2.0.3"
+
acorn "^7.1.1"
+
acorn-globals "^6.0.0"
+
cssom "^0.4.4"
+
cssstyle "^2.2.0"
+
data-urls "^2.0.0"
+
decimal.js "^10.2.0"
+
domexception "^2.0.1"
+
escodegen "^1.14.1"
+
html-encoding-sniffer "^2.0.1"
+
is-potential-custom-element-name "^1.0.0"
+
nwsapi "^2.2.0"
+
parse5 "5.1.1"
+
request "^2.88.2"
+
request-promise-native "^1.0.8"
+
saxes "^5.0.0"
+
symbol-tree "^3.2.4"
+
tough-cookie "^3.0.1"
+
w3c-hr-time "^1.0.2"
+
w3c-xmlserializer "^2.0.0"
+
webidl-conversions "^6.0.0"
+
whatwg-encoding "^1.0.5"
+
whatwg-mimetype "^2.3.0"
+
whatwg-url "^8.0.0"
+
ws "^7.2.3"
+
xml-name-validator "^3.0.0"
+
+
jsesc@^2.5.1:
+
version "2.5.2"
+
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+
jsesc@~0.5.0:
+
version "0.5.0"
+
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+
json-parse-better-errors@^1.0.1:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+
json-schema-traverse@^0.4.1:
+
version "0.4.1"
+
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+
json-schema@0.2.3:
+
version "0.2.3"
+
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+
json-stringify-safe@~5.0.1:
+
version "5.0.1"
+
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+
json5@^2.1.2:
+
version "2.1.3"
+
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
+
integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
+
dependencies:
+
minimist "^1.2.5"
+
+
jsprim@^1.2.2:
+
version "1.4.1"
+
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+
integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
+
dependencies:
+
assert-plus "1.0.0"
+
extsprintf "1.3.0"
+
json-schema "0.2.3"
+
verror "1.10.0"
+
+
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+
version "3.2.2"
+
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+
integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+
dependencies:
+
is-buffer "^1.1.5"
+
+
kind-of@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+
integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+
dependencies:
+
is-buffer "^1.1.5"
+
+
kind-of@^5.0.0:
+
version "5.1.0"
+
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+
kind-of@^6.0.0, kind-of@^6.0.2:
+
version "6.0.3"
+
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+
kleur@^3.0.3:
+
version "3.0.3"
+
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+
+
leven@^3.1.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
+
+
levn@~0.3.0:
+
version "0.3.0"
+
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+
integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+
dependencies:
+
prelude-ls "~1.1.2"
+
type-check "~0.3.2"
+
+
lines-and-columns@^1.1.6:
+
version "1.1.6"
+
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
+
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+
+
lint-staged@^10.2.2:
+
version "10.2.2"
+
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.2.tgz#901403c120eb5d9443a0358b55038b04c8a7db9b"
+
integrity sha512-78kNqNdDeKrnqWsexAmkOU3Z5wi+1CsQmUmfCuYgMTE8E4rAIX8RHW7xgxwAZ+LAayb7Cca4uYX4P3LlevzjVg==
+
dependencies:
+
chalk "^4.0.0"
+
commander "^5.0.0"
+
cosmiconfig "^6.0.0"
+
debug "^4.1.1"
+
dedent "^0.7.0"
+
execa "^4.0.0"
+
listr2 "1.3.8"
+
log-symbols "^3.0.0"
+
micromatch "^4.0.2"
+
normalize-path "^3.0.0"
+
please-upgrade-node "^3.2.0"
+
string-argv "0.3.1"
+
stringify-object "^3.3.0"
+
+
listr2@1.3.8:
+
version "1.3.8"
+
resolved "https://registry.yarnpkg.com/listr2/-/listr2-1.3.8.tgz#30924d79de1e936d8c40af54b6465cb814a9c828"
+
integrity sha512-iRDRVTgSDz44tBeBBg/35TQz4W+EZBWsDUq7hPpqeUHm7yLPNll0rkwW3lIX9cPAK7l+x95mGWLpxjqxftNfZA==
+
dependencies:
+
"@samverschueren/stream-to-observable" "^0.3.0"
+
chalk "^3.0.0"
+
cli-cursor "^3.1.0"
+
cli-truncate "^2.1.0"
+
elegant-spinner "^2.0.0"
+
enquirer "^2.3.4"
+
figures "^3.2.0"
+
indent-string "^4.0.0"
+
log-update "^4.0.0"
+
p-map "^4.0.0"
+
pad "^3.2.0"
+
rxjs "^6.3.3"
+
through "^2.3.8"
+
uuid "^7.0.2"
+
+
load-json-file@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+
integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+
dependencies:
+
graceful-fs "^4.1.2"
+
parse-json "^4.0.0"
+
pify "^3.0.0"
+
strip-bom "^3.0.0"
+
+
locate-path@^5.0.0:
+
version "5.0.0"
+
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+
integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+
dependencies:
+
p-locate "^4.1.0"
+
+
lodash.sortby@^4.7.0:
+
version "4.7.0"
+
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
+
+
lodash@^4.17.13, lodash@^4.17.15:
+
version "4.17.15"
+
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+
+
log-symbols@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4"
+
integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==
+
dependencies:
+
chalk "^2.4.2"
+
+
log-update@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
+
integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
+
dependencies:
+
ansi-escapes "^4.3.0"
+
cli-cursor "^3.1.0"
+
slice-ansi "^4.0.0"
+
wrap-ansi "^6.2.0"
+
+
magic-string@^0.25.0, magic-string@^0.25.2, magic-string@^0.25.7:
+
version "0.25.7"
+
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
+
integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+
dependencies:
+
sourcemap-codec "^1.4.4"
+
+
make-dir@^3.0.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+
dependencies:
+
semver "^6.0.0"
+
+
makeerror@1.0.x:
+
version "1.0.11"
+
resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+
integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
+
dependencies:
+
tmpl "1.0.x"
+
+
map-cache@^0.2.2:
+
version "0.2.2"
+
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+
map-visit@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+
integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+
dependencies:
+
object-visit "^1.0.0"
+
+
memorystream@^0.3.1:
+
version "0.3.1"
+
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
+
integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
+
+
merge-stream@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+
micromatch@^3.1.4:
+
version "3.1.10"
+
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+
dependencies:
+
arr-diff "^4.0.0"
+
array-unique "^0.3.2"
+
braces "^2.3.1"
+
define-property "^2.0.2"
+
extend-shallow "^3.0.2"
+
extglob "^2.0.4"
+
fragment-cache "^0.2.1"
+
kind-of "^6.0.2"
+
nanomatch "^1.2.9"
+
object.pick "^1.3.0"
+
regex-not "^1.0.0"
+
snapdragon "^0.8.1"
+
to-regex "^3.0.2"
+
+
micromatch@^4.0.2:
+
version "4.0.2"
+
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
+
integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
+
dependencies:
+
braces "^3.0.1"
+
picomatch "^2.0.5"
+
+
mime-db@1.44.0:
+
version "1.44.0"
+
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
+
integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
+
+
mime-types@^2.1.12, mime-types@~2.1.19:
+
version "2.1.27"
+
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
+
integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
+
dependencies:
+
mime-db "1.44.0"
+
+
mimic-fn@^2.1.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+
minimatch@^3.0.4:
+
version "3.0.4"
+
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+
dependencies:
+
brace-expansion "^1.1.7"
+
+
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
+
version "1.2.5"
+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+
mixin-deep@^1.2.0:
+
version "1.3.2"
+
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+
integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+
dependencies:
+
for-in "^1.0.2"
+
is-extendable "^1.0.1"
+
+
ms@2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+
ms@^2.1.1:
+
version "2.1.2"
+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+
nanomatch@^1.2.9:
+
version "1.2.13"
+
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+
integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+
dependencies:
+
arr-diff "^4.0.0"
+
array-unique "^0.3.2"
+
define-property "^2.0.2"
+
extend-shallow "^3.0.2"
+
fragment-cache "^0.2.1"
+
is-windows "^1.0.2"
+
kind-of "^6.0.2"
+
object.pick "^1.3.0"
+
regex-not "^1.0.0"
+
snapdragon "^0.8.1"
+
to-regex "^3.0.1"
+
+
natural-compare@^1.4.0:
+
version "1.4.0"
+
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+
nice-try@^1.0.4:
+
version "1.0.5"
+
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+
node-int64@^0.4.0:
+
version "0.4.0"
+
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+
integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
+
+
node-modules-regexp@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
+
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
+
+
node-notifier@^7.0.0:
+
version "7.0.0"
+
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.0.tgz#513bc42f2aa3a49fce1980a7ff375957c71f718a"
+
integrity sha512-y8ThJESxsHcak81PGpzWwQKxzk+5YtP3IxR8AYdpXQ1IB6FmcVzFdZXrkPin49F/DKUCfeeiziB8ptY9npzGuA==
+
dependencies:
+
growly "^1.3.0"
+
is-wsl "^2.1.1"
+
semver "^7.2.1"
+
shellwords "^0.1.1"
+
uuid "^7.0.3"
+
which "^2.0.2"
+
+
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
+
version "2.5.0"
+
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+
dependencies:
+
hosted-git-info "^2.1.4"
+
resolve "^1.10.0"
+
semver "2 || 3 || 4 || 5"
+
validate-npm-package-license "^3.0.1"
+
+
normalize-path@^2.1.1:
+
version "2.1.1"
+
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+
integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+
dependencies:
+
remove-trailing-separator "^1.0.1"
+
+
normalize-path@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+
npm-run-all@^4.1.5:
+
version "4.1.5"
+
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
+
integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
+
dependencies:
+
ansi-styles "^3.2.1"
+
chalk "^2.4.1"
+
cross-spawn "^6.0.5"
+
memorystream "^0.3.1"
+
minimatch "^3.0.4"
+
pidtree "^0.3.0"
+
read-pkg "^3.0.0"
+
shell-quote "^1.6.1"
+
string.prototype.padend "^3.0.0"
+
+
npm-run-path@^2.0.0:
+
version "2.0.2"
+
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+
dependencies:
+
path-key "^2.0.0"
+
+
npm-run-path@^4.0.0:
+
version "4.0.1"
+
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+
dependencies:
+
path-key "^3.0.0"
+
+
nwsapi@^2.2.0:
+
version "2.2.0"
+
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
+
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
+
+
oauth-sign@~0.9.0:
+
version "0.9.0"
+
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+
object-copy@^0.1.0:
+
version "0.1.0"
+
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+
integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+
dependencies:
+
copy-descriptor "^0.1.0"
+
define-property "^0.2.5"
+
kind-of "^3.0.3"
+
+
object-inspect@^1.7.0:
+
version "1.7.0"
+
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
+
integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
+
+
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
+
version "1.1.1"
+
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+
object-visit@^1.0.0:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+
integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+
dependencies:
+
isobject "^3.0.0"
+
+
object.assign@^4.1.0:
+
version "4.1.0"
+
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+
integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+
dependencies:
+
define-properties "^1.1.2"
+
function-bind "^1.1.1"
+
has-symbols "^1.0.0"
+
object-keys "^1.0.11"
+
+
object.pick@^1.3.0:
+
version "1.3.0"
+
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+
integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+
dependencies:
+
isobject "^3.0.1"
+
+
once@^1.3.0, once@^1.3.1, once@^1.4.0:
+
version "1.4.0"
+
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+
dependencies:
+
wrappy "1"
+
+
onetime@^5.1.0:
+
version "5.1.0"
+
resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
+
integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
+
dependencies:
+
mimic-fn "^2.1.0"
+
+
opencollective-postinstall@^2.0.2:
+
version "2.0.2"
+
resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89"
+
integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==
+
+
optionator@^0.8.1:
+
version "0.8.3"
+
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
+
integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+
dependencies:
+
deep-is "~0.1.3"
+
fast-levenshtein "~2.0.6"
+
levn "~0.3.0"
+
prelude-ls "~1.1.2"
+
type-check "~0.3.2"
+
word-wrap "~1.2.3"
+
+
p-each-series@^2.1.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48"
+
integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==
+
+
p-finally@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+
p-limit@^2.2.0:
+
version "2.3.0"
+
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+
dependencies:
+
p-try "^2.0.0"
+
+
p-locate@^4.1.0:
+
version "4.1.0"
+
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+
integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+
dependencies:
+
p-limit "^2.2.0"
+
+
p-map@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+
integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+
dependencies:
+
aggregate-error "^3.0.0"
+
+
p-try@^2.0.0:
+
version "2.2.0"
+
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+
pad@^3.2.0:
+
version "3.2.0"
+
resolved "https://registry.yarnpkg.com/pad/-/pad-3.2.0.tgz#be7a1d1cb6757049b4ad5b70e71977158fea95d1"
+
integrity sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg==
+
dependencies:
+
wcwidth "^1.0.1"
+
+
parent-module@^1.0.0:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+
integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+
dependencies:
+
callsites "^3.0.0"
+
+
parse-json@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+
integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+
dependencies:
+
error-ex "^1.3.1"
+
json-parse-better-errors "^1.0.1"
+
+
parse-json@^5.0.0:
+
version "5.0.0"
+
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f"
+
integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==
+
dependencies:
+
"@babel/code-frame" "^7.0.0"
+
error-ex "^1.3.1"
+
json-parse-better-errors "^1.0.1"
+
lines-and-columns "^1.1.6"
+
+
parse5@5.1.1:
+
version "5.1.1"
+
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
+
integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
+
+
pascalcase@^0.1.1:
+
version "0.1.1"
+
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+
path-exists@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+
path-is-absolute@^1.0.0:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+
path-key@^2.0.0, path-key@^2.0.1:
+
version "2.0.1"
+
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+
path-key@^3.0.0, path-key@^3.1.0:
+
version "3.1.1"
+
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+
path-parse@^1.0.6:
+
version "1.0.6"
+
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+
path-type@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+
integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+
dependencies:
+
pify "^3.0.0"
+
+
path-type@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+
performance-now@^2.1.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+
+
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.2:
+
version "2.2.2"
+
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+
+
pidtree@^0.3.0:
+
version "0.3.1"
+
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
+
integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
+
+
pify@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+
pirates@^4.0.1:
+
version "4.0.1"
+
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
+
integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
+
dependencies:
+
node-modules-regexp "^1.0.0"
+
+
pkg-dir@^4.2.0:
+
version "4.2.0"
+
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+
dependencies:
+
find-up "^4.0.0"
+
+
please-upgrade-node@^3.2.0:
+
version "3.2.0"
+
resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
+
integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
+
dependencies:
+
semver-compare "^1.0.0"
+
+
posix-character-classes@^0.1.0:
+
version "0.1.1"
+
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+
prelude-ls@~1.1.2:
+
version "1.1.2"
+
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+
prettier@^2.0.5:
+
version "2.0.5"
+
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4"
+
integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==
+
+
pretty-format@^26.0.1:
+
version "26.0.1"
+
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.0.1.tgz#a4fe54fe428ad2fd3413ca6bbd1ec8c2e277e197"
+
integrity sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw==
+
dependencies:
+
"@jest/types" "^26.0.1"
+
ansi-regex "^5.0.0"
+
ansi-styles "^4.0.0"
+
react-is "^16.12.0"
+
+
prompts@^2.0.1:
+
version "2.3.2"
+
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068"
+
integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==
+
dependencies:
+
kleur "^3.0.3"
+
sisteransi "^1.0.4"
+
+
psl@^1.1.28:
+
version "1.8.0"
+
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
+
pump@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+
dependencies:
+
end-of-stream "^1.1.0"
+
once "^1.3.1"
+
+
punycode@^2.1.0, punycode@^2.1.1:
+
version "2.1.1"
+
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+
qs@~6.5.2:
+
version "6.5.2"
+
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
+
+
react-is@^16.12.0:
+
version "16.13.1"
+
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+
read-pkg-up@^7.0.1:
+
version "7.0.1"
+
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
+
integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
+
dependencies:
+
find-up "^4.1.0"
+
read-pkg "^5.2.0"
+
type-fest "^0.8.1"
+
+
read-pkg@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+
integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+
dependencies:
+
load-json-file "^4.0.0"
+
normalize-package-data "^2.3.2"
+
path-type "^3.0.0"
+
+
read-pkg@^5.2.0:
+
version "5.2.0"
+
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
+
integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
+
dependencies:
+
"@types/normalize-package-data" "^2.4.0"
+
normalize-package-data "^2.5.0"
+
parse-json "^5.0.0"
+
type-fest "^0.6.0"
+
+
regenerate-unicode-properties@^8.0.2:
+
version "8.2.0"
+
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
+
integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
+
dependencies:
+
regenerate "^1.4.0"
+
+
regenerate@^1.4.0:
+
version "1.4.0"
+
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
+
integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
+
+
regex-not@^1.0.0, regex-not@^1.0.2:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+
integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+
dependencies:
+
extend-shallow "^3.0.2"
+
safe-regex "^1.1.0"
+
+
regexpu-core@4.5.4:
+
version "4.5.4"
+
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
+
integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
+
dependencies:
+
regenerate "^1.4.0"
+
regenerate-unicode-properties "^8.0.2"
+
regjsgen "^0.5.0"
+
regjsparser "^0.6.0"
+
unicode-match-property-ecmascript "^1.0.4"
+
unicode-match-property-value-ecmascript "^1.1.0"
+
+
regjsgen@^0.5.0:
+
version "0.5.1"
+
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c"
+
integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==
+
+
regjsparser@^0.6.0:
+
version "0.6.4"
+
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272"
+
integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==
+
dependencies:
+
jsesc "~0.5.0"
+
+
remove-trailing-separator@^1.0.1:
+
version "1.1.0"
+
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+
integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+
repeat-element@^1.1.2:
+
version "1.1.3"
+
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+
repeat-string@^1.6.1:
+
version "1.6.1"
+
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+
request-promise-core@1.1.3:
+
version "1.1.3"
+
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
+
integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==
+
dependencies:
+
lodash "^4.17.15"
+
+
request-promise-native@^1.0.8:
+
version "1.0.8"
+
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36"
+
integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==
+
dependencies:
+
request-promise-core "1.1.3"
+
stealthy-require "^1.1.1"
+
tough-cookie "^2.3.3"
+
+
request@^2.88.2:
+
version "2.88.2"
+
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
+
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+
dependencies:
+
aws-sign2 "~0.7.0"
+
aws4 "^1.8.0"
+
caseless "~0.12.0"
+
combined-stream "~1.0.6"
+
extend "~3.0.2"
+
forever-agent "~0.6.1"
+
form-data "~2.3.2"
+
har-validator "~5.1.3"
+
http-signature "~1.2.0"
+
is-typedarray "~1.0.0"
+
isstream "~0.1.2"
+
json-stringify-safe "~5.0.1"
+
mime-types "~2.1.19"
+
oauth-sign "~0.9.0"
+
performance-now "^2.1.0"
+
qs "~6.5.2"
+
safe-buffer "^5.1.2"
+
tough-cookie "~2.5.0"
+
tunnel-agent "^0.6.0"
+
uuid "^3.3.2"
+
+
require-directory@^2.1.1:
+
version "2.1.1"
+
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+
require-main-filename@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+
resolve-cwd@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
+
integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
+
dependencies:
+
resolve-from "^5.0.0"
+
+
resolve-from@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+
resolve-from@^5.0.0:
+
version "5.0.0"
+
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+
resolve-url@^0.2.1:
+
version "0.2.1"
+
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+
resolve@^1.10.0, resolve@^1.11.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2:
+
version "1.17.0"
+
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
+
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
+
dependencies:
+
path-parse "^1.0.6"
+
+
restore-cursor@^3.1.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+
integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+
dependencies:
+
onetime "^5.1.0"
+
signal-exit "^3.0.2"
+
+
ret@~0.1.10:
+
version "0.1.15"
+
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+
rimraf@^3.0.0, rimraf@^3.0.2:
+
version "3.0.2"
+
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+
dependencies:
+
glob "^7.1.3"
+
+
rollup-plugin-babel@^4.4.0:
+
version "4.4.0"
+
resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb"
+
integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==
+
dependencies:
+
"@babel/helper-module-imports" "^7.0.0"
+
rollup-pluginutils "^2.8.1"
+
+
rollup-pluginutils@^2.8.1:
+
version "2.8.2"
+
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
+
integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
+
dependencies:
+
estree-walker "^0.6.1"
+
+
rollup@^2.10.2:
+
version "2.10.2"
+
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.10.2.tgz#9adfcf8ab36861b5b0f8ca7b436f5866e3e9e200"
+
integrity sha512-tivFM8UXBlYOUqpBYD3pRktYpZvK/eiCQ190eYlrAyrpE/lzkyG2gbawroNdbwmzyUc7Y4eT297xfzv0BDh9qw==
+
optionalDependencies:
+
fsevents "~2.1.2"
+
+
rsvp@^4.8.4:
+
version "4.8.5"
+
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
+
integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
+
+
rxjs@^6.3.3:
+
version "6.5.5"
+
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec"
+
integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==
+
dependencies:
+
tslib "^1.9.0"
+
+
safe-buffer@^5.0.1, safe-buffer@^5.1.2:
+
version "5.2.1"
+
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+
safe-buffer@~5.1.1:
+
version "5.1.2"
+
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+
safe-regex@^1.1.0:
+
version "1.1.0"
+
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+
integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+
dependencies:
+
ret "~0.1.10"
+
+
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+
version "2.1.2"
+
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+
sane@^4.0.3:
+
version "4.1.0"
+
resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
+
integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==
+
dependencies:
+
"@cnakazawa/watch" "^1.0.3"
+
anymatch "^2.0.0"
+
capture-exit "^2.0.0"
+
exec-sh "^0.3.2"
+
execa "^1.0.0"
+
fb-watchman "^2.0.0"
+
micromatch "^3.1.4"
+
minimist "^1.1.1"
+
walker "~1.0.5"
+
+
saxes@^5.0.0:
+
version "5.0.1"
+
resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
+
integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
+
dependencies:
+
xmlchars "^2.2.0"
+
+
semver-compare@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+
integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+
semver-regex@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338"
+
integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==
+
+
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0:
+
version "5.7.1"
+
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+
semver@^6.0.0, semver@^6.3.0:
+
version "6.3.0"
+
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+
semver@^7.2.1, semver@^7.3.2:
+
version "7.3.2"
+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
+
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+
+
set-blocking@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+
set-value@^2.0.0, set-value@^2.0.1:
+
version "2.0.1"
+
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+
integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+
dependencies:
+
extend-shallow "^2.0.1"
+
is-extendable "^0.1.1"
+
is-plain-object "^2.0.3"
+
split-string "^3.0.1"
+
+
shebang-command@^1.2.0:
+
version "1.2.0"
+
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+
dependencies:
+
shebang-regex "^1.0.0"
+
+
shebang-command@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+
integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+
dependencies:
+
shebang-regex "^3.0.0"
+
+
shebang-regex@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+
shebang-regex@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+
shell-quote@^1.6.1:
+
version "1.7.2"
+
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
+
integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
+
+
shellwords@^0.1.1:
+
version "0.1.1"
+
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
+
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
+
+
signal-exit@^3.0.0, signal-exit@^3.0.2:
+
version "3.0.3"
+
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
+
+
sisteransi@^1.0.4:
+
version "1.0.5"
+
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
+
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
+
+
slash@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+
slice-ansi@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
+
integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
+
dependencies:
+
ansi-styles "^4.0.0"
+
astral-regex "^2.0.0"
+
is-fullwidth-code-point "^3.0.0"
+
+
slice-ansi@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+
integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+
dependencies:
+
ansi-styles "^4.0.0"
+
astral-regex "^2.0.0"
+
is-fullwidth-code-point "^3.0.0"
+
+
snapdragon-node@^2.0.1:
+
version "2.1.1"
+
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+
integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+
dependencies:
+
define-property "^1.0.0"
+
isobject "^3.0.0"
+
snapdragon-util "^3.0.1"
+
+
snapdragon-util@^3.0.1:
+
version "3.0.1"
+
resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+
integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+
dependencies:
+
kind-of "^3.2.0"
+
+
snapdragon@^0.8.1:
+
version "0.8.2"
+
resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+
integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+
dependencies:
+
base "^0.11.1"
+
debug "^2.2.0"
+
define-property "^0.2.5"
+
extend-shallow "^2.0.1"
+
map-cache "^0.2.2"
+
source-map "^0.5.6"
+
source-map-resolve "^0.5.0"
+
use "^3.1.0"
+
+
source-map-resolve@^0.5.0:
+
version "0.5.3"
+
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+
integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+
dependencies:
+
atob "^2.1.2"
+
decode-uri-component "^0.2.0"
+
resolve-url "^0.2.1"
+
source-map-url "^0.4.0"
+
urix "^0.1.0"
+
+
source-map-support@^0.5.6:
+
version "0.5.19"
+
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+
dependencies:
+
buffer-from "^1.0.0"
+
source-map "^0.6.0"
+
+
source-map-url@^0.4.0:
+
version "0.4.0"
+
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+
source-map@^0.5.0, source-map@^0.5.6:
+
version "0.5.7"
+
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+
version "0.6.1"
+
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+
source-map@^0.7.3:
+
version "0.7.3"
+
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
+
sourcemap-codec@^1.4.4:
+
version "1.4.8"
+
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+
spdx-correct@^3.0.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+
integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+
dependencies:
+
spdx-expression-parse "^3.0.0"
+
spdx-license-ids "^3.0.0"
+
+
spdx-exceptions@^2.1.0:
+
version "2.3.0"
+
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+
integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+
spdx-expression-parse@^3.0.0:
+
version "3.0.1"
+
resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+
integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+
dependencies:
+
spdx-exceptions "^2.1.0"
+
spdx-license-ids "^3.0.0"
+
+
spdx-license-ids@^3.0.0:
+
version "3.0.5"
+
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
+
integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
+
+
split-string@^3.0.1, split-string@^3.0.2:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+
integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+
dependencies:
+
extend-shallow "^3.0.0"
+
+
sprintf-js@~1.0.2:
+
version "1.0.3"
+
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+
sshpk@^1.7.0:
+
version "1.16.1"
+
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+
integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
+
dependencies:
+
asn1 "~0.2.3"
+
assert-plus "^1.0.0"
+
bcrypt-pbkdf "^1.0.0"
+
dashdash "^1.12.0"
+
ecc-jsbn "~0.1.1"
+
getpass "^0.1.1"
+
jsbn "~0.1.0"
+
safer-buffer "^2.0.2"
+
tweetnacl "~0.14.0"
+
+
stack-utils@^2.0.2:
+
version "2.0.2"
+
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593"
+
integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg==
+
dependencies:
+
escape-string-regexp "^2.0.0"
+
+
static-extend@^0.1.1:
+
version "0.1.2"
+
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+
integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+
dependencies:
+
define-property "^0.2.5"
+
object-copy "^0.1.0"
+
+
stealthy-require@^1.1.1:
+
version "1.1.1"
+
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
+
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
+
+
string-argv@0.3.1:
+
version "0.3.1"
+
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
+
integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
+
+
string-length@^4.0.1:
+
version "4.0.1"
+
resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1"
+
integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==
+
dependencies:
+
char-regex "^1.0.2"
+
strip-ansi "^6.0.0"
+
+
string-width@^4.1.0, string-width@^4.2.0:
+
version "4.2.0"
+
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
+
integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
+
dependencies:
+
emoji-regex "^8.0.0"
+
is-fullwidth-code-point "^3.0.0"
+
strip-ansi "^6.0.0"
+
+
string.prototype.padend@^3.0.0:
+
version "3.1.0"
+
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3"
+
integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==
+
dependencies:
+
define-properties "^1.1.3"
+
es-abstract "^1.17.0-next.1"
+
+
string.prototype.trimend@^1.0.0:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
+
integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
+
dependencies:
+
define-properties "^1.1.3"
+
es-abstract "^1.17.5"
+
+
string.prototype.trimleft@^2.1.1:
+
version "2.1.2"
+
resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc"
+
integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==
+
dependencies:
+
define-properties "^1.1.3"
+
es-abstract "^1.17.5"
+
string.prototype.trimstart "^1.0.0"
+
+
string.prototype.trimright@^2.1.1:
+
version "2.1.2"
+
resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3"
+
integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==
+
dependencies:
+
define-properties "^1.1.3"
+
es-abstract "^1.17.5"
+
string.prototype.trimend "^1.0.0"
+
+
string.prototype.trimstart@^1.0.0:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
+
integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
+
dependencies:
+
define-properties "^1.1.3"
+
es-abstract "^1.17.5"
+
+
stringify-object@^3.3.0:
+
version "3.3.0"
+
resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+
integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+
dependencies:
+
get-own-enumerable-property-symbols "^3.0.0"
+
is-obj "^1.0.1"
+
is-regexp "^1.0.0"
+
+
strip-ansi@^6.0.0:
+
version "6.0.0"
+
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+
integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+
dependencies:
+
ansi-regex "^5.0.0"
+
+
strip-bom@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+
integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+
strip-bom@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+
integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
+
+
strip-eof@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+
strip-final-newline@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+
supports-color@^5.3.0:
+
version "5.5.0"
+
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+
dependencies:
+
has-flag "^3.0.0"
+
+
supports-color@^7.0.0, supports-color@^7.1.0:
+
version "7.1.0"
+
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1"
+
integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==
+
dependencies:
+
has-flag "^4.0.0"
+
+
supports-hyperlinks@^2.0.0:
+
version "2.1.0"
+
resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47"
+
integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==
+
dependencies:
+
has-flag "^4.0.0"
+
supports-color "^7.0.0"
+
+
symbol-tree@^3.2.4:
+
version "3.2.4"
+
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
+
terminal-link@^2.0.0:
+
version "2.1.1"
+
resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
+
integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
+
dependencies:
+
ansi-escapes "^4.2.1"
+
supports-hyperlinks "^2.0.0"
+
+
test-exclude@^6.0.0:
+
version "6.0.0"
+
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
+
integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
+
dependencies:
+
"@istanbuljs/schema" "^0.1.2"
+
glob "^7.1.4"
+
minimatch "^3.0.4"
+
+
throat@^5.0.0:
+
version "5.0.0"
+
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
+
integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
+
+
through@^2.3.8:
+
version "2.3.8"
+
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+
tmpl@1.0.x:
+
version "1.0.4"
+
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+
integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
+
+
to-fast-properties@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+
to-object-path@^0.3.0:
+
version "0.3.0"
+
resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+
integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+
dependencies:
+
kind-of "^3.0.2"
+
+
to-regex-range@^2.1.0:
+
version "2.1.1"
+
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+
integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+
dependencies:
+
is-number "^3.0.0"
+
repeat-string "^1.6.1"
+
+
to-regex-range@^5.0.1:
+
version "5.0.1"
+
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+
dependencies:
+
is-number "^7.0.0"
+
+
to-regex@^3.0.1, to-regex@^3.0.2:
+
version "3.0.2"
+
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+
integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+
dependencies:
+
define-property "^2.0.2"
+
extend-shallow "^3.0.2"
+
regex-not "^1.0.2"
+
safe-regex "^1.1.0"
+
+
tough-cookie@^2.3.3, tough-cookie@~2.5.0:
+
version "2.5.0"
+
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+
dependencies:
+
psl "^1.1.28"
+
punycode "^2.1.1"
+
+
tough-cookie@^3.0.1:
+
version "3.0.1"
+
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
+
integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
+
dependencies:
+
ip-regex "^2.1.0"
+
psl "^1.1.28"
+
punycode "^2.1.1"
+
+
tr46@^2.0.2:
+
version "2.0.2"
+
resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479"
+
integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==
+
dependencies:
+
punycode "^2.1.1"
+
+
tslib@^1.9.0:
+
version "1.13.0"
+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
+
integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
+
+
tunnel-agent@^0.6.0:
+
version "0.6.0"
+
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+
dependencies:
+
safe-buffer "^5.0.1"
+
+
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+
version "0.14.5"
+
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+
type-check@~0.3.2:
+
version "0.3.2"
+
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+
integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+
dependencies:
+
prelude-ls "~1.1.2"
+
+
type-detect@4.0.8:
+
version "4.0.8"
+
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
+
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+
type-fest@^0.11.0:
+
version "0.11.0"
+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
+
integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
+
+
type-fest@^0.6.0:
+
version "0.6.0"
+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
+
integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+
+
type-fest@^0.8.1:
+
version "0.8.1"
+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+
typedarray-to-buffer@^3.1.5:
+
version "3.1.5"
+
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+
integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+
dependencies:
+
is-typedarray "^1.0.0"
+
+
unicode-canonical-property-names-ecmascript@^1.0.4:
+
version "1.0.4"
+
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
+
integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
+
+
unicode-match-property-ecmascript@^1.0.4:
+
version "1.0.4"
+
resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
+
integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
+
dependencies:
+
unicode-canonical-property-names-ecmascript "^1.0.4"
+
unicode-property-aliases-ecmascript "^1.0.4"
+
+
unicode-match-property-value-ecmascript@^1.1.0:
+
version "1.2.0"
+
resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
+
integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
+
+
unicode-property-aliases-ecmascript@^1.0.4:
+
version "1.1.0"
+
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
+
integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
+
+
union-value@^1.0.0:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+
integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+
dependencies:
+
arr-union "^3.1.0"
+
get-value "^2.0.6"
+
is-extendable "^0.1.1"
+
set-value "^2.0.1"
+
+
unset-value@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+
integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+
dependencies:
+
has-value "^0.3.1"
+
isobject "^3.0.0"
+
+
uri-js@^4.2.2:
+
version "4.2.2"
+
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+
integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+
dependencies:
+
punycode "^2.1.0"
+
+
urix@^0.1.0:
+
version "0.1.0"
+
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+
use@^3.1.0:
+
version "3.1.1"
+
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+
uuid@^3.3.2:
+
version "3.4.0"
+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+
uuid@^7.0.2, uuid@^7.0.3:
+
version "7.0.3"
+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
+
integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
+
+
v8-to-istanbul@^4.1.3:
+
version "4.1.4"
+
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6"
+
integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==
+
dependencies:
+
"@types/istanbul-lib-coverage" "^2.0.1"
+
convert-source-map "^1.6.0"
+
source-map "^0.7.3"
+
+
validate-npm-package-license@^3.0.1:
+
version "3.0.4"
+
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+
dependencies:
+
spdx-correct "^3.0.0"
+
spdx-expression-parse "^3.0.0"
+
+
verror@1.10.0:
+
version "1.10.0"
+
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+
integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
+
dependencies:
+
assert-plus "^1.0.0"
+
core-util-is "1.0.2"
+
extsprintf "^1.2.0"
+
+
w3c-hr-time@^1.0.2:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
+
integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
+
dependencies:
+
browser-process-hrtime "^1.0.0"
+
+
w3c-xmlserializer@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
+
integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
+
dependencies:
+
xml-name-validator "^3.0.0"
+
+
walker@^1.0.7, walker@~1.0.5:
+
version "1.0.7"
+
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+
integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
+
dependencies:
+
makeerror "1.0.x"
+
+
wcwidth@^1.0.1:
+
version "1.0.1"
+
resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+
integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+
dependencies:
+
defaults "^1.0.3"
+
+
webidl-conversions@^5.0.0:
+
version "5.0.0"
+
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
+
integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
+
+
webidl-conversions@^6.0.0:
+
version "6.1.0"
+
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
+
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
+
+
whatwg-encoding@^1.0.5:
+
version "1.0.5"
+
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
+
integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+
dependencies:
+
iconv-lite "0.4.24"
+
+
whatwg-mimetype@^2.3.0:
+
version "2.3.0"
+
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
+
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
+
whatwg-url@^8.0.0:
+
version "8.1.0"
+
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771"
+
integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==
+
dependencies:
+
lodash.sortby "^4.7.0"
+
tr46 "^2.0.2"
+
webidl-conversions "^5.0.0"
+
+
which-module@^2.0.0:
+
version "2.0.0"
+
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+
which-pm-runs@^1.0.0:
+
version "1.0.0"
+
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
+
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
+
+
which@^1.2.9:
+
version "1.3.1"
+
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+
dependencies:
+
isexe "^2.0.0"
+
+
which@^2.0.1, which@^2.0.2:
+
version "2.0.2"
+
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+
dependencies:
+
isexe "^2.0.0"
+
+
word-wrap@~1.2.3:
+
version "1.2.3"
+
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+
wrap-ansi@^6.2.0:
+
version "6.2.0"
+
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+
integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+
dependencies:
+
ansi-styles "^4.0.0"
+
string-width "^4.1.0"
+
strip-ansi "^6.0.0"
+
+
wrappy@1:
+
version "1.0.2"
+
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+
write-file-atomic@^3.0.0:
+
version "3.0.3"
+
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+
integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
+
dependencies:
+
imurmurhash "^0.1.4"
+
is-typedarray "^1.0.0"
+
signal-exit "^3.0.2"
+
typedarray-to-buffer "^3.1.5"
+
+
ws@^7.2.3:
+
version "7.3.0"
+
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd"
+
integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==
+
+
xml-name-validator@^3.0.0:
+
version "3.0.0"
+
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
+
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+
+
xmlchars@^2.2.0:
+
version "2.2.0"
+
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
+
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
+
y18n@^4.0.0:
+
version "4.0.0"
+
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
+
yaml@^1.7.2:
+
version "1.10.0"
+
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
+
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
+
+
yargs-parser@^18.1.1:
+
version "18.1.3"
+
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+
dependencies:
+
camelcase "^5.0.0"
+
decamelize "^1.2.0"
+
+
yargs@^15.3.1:
+
version "15.3.1"
+
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b"
+
integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==
+
dependencies:
+
cliui "^6.0.0"
+
decamelize "^1.2.0"
+
find-up "^4.1.0"
+
get-caller-file "^2.0.1"
+
require-directory "^2.1.1"
+
require-main-filename "^2.0.0"
+
set-blocking "^2.0.0"
+
string-width "^4.2.0"
+
which-module "^2.0.0"
+
y18n "^4.0.0"
+
yargs-parser "^18.1.1"