Browse Source

Initial commit

Sven Slootweg 1 month ago
commit
6be177aaaf
7 changed files with 1387 additions and 0 deletions
  1. 3 0
      .eslintrc
  2. 1 0
      .gitignore
  3. 97 0
      README.md
  4. 84 0
      example.js
  5. 132 0
      index.js
  6. 25 0
      package.json
  7. 1045 0
      yarn.lock

+ 3 - 0
.eslintrc

@ -0,0 +1,3 @@
1
{
2
	"extends": "@joepie91/eslint-config"
3
}

+ 1 - 0
.gitignore

@ -0,0 +1 @@
1
node_modules

+ 97 - 0
README.md

@ -0,0 +1,97 @@
1
# merge-by-template
2
3
__This module is still a work-in-progress!__ It's already usable in production code, but the documentation is still rough, and its API might still change in the future.
4
5
## Example
6
7
A runnable version of this example (and more examples) can be found in `example.js` in this project's repository.
8
9
First, you define a merging template, which results in a custom merging function:
10
11
```js
12
const mergeByTemplate = require("merge-by-template");
13
14
let mergeConfiguration = mergeByTemplate.createMerger({
15
	/* `null` makes it explicit that this property should be overridden as a single value,
16
	   despite being an object - but leaving the property out entirely would have had the
17
	   same result, so this is strictly for readability */
18
	database: null,
19
	scripts: {},
20
	accessList: [],
21
	powerLevel: (a, b) => a + b
22
});
23
```
24
25
Then, you use that with two or more input values (eg. objects):
26
27
```js
28
let defaultConfiguration = {
29
	database: {
30
		type: "socket",
31
		path: "/default"
32
	},
33
	scripts: {
34
		test: "echo 'no test configured'",
35
		publish: "npm publish"
36
	},
37
	accessList: [
38
		"maintainer-bot"
39
	],
40
	powerLevel: 8999
41
};
42
43
let customConfiguration = {
44
	database: {
45
		hostname: "localhost",
46
		port: "1234",
47
		username: "hello",
48
		password: "world"
49
	},
50
	scripts: {
51
		test: "node test.js",
52
		build: "node build.js"
53
	},
54
	accessList: [
55
		"real-person"
56
	],
57
	powerLevel: 2
58
};
59
60
console.log(mergeConfiguration([ defaultConfiguration, customConfiguration ]));
61
```
62
63
... and the result of that is a value that's been deep-merged according to your specifications:
64
65
```js
66
{
67
  database: {
68
    hostname: 'localhost',
69
    port: '1234',
70
    username: 'hello',
71
    password: 'world'
72
  },
73
  scripts: {
74
    test: 'node test.js',
75
    publish: 'npm publish',
76
    build: 'node build.js'
77
  },
78
  accessList: [ 'maintainer-bot', 'real-person' ],
79
  powerLevel: 9001
80
}
81
```
82
83
## Rules
84
85
This section will be expanded in the future.
86
87
__The basic principle:__ Regardless of how many values you pass into the custom merging function, it will always merge them per 2. So if you pass in `[ a, b, c ]` then it will first merge `b` onto `a`, and then merge `c` onto the result of the `b -> a` merger. The B side always takes precedence in the default merging strategies.
88
89
For now, a quick listing of rule syntax:
90
91
- __No rule specified (or explicit `null` or `undefined` specified):__ One value overrides the other in full, even if that value is an object or array.
92
- __Object specified:__ The input values are expected to be plain objects, and each property will be merged/overridden individually.
93
	- __Empty object:__ This means all properties are merged according to "No rule specified", ie. the value of one object's property overrides the other.
94
	- __Object with rules:__ Each specified property is merged according to whatever rule syntax is used for that property. Unspecified properties are overridden according to "No rule specified".
95
- __Empty array specified:__ The input values are expected to be arrays, and they will be concatenated together.
96
- __Array with items specified:__ Each item is treated as a positional rule. So if you specify an array with two rules, the first item of each input array gets merged according to the first rule, the second item of each input array according to the second rule, and so on. Any surplus items for which no rule exists, are overridden according to "No rule specified".
97
- __Function specified:__ The function is called with `(a, b)` as arguments, and is expected to return whatever the merge result should be. This lets you implement any custom merging logic, at any level in the data structure.

+ 84 - 0
example.js

@ -0,0 +1,84 @@
1
"use strict";
2
3
const mergeByTemplate = require("./");
4
5
//----- Array merging ------//
6
7
// TODO: Document that the array-merging behaviour changes depending on whether the array in the template contains any items!
8
let mergeArray = mergeByTemplate.createMerger([ {
9
	prop: (a, b) => a + b
10
} ]);
11
12
let arrayA = [
13
	{ prop: 1 },
14
	{ prop: 2 }
15
];
16
17
let arrayB = [
18
	{ prop: 3 },
19
	{ prop: 4 }
20
];
21
22
console.log(mergeArray([ arrayA, arrayB ])); // [ { prop: 4 }, { prop: 6 } ]
23
24
// TODO: Document merge functions, also for arrays
25
26
//----- Object merging ------//
27
28
let mergeConfiguration = mergeByTemplate.createMerger({
29
	// `null` makes it explicit that this property should be overridden as a single value, despite being an object - but leaving the property out entirely would have had the same result, so this is strictly for readability
30
	database: null,
31
	scripts: {},
32
	accessList: [],
33
	powerLevel: (a, b) => a + b
34
});
35
36
let defaultConfiguration = {
37
	database: {
38
		type: "socket",
39
		path: "/default"
40
	},
41
	scripts: {
42
		test: "echo 'no test configured'",
43
		publish: "npm publish"
44
	},
45
	accessList: [
46
		"maintainer-bot"
47
	],
48
	powerLevel: 8999
49
};
50
51
let customConfiguration = {
52
	database: {
53
		hostname: "localhost",
54
		port: "1234",
55
		username: "hello",
56
		password: "world"
57
	},
58
	scripts: {
59
		test: "node test.js",
60
		build: "node build.js"
61
	},
62
	accessList: [
63
		"real-person"
64
	],
65
	powerLevel: 2
66
};
67
68
console.log(mergeConfiguration([ defaultConfiguration, customConfiguration ])); /*
69
{
70
  database: {
71
    hostname: 'localhost',
72
    port: '1234',
73
    username: 'hello',
74
    password: 'world'
75
  },
76
  scripts: {
77
    test: 'node test.js',
78
    publish: 'npm publish',
79
    build: 'node build.js'
80
  },
81
  accessList: [ 'maintainer-bot', 'real-person' ],
82
  powerLevel: 9001
83
}
84
*/

+ 132 - 0
index.js

@ -0,0 +1,132 @@
1
"use strict";
2
3
const util = require("util");
4
const range = require("range").range;
5
const fromEntries = require("fromentries");
6
7
const { validateArguments, validateValue } = require("@validatem/core");
8
const isArray = require("@validatem/is-array");
9
const isPlainObject = require("@validatem/is-plain-object");
10
const defaultTo = require("@validatem/default-to");
11
const hasLengthOf = require("@validatem/has-length-of");
12
const removeNullishItems = require("@validatem/remove-nullish-items");
13
const virtualProperty = require("@validatem/virtual-property");
14
const wrapPath = require("@validatem/wrap-path");
15
16
/* NOTE: In some cases below, we explicitly check for `undefined` only, rather than for both `undefined` and `null`. This is to allow explicitly overriding existent values with `null` during a merge. */
17
18
function wrapValidationPath(basePathSegments, lastProperty, rules) {
19
	let combinedPath = basePathSegments.concat(virtualProperty(lastProperty));
20
21
	return wrapPath(combinedPath, rules);
22
}
23
24
function mapToObject(items, mapper) {
25
	return fromEntries(items.map(mapper));
26
}
27
28
function combineKeys(...objects) {
29
	let allKeys = new Set();
30
31
	for (let object of objects) {
32
		for (let key of Object.keys(object)) {
33
			allKeys.add(key);
34
		}
35
	}
36
37
	return Array.from(allKeys);
38
}
39
40
let optionalArray = [ defaultTo([]), isArray ];
41
let optionalObject = [ defaultTo({}), isPlainObject ];
42
43
function mergeArray(subTemplate, aInput, bInput, path) {
44
	let aItems = validateValue(aInput, wrapValidationPath(path, "a", [ optionalArray ]));
45
	let bItems = validateValue(bInput, wrapValidationPath(path, "b", [ optionalArray ]));
46
47
	let valueRule = subTemplate[0];
48
49
	if (valueRule == null) {
50
		/* No object merging rule specified, so just concatenate the items. */
51
		return aItems.concat(bItems);
52
	} else {
53
		/* Object merging rule specified, so we should invoke that merging rule for each pair of objects. */
54
		let itemCount = Math.max(aItems.length, bItems.length);
55
56
		return range(0, itemCount).map((i) => {
57
			return mergeValue(valueRule, aItems[i], bItems[i], path.concat([ i ]));
58
		});
59
	}
60
}
61
62
function mergeObject(subTemplate, aInput, bInput, path) {
63
	let a = validateValue(aInput, wrapValidationPath(path, "a", [ optionalObject ]));
64
	let b = validateValue(bInput, wrapValidationPath(path, "b", [ optionalObject ]));
65
66
	let allKeys = combineKeys(a, b, subTemplate);
67
68
	return mapToObject(allKeys, (key) => {
69
		let rule = subTemplate[key];
70
		let value = mergeValue(rule, a[key], b[key], path.concat([ key ]));
71
		
72
		return [ key, value ];
73
	});
74
}
75
76
function mergeValue(rule, a, b, path) {
77
	if (rule == null) {
78
		if (b !== undefined) {
79
			return b;
80
		} else {
81
			return a;
82
		}
83
	} else if (typeof rule === "function") {
84
		if (a === undefined) {
85
			return b;
86
		} else if (b === undefined) {
87
			return a;
88
		} else {
89
			return rule(a, b);
90
		}
91
	} else if (typeof rule === "object") {
92
		if (Array.isArray(rule)) {
93
			return mergeArray(rule, a, b, path);
94
		} else {
95
			return mergeObject(rule, a, b, path);
96
		}
97
	} else {
98
		throw new Error(`Unrecognized rule: ${util.inspect(rule)}`);
99
	}
100
}
101
102
module.exports = {
103
	createMerger: function createMerger(template) {
104
		return function merge(_items) {
105
			let [ items ] = validateArguments(arguments, [
106
				[ "items", [
107
					isArray,
108
					removeNullishItems,
109
					hasLengthOf(2)
110
				]]
111
			]);
112
113
			return items.slice(1).reduce((merged, item) => {
114
				return mergeValue(template, merged, item, []);
115
			}, items[0]);
116
		};
117
	},
118
	anyProperty: function (template) {
119
		/* Used for cases where an object is used like a key->value map */
120
		return function merge(aInput, bInput, path) {
121
			let a = validateValue(aInput, wrapValidationPath(path, "a", [ optionalObject ]));
122
			let b = validateValue(bInput, wrapValidationPath(path, "b", [ optionalObject ]));
123
124
			let allKeys = combineKeys(a, b);
125
126
			return mapToObject(allKeys, (key) => {
127
				let value = mergeValue(template, a[key], b[key], path.concat([ key ]));
128
				return [ key, value ];
129
			});
130
		};
131
	}
132
};

+ 25 - 0
package.json

@ -0,0 +1,25 @@
1
{
2
  "name": "merge-by-template",
3
  "version": "0.1.0",
4
  "main": "index.js",
5
  "repository": "git@git.cryto.net:joepie91/merge-by-template.git",
6
  "author": "Sven Slootweg <admin@cryto.net>",
7
  "license": "MIT",
8
  "devDependencies": {
9
    "@joepie91/eslint-config": "^1.1.0",
10
    "eslint": "^6.8.0"
11
  },
12
  "dependencies": {
13
    "@validatem/core": "^0.3.3",
14
    "@validatem/default-to": "^0.1.0",
15
    "@validatem/has-length-of": "^0.1.0",
16
    "@validatem/is-array": "^0.1.1",
17
    "@validatem/is-plain-object": "^0.1.1",
18
    "@validatem/remove-nullish-items": "^0.1.0",
19
    "@validatem/virtual-property": "^0.1.0",
20
    "@validatem/wrap-path": "^0.1.0",
21
    "default-value": "^1.0.0",
22
    "fromentries": "^1.2.0",
23
    "range": "^0.0.3"
24
  }
25
}

+ 1045 - 0
yarn.lock

@ -0,0 +1,1045 @@
1
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
# yarn lockfile v1
3
4
5
"@babel/code-frame@^7.0.0":
6
  version "7.8.3"
7
  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e"
8
  integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==
9
  dependencies:
10
    "@babel/highlight" "^7.8.3"
11
12
"@babel/highlight@^7.8.3":
13
  version "7.8.3"
14
  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797"
15
  integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==
16
  dependencies:
17
    chalk "^2.0.0"
18
    esutils "^2.0.2"
19
    js-tokens "^4.0.0"
20
21
"@joepie91/eslint-config@^1.1.0":
22
  version "1.1.0"
23
  resolved "https://registry.yarnpkg.com/@joepie91/eslint-config/-/eslint-config-1.1.0.tgz#9397e6ce0a010cb57dcf8aef8754d3a5ce0ae36a"
24
  integrity sha512-XliasRSUfOz1/bAvTBaUlCjWDbceCW4y1DnvFfW7Yw9p2FbNRR0w8WoPdTxTCjKuoZ7/OQMeBxIe2y9Qy6rbYw==
25
26
"@validatem/annotate-errors@^0.1.2":
27
  version "0.1.2"
28
  resolved "https://registry.yarnpkg.com/@validatem/annotate-errors/-/annotate-errors-0.1.2.tgz#fa9152bb30f4f42b69496b527e38f0c31ff605a9"
29
  integrity sha512-EuX7pzdYI/YpTmZcgdPG481Oi3elAg8JWh/LYXuE1h6MaZk3A8eP5DD33/l7EoKzrysn6y8nCsqNa1ngei562w==
30
  dependencies:
31
    "@validatem/match-validation-error" "^0.1.0"
32
33
"@validatem/any-property@^0.1.0":
34
  version "0.1.3"
35
  resolved "https://registry.yarnpkg.com/@validatem/any-property/-/any-property-0.1.3.tgz#fc7768c1922a8bacff9369ae48913672e5350f52"
36
  integrity sha512-jYWxif5ff9pccu7566LIQ/4+snlApXEJUimBywzAriBgS3r4eDBbz3oZFHuiPmhxNK/NNof5YUS+L6Sk3zaMfg==
37
  dependencies:
38
    "@validatem/annotate-errors" "^0.1.2"
39
    "@validatem/combinator" "^0.1.0"
40
    "@validatem/error" "^1.0.0"
41
    "@validatem/validation-result" "^0.1.1"
42
    "@validatem/virtual-property" "^0.1.0"
43
    default-value "^1.0.0"
44
45
"@validatem/combinator@^0.1.0", "@validatem/combinator@^0.1.2":
46
  version "0.1.2"
47
  resolved "https://registry.yarnpkg.com/@validatem/combinator/-/combinator-0.1.2.tgz#eab893d55f1643b9c6857eaf6ff7ed2a728e89ff"
48
  integrity sha512-vE8t1tNXknmN62FlN6LxQmA2c6TwVKZ+fl/Wit3H2unFdOhu7SZj2kRPGjAXdK/ARh/3svYfUBeD75pea0j1Sw==
49
50
"@validatem/core@^0.3.3":
51
  version "0.3.3"
52
  resolved "https://registry.yarnpkg.com/@validatem/core/-/core-0.3.3.tgz#f9d812ba75c073e3879b3afae8f5c8c356992717"
53
  integrity sha512-2rJdTwc/KlyjQtdn9uWgWYdqLOB3F47tV/Ew5XQ67bHabZhrF6xZF97B6I+C340HH0A7YW1tgNTnKsNh0PvhCg==
54
  dependencies:
55
    "@validatem/annotate-errors" "^0.1.2"
56
    "@validatem/any-property" "^0.1.0"
57
    "@validatem/error" "^1.0.0"
58
    "@validatem/is-plain-object" "^0.1.0"
59
    "@validatem/match-validation-error" "^0.1.0"
60
    "@validatem/match-versioned-special" "^0.1.0"
61
    "@validatem/match-virtual-property" "^0.1.0"
62
    "@validatem/normalize-rules" "^0.1.0"
63
    "@validatem/required" "^0.1.0"
64
    "@validatem/validation-result" "^0.1.1"
65
    assure-array "^1.0.0"
66
    create-error "^0.3.1"
67
    default-value "^1.0.0"
68
    flatten "^1.0.3"
69
    is-arguments "^1.0.4"
70
71
"@validatem/default-to@^0.1.0":
72
  version "0.1.0"
73
  resolved "https://registry.yarnpkg.com/@validatem/default-to/-/default-to-0.1.0.tgz#62766a3ca24d2f61a96c713bcb629a5b3c6427c5"
74
  integrity sha512-UE/mJ6ZcHFlBLUhX75PQHDRYf80GFFhB+vZfIcsEWduh7Nm6lTMDnCPj4MI+jd9E/A7HV5D1yCZhaRSwoWo4vg==
75
  dependencies:
76
    is-callable "^1.1.5"
77
78
"@validatem/error@^1.0.0":
79
  version "1.0.0"
80
  resolved "https://registry.yarnpkg.com/@validatem/error/-/error-1.0.0.tgz#a975904aa4c3e7618d89088a393567a5e1778340"
81
  integrity sha512-7M3tV4DhCuimuCRdC2L/topBByDjhzspzeQGNU0S4/mdn2aDNtESYE43K/2Kh/utCAhqXh2gyw89WYxy//t3fQ==
82
  dependencies:
83
    create-error "^0.3.1"
84
85
"@validatem/has-length-of@^0.1.0":
86
  version "0.1.0"
87
  resolved "https://registry.yarnpkg.com/@validatem/has-length-of/-/has-length-of-0.1.0.tgz#bc6fb0ff82af893586dd8ad4c414a2da97a4f8f5"
88
  integrity sha512-9BbsyR8ZWkoTcF2QfDSB3NbYmECB3ehUxoxeoJY5c/T5GE3Q7ap4ZwzQkkQPiu+2nQx/Whpp3SaAVbDkbZ6Oag==
89
  dependencies:
90
    "@validatem/error" "^1.0.0"
91
92
"@validatem/has-shape@^0.1.0":
93
  version "0.1.6"
94
  resolved "https://registry.yarnpkg.com/@validatem/has-shape/-/has-shape-0.1.6.tgz#5206f5938bc230ceb6eff1e3c571413027e70324"
95
  integrity sha512-ZcQ/y/qqxLKnAScqSr3GZh+tFzdHwRys0/zjFqMAqDZhm0T3rBrJvbpv8F2TXQJOdx91qDdpu67rvirob1iz7A==
96
  dependencies:
97
    "@validatem/annotate-errors" "^0.1.2"
98
    "@validatem/combinator" "^0.1.0"
99
    "@validatem/error" "^1.0.0"
100
    "@validatem/validation-result" "^0.1.1"
101
    array-union "^2.1.0"
102
    as-expression "^1.0.0"
103
    assure-array "^1.0.0"
104
    default-value "^1.0.0"
105
    flatten "^1.0.3"
106
107
"@validatem/is-array@^0.1.1":
108
  version "0.1.1"
109
  resolved "https://registry.yarnpkg.com/@validatem/is-array/-/is-array-0.1.1.tgz#fbe15ca8c97c30b622a5bbeb536d341e99cfc2c5"
110
  integrity sha512-XD3C+Nqfpnbb4oO//Ufodzvui7SsCIW/stxZ39dP/fyRsBHrdERinkFATH5HepegtDlWMQswm5m1XFRbQiP2oQ==
111
  dependencies:
112
    "@validatem/error" "^1.0.0"
113
114
"@validatem/is-plain-object@^0.1.0", "@validatem/is-plain-object@^0.1.1":
115
  version "0.1.1"
116
  resolved "https://registry.yarnpkg.com/@validatem/is-plain-object/-/is-plain-object-0.1.1.tgz#b7a3ef8ef960882c7c41e84ed709fa0bfb932e93"
117
  integrity sha512-aNGbNIbKRpYI0lRBczlTBbiA+nqN52ADAASdySKg2/QeSCVtYS4uOIeCNIJRAgXe/5sUnLTuL4pgq628uAl7Kw==
118
  dependencies:
119
    "@validatem/error" "^1.0.0"
120
    is-plain-obj "^2.1.0"
121
122
"@validatem/match-special@^0.1.0":
123
  version "0.1.0"
124
  resolved "https://registry.yarnpkg.com/@validatem/match-special/-/match-special-0.1.0.tgz#4e0c28f1aee5bf53c1ef30bbf8c755d4946ae0ff"
125
  integrity sha512-TFiq9Wk/1Hoja4PK85WwNYnwBXk3+Lgoj59ZIMxm2an1qmNYp8j+BnSvkKBflba451yIn6V1laU9NJf+/NYZgw==
126
127
"@validatem/match-validation-error@^0.1.0":
128
  version "0.1.0"
129
  resolved "https://registry.yarnpkg.com/@validatem/match-validation-error/-/match-validation-error-0.1.0.tgz#fa87f5f1836e7c1d9bf6b75b2addf0a5b21e4c1e"
130
  integrity sha512-6akGTk7DdulOreyqDiGdikwRSixQz/AlvARSX18dcWaTFc79KxCLouL2hyoFcor9IIUhu5RTY4/i756y4T1yxA==
131
  dependencies:
132
    "@validatem/match-versioned-special" "^0.1.0"
133
134
"@validatem/match-versioned-special@^0.1.0":
135
  version "0.1.0"
136
  resolved "https://registry.yarnpkg.com/@validatem/match-versioned-special/-/match-versioned-special-0.1.0.tgz#2eacc48debecdbbe7e3d02f0c0a665afaea9bedf"
137
  integrity sha512-xoOTY0bdA2ELj+ntcDVJ8YyMEFIJpjZ4HNPL9lGcbnRFwJBhQcHUAhUpZwkMxu02zH9wkNM1FvYGHxPz40745Q==
138
139
"@validatem/match-virtual-property@^0.1.0":
140
  version "0.1.0"
141
  resolved "https://registry.yarnpkg.com/@validatem/match-virtual-property/-/match-virtual-property-0.1.0.tgz#4de2de1075987b5f3b356d3f2bcf6c0be5b5fb83"
142
  integrity sha512-ssd3coFgwbLuqvZftLZTy3eHN0TFST8oTS2XTViQdXJPXVoJmwEKBpFhXgwnb5Ly1CE037R/KWpjhd1TP/56kQ==
143
144
"@validatem/normalize-rules@^0.1.0":
145
  version "0.1.2"
146
  resolved "https://registry.yarnpkg.com/@validatem/normalize-rules/-/normalize-rules-0.1.2.tgz#6529f17a6f36c6e2ae3ef285c59347c2ea208aa1"
147
  integrity sha512-IHc81Sy/W0OiCbmvE3kTB+5OPVJnXWHP2tTXvKO6hVH0qykclMvIPRGgZf1s4dLaeOLKdkkfKyO/pLTVyNCIbA==
148
  dependencies:
149
    "@validatem/has-shape" "^0.1.0"
150
    "@validatem/is-plain-object" "^0.1.0"
151
    "@validatem/match-special" "^0.1.0"
152
    assure-array "^1.0.0"
153
    default-value "^1.0.0"
154
    flatten "^1.0.3"
155
    is-plain-obj "^2.1.0"
156
157
"@validatem/remove-nullish-items@^0.1.0":
158
  version "0.1.0"
159
  resolved "https://registry.yarnpkg.com/@validatem/remove-nullish-items/-/remove-nullish-items-0.1.0.tgz#fe1a8b64d11276b506fae2bd2c41da4985a5b5ff"
160
  integrity sha512-cs4YSF47TA/gHnV5muSUUqGi5PwybP5ztu5SYnPKxQVTyubvcbrFat51nOvJ2PmUasyrIccoYMmATiviXkTi6g==
161
162
"@validatem/required@^0.1.0":
163
  version "0.1.1"
164
  resolved "https://registry.yarnpkg.com/@validatem/required/-/required-0.1.1.tgz#64f4a87333fc5955511634036b7f8948ed269170"
165
  integrity sha512-vI4NzLfay4RFAzp7xyU34PHb8sAo6w/3frrNh1EY9Xjnw2zxjY5oaxwmbFP1jVevBE6QQEnKogtzUHz/Zuvh6g==
166
167
"@validatem/validation-result@^0.1.1", "@validatem/validation-result@^0.1.2":
168
  version "0.1.2"
169
  resolved "https://registry.yarnpkg.com/@validatem/validation-result/-/validation-result-0.1.2.tgz#4e75cfd87305fc78f8d05ac84921a2c99a0348e0"
170
  integrity sha512-okmP8JarIwIgfpaVcvZGuQ1yOsLKT3Egt49Ynz6h1MAeGsP/bGHXkkXtbiWOVsk5Tzku5vDVFSrFnF+5IEHKxw==
171
  dependencies:
172
    default-value "^1.0.0"
173
174
"@validatem/virtual-property@^0.1.0":
175
  version "0.1.0"
176
  resolved "https://registry.yarnpkg.com/@validatem/virtual-property/-/virtual-property-0.1.0.tgz#880540dfd149f98ecf1095d93912e34443381fe4"
177
  integrity sha512-JUUvWtdqoSkOwlsl20oB3qFHYIL05a/TAfdY4AJcs55QeVTiX5iI1b8IoQW644sIWWooBuLv+XwoxjRsQFczlQ==
178
179
"@validatem/wrap-path@^0.1.0":
180
  version "0.1.0"
181
  resolved "https://registry.yarnpkg.com/@validatem/wrap-path/-/wrap-path-0.1.0.tgz#777998b62d3e74f2b2897c992dae9b3675161c33"
182
  integrity sha512-6hOqydnr4u8FA0iRv8fyXxsr64T99+w/XL/fixmsgN0uqulEIwGMxCre3y9YkFNcEtysyPHkQl0CrGPcASsZxw==
183
  dependencies:
184
    "@validatem/annotate-errors" "^0.1.2"
185
    "@validatem/combinator" "^0.1.2"
186
    "@validatem/validation-result" "^0.1.2"
187
188
acorn-jsx@^5.1.0:
189
  version "5.1.0"
190
  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384"
191
  integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==
192
193
acorn@^7.1.0:
194
  version "7.1.0"
195
  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c"
196
  integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==
197
198
ajv@^6.10.0, ajv@^6.10.2:
199
  version "6.11.0"
200
  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9"
201
  integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==
202
  dependencies:
203
    fast-deep-equal "^3.1.1"
204
    fast-json-stable-stringify "^2.0.0"
205
    json-schema-traverse "^0.4.1"
206
    uri-js "^4.2.2"
207
208
ansi-escapes@^4.2.1:
209
  version "4.3.0"
210
  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d"
211
  integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==
212
  dependencies:
213
    type-fest "^0.8.1"
214
215
ansi-regex@^4.1.0:
216
  version "4.1.0"
217
  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
218
  integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
219
220
ansi-regex@^5.0.0:
221
  version "5.0.0"
222
  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
223
  integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
224
225
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
226
  version "3.2.1"
227
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
228
  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
229
  dependencies:
230
    color-convert "^1.9.0"
231
232
argparse@^1.0.7:
233
  version "1.0.10"
234
  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
235
  integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
236
  dependencies:
237
    sprintf-js "~1.0.2"
238
239
array-union@^2.1.0:
240
  version "2.1.0"
241
  resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
242
  integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
243
244
as-expression@^1.0.0:
245
  version "1.0.0"
246
  resolved "https://registry.yarnpkg.com/as-expression/-/as-expression-1.0.0.tgz#7bc620ca4cb2fe0ee90d86729bd6add33b8fd831"
247
  integrity sha512-Iqh4GxNUfxbJdGn6b7/XMzc8m1Dz2ZHouBQ9DDTzyMRO3VPPIAXeoY/sucRxxxXKbUtzwzWZSN6jPR3zfpYHHA==
248
249
assure-array@^1.0.0:
250
  version "1.0.0"
251
  resolved "https://registry.yarnpkg.com/assure-array/-/assure-array-1.0.0.tgz#4f4ad16a87659d6200a4fb7103462033d216ec1f"
252
  integrity sha1-T0rRaodlnWIApPtxA0YgM9IW7B8=
253
254
astral-regex@^1.0.0:
255
  version "1.0.0"
256
  resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
257
  integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
258
259
balanced-match@^1.0.0:
260
  version "1.0.0"
261
  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
262
  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
263
264
brace-expansion@^1.1.7:
265
  version "1.1.11"
266
  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
267
  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
268
  dependencies:
269
    balanced-match "^1.0.0"
270
    concat-map "0.0.1"
271
272
callsites@^3.0.0:
273
  version "3.1.0"
274
  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
275
  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
276
277
chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2:
278
  version "2.4.2"
279
  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
280
  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
281
  dependencies:
282
    ansi-styles "^3.2.1"
283
    escape-string-regexp "^1.0.5"
284
    supports-color "^5.3.0"
285
286
chardet@^0.7.0:
287
  version "0.7.0"
288
  resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
289
  integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
290
291
cli-cursor@^3.1.0:
292
  version "3.1.0"
293
  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
294
  integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
295
  dependencies:
296
    restore-cursor "^3.1.0"
297
298
cli-width@^2.0.0:
299
  version "2.2.0"
300
  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
301
  integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
302
303
color-convert@^1.9.0:
304
  version "1.9.3"
305
  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
306
  integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
307
  dependencies:
308
    color-name "1.1.3"
309
310
color-name@1.1.3:
311
  version "1.1.3"
312
  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
313
  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
314
315
concat-map@0.0.1:
316
  version "0.0.1"
317
  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
318
  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
319
320
create-error@^0.3.1:
321
  version "0.3.1"
322
  resolved "https://registry.yarnpkg.com/create-error/-/create-error-0.3.1.tgz#69810245a629e654432bf04377360003a5351a23"
323
  integrity sha1-aYECRaYp5lRDK/BDdzYAA6U1GiM=
324
325
cross-spawn@^6.0.5:
326
  version "6.0.5"
327
  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
328
  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
329
  dependencies:
330
    nice-try "^1.0.4"
331
    path-key "^2.0.1"
332
    semver "^5.5.0"
333
    shebang-command "^1.2.0"
334
    which "^1.2.9"
335
336
debug@^4.0.1:
337
  version "4.1.1"
338
  resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
339
  integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
340
  dependencies:
341
    ms "^2.1.1"
342
343
deep-is@~0.1.3:
344
  version "0.1.3"
345
  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
346
  integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
347
348
default-value@^1.0.0:
349
  version "1.0.0"
350
  resolved "https://registry.yarnpkg.com/default-value/-/default-value-1.0.0.tgz#8c6f52a5a1193fe78fdc9f86eb71d16c9757c83a"
351
  integrity sha1-jG9SpaEZP+eP3J+G63HRbJdXyDo=
352
  dependencies:
353
    es6-promise-try "0.0.1"
354
355
doctrine@^3.0.0:
356
  version "3.0.0"
357
  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
358
  integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
359
  dependencies:
360
    esutils "^2.0.2"
361
362
emoji-regex@^7.0.1:
363
  version "7.0.3"
364
  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
365
  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
366
367
emoji-regex@^8.0.0:
368
  version "8.0.0"
369
  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
370
  integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
371
372
es6-promise-try@0.0.1:
373
  version "0.0.1"
374
  resolved "https://registry.yarnpkg.com/es6-promise-try/-/es6-promise-try-0.0.1.tgz#10f140dad27459cef949973e5d21a087f7274b20"
375
  integrity sha1-EPFA2tJ0Wc75SZc+XSGgh/cnSyA=
376
377
escape-string-regexp@^1.0.5:
378
  version "1.0.5"
379
  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
380
  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
381
382
eslint-scope@^5.0.0:
383
  version "5.0.0"
384
  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
385
  integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
386
  dependencies:
387
    esrecurse "^4.1.0"
388
    estraverse "^4.1.1"
389
390
eslint-utils@^1.4.3:
391
  version "1.4.3"
392
  resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
393
  integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
394
  dependencies:
395
    eslint-visitor-keys "^1.1.0"
396
397
eslint-visitor-keys@^1.1.0:
398
  version "1.1.0"
399
  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
400
  integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
401
402
eslint@^6.8.0:
403
  version "6.8.0"
404
  resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
405
  integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==
406
  dependencies:
407
    "@babel/code-frame" "^7.0.0"
408
    ajv "^6.10.0"
409
    chalk "^2.1.0"
410
    cross-spawn "^6.0.5"
411
    debug "^4.0.1"
412
    doctrine "^3.0.0"
413
    eslint-scope "^5.0.0"
414
    eslint-utils "^1.4.3"
415
    eslint-visitor-keys "^1.1.0"
416
    espree "^6.1.2"
417
    esquery "^1.0.1"
418
    esutils "^2.0.2"
419
    file-entry-cache "^5.0.1"
420
    functional-red-black-tree "^1.0.1"
421
    glob-parent "^5.0.0"
422
    globals "^12.1.0"
423
    ignore "^4.0.6"
424
    import-fresh "^3.0.0"
425
    imurmurhash "^0.1.4"
426
    inquirer "^7.0.0"
427
    is-glob "^4.0.0"
428
    js-yaml "^3.13.1"
429
    json-stable-stringify-without-jsonify "^1.0.1"
430
    levn "^0.3.0"
431
    lodash "^4.17.14"
432
    minimatch "^3.0.4"
433
    mkdirp "^0.5.1"
434
    natural-compare "^1.4.0"
435
    optionator "^0.8.3"
436
    progress "^2.0.0"
437
    regexpp "^2.0.1"
438
    semver "^6.1.2"
439
    strip-ansi "^5.2.0"
440
    strip-json-comments "^3.0.1"
441
    table "^5.2.3"
442
    text-table "^0.2.0"
443
    v8-compile-cache "^2.0.3"
444
445
espree@^6.1.2:
446
  version "6.1.2"
447
  resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d"
448
  integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==
449
  dependencies:
450
    acorn "^7.1.0"
451
    acorn-jsx "^5.1.0"
452
    eslint-visitor-keys "^1.1.0"
453
454
esprima@^4.0.0:
455
  version "4.0.1"
456
  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
457
  integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
458
459
esquery@^1.0.1:
460
  version "1.1.0"
461
  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48"
462
  integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==
463
  dependencies:
464
    estraverse "^4.0.0"
465
466
esrecurse@^4.1.0:
467
  version "4.2.1"
468
  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
469
  integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
470
  dependencies:
471
    estraverse "^4.1.0"
472
473
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
474
  version "4.3.0"
475
  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
476
  integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
477
478
esutils@^2.0.2:
479
  version "2.0.3"
480
  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
481
  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
482
483
external-editor@^3.0.3:
484
  version "3.1.0"
485
  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
486
  integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
487
  dependencies:
488
    chardet "^0.7.0"
489
    iconv-lite "^0.4.24"
490
    tmp "^0.0.33"
491
492
fast-deep-equal@^3.1.1:
493
  version "3.1.1"
494
  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
495
  integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
496
497
fast-json-stable-stringify@^2.0.0:
498
  version "2.1.0"
499
  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
500
  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
501
502
fast-levenshtein@~2.0.6:
503
  version "2.0.6"
504
  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
505
  integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
506
507
figures@^3.0.0:
508
  version "3.2.0"
509
  resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
510
  integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
511
  dependencies:
512
    escape-string-regexp "^1.0.5"
513
514
file-entry-cache@^5.0.1:
515
  version "5.0.1"
516
  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
517
  integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
518
  dependencies:
519
    flat-cache "^2.0.1"
520
521
flat-cache@^2.0.1:
522
  version "2.0.1"
523
  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
524
  integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
525
  dependencies:
526
    flatted "^2.0.0"
527
    rimraf "2.6.3"
528
    write "1.0.3"
529
530
flatted@^2.0.0:
531
  version "2.0.1"
532
  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
533
  integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
534
535
flatten@^1.0.3:
536
  version "1.0.3"
537
  resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b"
538
  integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
539
540
fromentries@^1.2.0:
541
  version "1.2.0"
542
  resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.2.0.tgz#e6aa06f240d6267f913cea422075ef88b63e7897"
543
  integrity sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==
544
545
fs.realpath@^1.0.0:
546
  version "1.0.0"
547
  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
548
  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
549
550
functional-red-black-tree@^1.0.1:
551
  version "1.0.1"
552
  resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
553
  integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
554
555
glob-parent@^5.0.0:
556
  version "5.1.0"
557
  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2"
558
  integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==
559
  dependencies:
560
    is-glob "^4.0.1"
561
562
glob@^7.1.3:
563
  version "7.1.6"
564
  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
565
  integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
566
  dependencies:
567
    fs.realpath "^1.0.0"
568
    inflight "^1.0.4"
569
    inherits "2"
570
    minimatch "^3.0.4"
571
    once "^1.3.0"
572
    path-is-absolute "^1.0.0"
573
574
globals@^12.1.0:
575
  version "12.3.0"
576
  resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13"
577
  integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==
578
  dependencies:
579
    type-fest "^0.8.1"
580
581
has-flag@^3.0.0:
582
  version "3.0.0"
583
  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
584
  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
585
586
iconv-lite@^0.4.24:
587
  version "0.4.24"
588
  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
589
  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
590
  dependencies:
591
    safer-buffer ">= 2.1.2 < 3"
592
593
ignore@^4.0.6:
594
  version "4.0.6"
595
  resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
596
  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
597
598
import-fresh@^3.0.0:
599
  version "3.2.1"
600
  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
601
  integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
602
  dependencies:
603
    parent-module "^1.0.0"
604
    resolve-from "^4.0.0"
605
606
imurmurhash@^0.1.4:
607
  version "0.1.4"
608
  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
609
  integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
610
611
inflight@^1.0.4:
612
  version "1.0.6"
613
  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
614
  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
615
  dependencies:
616
    once "^1.3.0"
617
    wrappy "1"
618
619
inherits@2:
620
  version "2.0.4"
621
  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
622
  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
623
624
inquirer@^7.0.0:
625
  version "7.0.4"
626
  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703"
627
  integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==
628
  dependencies:
629
    ansi-escapes "^4.2.1"
630
    chalk "^2.4.2"
631
    cli-cursor "^3.1.0"
632
    cli-width "^2.0.0"
633
    external-editor "^3.0.3"
634
    figures "^3.0.0"
635
    lodash "^4.17.15"
636
    mute-stream "0.0.8"
637
    run-async "^2.2.0"
638
    rxjs "^6.5.3"
639
    string-width "^4.1.0"
640
    strip-ansi "^5.1.0"
641
    through "^2.3.6"
642
643
is-arguments@^1.0.4:
644
  version "1.0.4"
645
  resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
646
  integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
647
648
is-callable@^1.1.5:
649
  version "1.2.0"
650
  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
651
  integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
652
653
is-extglob@^2.1.1:
654
  version "2.1.1"
655
  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
656
  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
657
658
is-fullwidth-code-point@^2.0.0:
659
  version "2.0.0"
660
  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
661
  integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
662
663
is-fullwidth-code-point@^3.0.0:
664
  version "3.0.0"
665
  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
666
  integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
667
668
is-glob@^4.0.0, is-glob@^4.0.1:
669
  version "4.0.1"
670
  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
671
  integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
672
  dependencies:
673
    is-extglob "^2.1.1"
674
675
is-plain-obj@^2.1.0:
676
  version "2.1.0"
677
  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
678
  integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
679
680
is-promise@^2.1.0:
681
  version "2.1.0"
682
  resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
683
  integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
684
685
isexe@^2.0.0:
686
  version "2.0.0"
687
  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
688
  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
689
690
js-tokens@^4.0.0:
691
  version "4.0.0"
692
  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
693
  integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
694
695
js-yaml@^3.13.1:
696
  version "3.13.1"
697
  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
698
  integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
699
  dependencies:
700
    argparse "^1.0.7"
701
    esprima "^4.0.0"
702
703
json-schema-traverse@^0.4.1:
704
  version "0.4.1"
705
  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
706
  integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
707
708
json-stable-stringify-without-jsonify@^1.0.1:
709
  version "1.0.1"
710
  resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
711
  integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
712
713
levn@^0.3.0, levn@~0.3.0:
714
  version "0.3.0"
715
  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
716
  integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
717
  dependencies:
718
    prelude-ls "~1.1.2"
719
    type-check "~0.3.2"
720
721
lodash@^4.17.14, lodash@^4.17.15:
722
  version "4.17.15"
723
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
724
  integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
725
726
mimic-fn@^2.1.0:
727
  version "2.1.0"
728
  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
729
  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
730
731
minimatch@^3.0.4:
732
  version "3.0.4"
733
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
734
  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
735
  dependencies:
736
    brace-expansion "^1.1.7"
737
738
minimist@0.0.8:
739
  version "0.0.8"
740
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
741
  integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
742
743
mkdirp@^0.5.1:
744
  version "0.5.1"
745
  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
746
  integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
747
  dependencies:
748
    minimist "0.0.8"
749
750
ms@^2.1.1:
751
  version "2.1.2"
752
  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
753
  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
754
755
mute-stream@0.0.8:
756
  version "0.0.8"
757
  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
758
  integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
759
760
natural-compare@^1.4.0:
761
  version "1.4.0"
762
  resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
763
  integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
764
765
nice-try@^1.0.4:
766
  version "1.0.5"
767
  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
768
  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
769
770
once@^1.3.0:
771
  version "1.4.0"
772
  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
773
  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
774
  dependencies:
775
    wrappy "1"
776
777
onetime@^5.1.0:
778
  version "5.1.0"
779
  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
780
  integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
781
  dependencies:
782
    mimic-fn "^2.1.0"
783
784
optionator@^0.8.3:
785
  version "0.8.3"
786
  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
787
  integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
788
  dependencies:
789
    deep-is "~0.1.3"
790
    fast-levenshtein "~2.0.6"
791
    levn "~0.3.0"
792
    prelude-ls "~1.1.2"
793
    type-check "~0.3.2"
794
    word-wrap "~1.2.3"
795
796
os-tmpdir@~1.0.2:
797
  version "1.0.2"
798
  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
799
  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
800
801
parent-module@^1.0.0:
802
  version "1.0.1"
803
  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
804
  integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
805
  dependencies:
806
    callsites "^3.0.0"
807
808
path-is-absolute@^1.0.0:
809
  version "1.0.1"
810
  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
811
  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
812
813
path-key@^2.0.1:
814
  version "2.0.1"
815
  resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
816
  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
817
818
prelude-ls@~1.1.2:
819
  version "1.1.2"
820
  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
821
  integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
822
823
progress@^2.0.0:
824
  version "2.0.3"
825
  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
826
  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
827
828
punycode@^2.1.0:
829
  version "2.1.1"
830
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
831
  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
832
833
range@^0.0.3:
834
  version "0.0.3"
835
  resolved "https://registry.yarnpkg.com/range/-/range-0.0.3.tgz#b5b8eb2463a516b624a563bd32b18fe89e70151b"
836
  integrity sha1-tbjrJGOlFrYkpWO9MrGP6J5wFRs=
837
838
regexpp@^2.0.1:
839
  version "2.0.1"
840
  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
841
  integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
842
843
resolve-from@^4.0.0:
844
  version "4.0.0"
845
  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
846
  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
847
848
restore-cursor@^3.1.0:
849
  version "3.1.0"
850
  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
851
  integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
852
  dependencies:
853
    onetime "^5.1.0"
854
    signal-exit "^3.0.2"
855
856
rimraf@2.6.3:
857
  version "2.6.3"
858
  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
859
  integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
860
  dependencies:
861
    glob "^7.1.3"
862
863
run-async@^2.2.0:
864
  version "2.3.0"
865
  resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
866
  integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
867
  dependencies:
868
    is-promise "^2.1.0"
869
870
rxjs@^6.5.3:
871
  version "6.5.4"
872
  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c"
873
  integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==
874
  dependencies:
875
    tslib "^1.9.0"
876
877
"safer-buffer@>= 2.1.2 < 3":
878
  version "2.1.2"
879
  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
880
  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
881
882
semver@^5.5.0:
883
  version "5.7.1"
884
  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
885
  integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
886
887
semver@^6.1.2:
888
  version "6.3.0"
889
  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
890
  integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
891
892
shebang-command@^1.2.0:
893
  version "1.2.0"
894
  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
895
  integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
896
  dependencies:
897
    shebang-regex "^1.0.0"
898
899
shebang-regex@^1.0.0:
900
  version "1.0.0"
901
  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
902
  integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
903
904
signal-exit@^3.0.2:
905
  version "3.0.2"
906
  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
907
  integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
908
909
slice-ansi@^2.1.0:
910
  version "2.1.0"
911
  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
912
  integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
913
  dependencies:
914
    ansi-styles "^3.2.0"
915
    astral-regex "^1.0.0"
916
    is-fullwidth-code-point "^2.0.0"
917
918
sprintf-js@~1.0.2:
919
  version "1.0.3"
920
  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
921
  integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
922
923
string-width@^3.0.0:
924
  version "3.1.0"
925
  resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
926
  integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
927
  dependencies:
928
    emoji-regex "^7.0.1"
929
    is-fullwidth-code-point "^2.0.0"
930
    strip-ansi "^5.1.0"
931
932
string-width@^4.1.0:
933
  version "4.2.0"
934
  resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
935
  integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
936
  dependencies:
937
    emoji-regex "^8.0.0"
938
    is-fullwidth-code-point "^3.0.0"
939
    strip-ansi "^6.0.0"
940
941
strip-ansi@^5.1.0, strip-ansi@^5.2.0:
942
  version "5.2.0"
943
  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
944
  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
945
  dependencies:
946
    ansi-regex "^4.1.0"
947
948
strip-ansi@^6.0.0:
949
  version "6.0.0"
950
  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
951
  integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
952
  dependencies:
953
    ansi-regex "^5.0.0"
954
955
strip-json-comments@^3.0.1:
956
  version "3.0.1"
957
  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
958
  integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
959
960
supports-color@^5.3.0:
961
  version "5.5.0"
962
  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
963
  integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
964
  dependencies:
965
    has-flag "^3.0.0"
966
967
table@^5.2.3:
968
  version "5.4.6"
969
  resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
970
  integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
971
  dependencies:
972
    ajv "^6.10.2"
973
    lodash "^4.17.14"
974
    slice-ansi "^2.1.0"
975
    string-width "^3.0.0"
976
977
text-table@^0.2.0:
978
  version "0.2.0"
979
  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
980
  integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
981
982
through@^2.3.6:
983
  version "2.3.8"
984
  resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
985
  integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
986
987
tmp@^0.0.33:
988
  version "0.0.33"
989
  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
990
  integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
991
  dependencies:
992
    os-tmpdir "~1.0.2"
993
994
tslib@^1.9.0:
995
  version "1.10.0"
996
  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
997
  integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
998
999
type-check@~0.3.2:
1000
  version "0.3.2"
1001
  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
1002
  integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
1003
  dependencies:
1004
    prelude-ls "~1.1.2"
1005
1006
type-fest@^0.8.1:
1007
  version "0.8.1"
1008
  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
1009
  integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
1010
1011
uri-js@^4.2.2:
1012
  version "4.2.2"
1013
  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
1014
  integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
1015
  dependencies:
1016
    punycode "^2.1.0"
1017
1018
v8-compile-cache@^2.0.3:
1019
  version "2.1.0"
1020
  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
1021
  integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
1022
1023
which@^1.2.9:
1024
  version "1.3.1"
1025
  resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1026
  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1027
  dependencies:
1028
    isexe "^2.0.0"
1029
1030
word-wrap@~1.2.3:
1031
  version "1.2.3"
1032
  resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
1033
  integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
1034
1035
wrappy@1:
1036
  version "1.0.2"
1037
  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1038
  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1039
1040
write@1.0.3:
1041
  version "1.0.3"
1042
  resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
1043
  integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
1044
  dependencies:
1045
    mkdirp "^0.5.1"