aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--package.json6
-rw-r--r--src/_contexts.scss6
-rw-r--r--src/_props.scss182
-rw-r--r--src/props-shortcodes.scss77
-rw-r--r--test/_props.scss166
-rw-r--r--yarn.lock286
7 files changed, 475 insertions, 250 deletions
diff --git a/README.md b/README.md
index 7c04922..f02f6a7 100644
--- a/README.md
+++ b/README.md
@@ -214,7 +214,7 @@ It's a very simple feature, but it makes managing large sets of structured data
214Example usage: 214Example usage:
215 215
216```scss 216```scss
217@include iro-props-save(( 217@include iro-props-store((
218 --accent: #f00, 218 --accent: #f00,
219 --accent-text: #fff, 219 --accent-text: #fff,
220 220
diff --git a/package.json b/package.json
index d4eb18b..c93a3b3 100644
--- a/package.json
+++ b/package.json
@@ -25,9 +25,9 @@
25 }, 25 },
26 "homepage": "https://git.vulpes.one/Feuerfuchs/iro-sass", 26 "homepage": "https://git.vulpes.one/Feuerfuchs/iro-sass",
27 "devDependencies": { 27 "devDependencies": {
28 "mocha": "^8.2.0", 28 "mocha": "^8.3.2",
29 "nodemon": "^2.0.6", 29 "nodemon": "^2.0.7",
30 "sass": "^1.28.0", 30 "sass": "^1.32.8",
31 "sass-lint": "^1.12.1", 31 "sass-lint": "^1.12.1",
32 "sass-true": "^6.0.1", 32 "sass-true": "^6.0.1",
33 "sassdoc": "^2.7.3" 33 "sassdoc": "^2.7.3"
diff --git a/src/_contexts.scss b/src/_contexts.scss
index 556fde3..9fe0e8c 100644
--- a/src/_contexts.scss
+++ b/src/_contexts.scss
@@ -124,9 +124,9 @@ $iro-context-stacks: ();
124 @error 'Context stack "#{inspect($stack-id)}" does not exist.'; 124 @error 'Context stack "#{inspect($stack-id)}" does not exist.';
125 } 125 }
126 126
127 $context: $id $data; 127 $context: $id $data;
128 $context-stack: map-get($iro-context-stacks, $stack-id); 128 $context-stack: map-get($iro-context-stacks, $stack-id);
129 $context-stack: append($context-stack, $context); 129 $context-stack: append($context-stack, $context);
130 $iro-context-stacks: map-merge($iro-context-stacks, ($stack-id: $context-stack)) !global; 130 $iro-context-stacks: map-merge($iro-context-stacks, ($stack-id: $context-stack)) !global;
131 131
132 @return $context; 132 @return $context;
diff --git a/src/_props.scss b/src/_props.scss
index 86530f7..86a2215 100644
--- a/src/_props.scss
+++ b/src/_props.scss
@@ -41,26 +41,71 @@ $iro-props-default-tree: 'default' !default;
41/// 41///
42$iro-props-trees: (); 42$iro-props-trees: ();
43 43
44///
45/// Default context name used for the namespace context.
46///
47/// @type string
48///
49$iro-props-namespace-context-id: 'namespace' !default;
50
51///
52/// Declare a namespace, meaning that all variables declared and accessed.
53///
54/// @param {string} $name - Name of the namespace
55///
56@mixin iro-props-namespace($name) {
57 $key: '--#{$name}';
58
59 $ns-key: iro-props-get-ns-key();
60
61 @if $ns-key != null {
62 $key: append($ns-key, $key);
63 } @else {
64 $key: ($key);
65 }
66
67 @include iro-context-push($iro-props-namespace-context-id, 'namespace', (
68 'name': $name,
69 'key': $key
70 ));
71
72 @content;
73
74 @include iro-context-pop($iro-props-namespace-context-id);
75}
76
77///
78/// Get the current namespace name.
79///
80@function iro-props-ns-name() {
81 $noop: iro-context-assert-stack-must-contain($iro-props-namespace-context-id, 'namespace');
82
83 $data: nth(iro-context-get($iro-props-namespace-context-id, 'namespace'), 2);
84 $name: map-get($data, 'name');
85
86 @return $name;
87}
88
44/// 89///
45/// Save a property tree. If a tree with the sane name already exists, the trees 90/// Save a property tree. If a tree with the sane name already exists, the trees
46/// will be merged. 91/// will be merged.
47/// 92///
48/// @param {map} $map - Map containing properties 93/// @param {map} $map - Map containing properties
49/// @param {string} $tree [$iro-props-default-tree] - ID the map is saved as 94/// @param {string} $tree [$iro-props-default-tree] - ID the map is saved as
50/// @param {bool} $merge [false] - If a tree named $tree already exists and this value is set to true, they will be merged. Otherwise an error will be emitted. 95/// @param {bool} $merge [false] - If a tree named $tree already exists and this value is set to true, they will be merged. Otherwise an error will be emitted.
51/// 96///
52@mixin iro-props-save($map, $tree: $iro-props-default-tree, $merge: false) { 97@mixin iro-props-store($map, $tree: $iro-props-default-tree, $merge: false, $global: false) {
53 $noop: iro-props-save($map, $tree, $merge); 98 $noop: iro-props-store($map, $tree, $merge, $global);
54} 99}
55 100
56/// 101///
57/// Save a property tree. 102/// Save a property tree.
58/// 103///
59/// @param {map} $map - Map containing properties 104/// @param {map} $map - Map containing properties
60/// @param {string} $tree [$iro-props-default-tree] - ID the map is saved as 105/// @param {string} $tree [$iro-props-default-tree] - ID the map is saved as
61/// @param {bool} $merge [false] - If a tree named $tree already exists and this value is set to true, they will be merged. Otherwise an error will be emitted. 106/// @param {bool} $merge [false] - If a tree named $tree already exists and this value is set to true, they will be merged. Otherwise an error will be emitted.
62/// 107///
63@function iro-props-save($map, $tree: $iro-props-default-tree, $merge: false) { 108@function iro-props-store($map, $tree: $iro-props-default-tree, $merge: false, $global: false) {
64 $prop-map: null; 109 $prop-map: null;
65 110
66 @if $iro-props-enforce-double-dashes { 111 @if $iro-props-enforce-double-dashes {
@@ -69,6 +114,14 @@ $iro-props-trees: ();
69 } 114 }
70 } 115 }
71 116
117 @if not $global {
118 $ns-key: iro-props-get-ns-key();
119
120 @if $ns-key != null {
121 $map: ($ns-key: $map)
122 }
123 }
124
72 @if map-has-key($iro-props-trees, $tree) { 125 @if map-has-key($iro-props-trees, $tree) {
73 @if $merge { 126 @if $merge {
74 $map: iro-map-merge-recursive(map-get($iro-props-trees, $tree), $map); 127 $map: iro-map-merge-recursive(map-get($iro-props-trees, $tree), $map);
@@ -87,18 +140,18 @@ $iro-props-trees: ();
87/// 140///
88/// @param {string} $tree [$iro-props-default-tree] - ID of the tree to be deleted 141/// @param {string} $tree [$iro-props-default-tree] - ID of the tree to be deleted
89/// 142///
90@mixin iro-props-delete($tree: $iro-props-default-tree) { 143@mixin iro-props-clear($tree: $iro-props-default-tree) {
91 $noop: iro-props-delete($tree); 144 $noop: iro-props-clear($tree);
92} 145}
93 146
94/// 147///
95/// Unset a property tree. 148/// Delete a property tree.
96/// 149///
97/// @param {string} $tree [$iro-props-default-tree] - ID of the tree to be deleted 150/// @param {string} $tree [$iro-props-default-tree] - ID of the tree to be deleted
98/// 151///
99/// @throw If the property tree does not exist 152/// @throw If the property tree does not exist
100/// 153///
101@function iro-props-delete($tree: $iro-props-default-tree) { 154@function iro-props-clear($tree: $iro-props-default-tree) {
102 @if not map-has-key($iro-props-trees, $tree) { 155 @if not map-has-key($iro-props-trees, $tree) {
103 @error 'Property tree "#{inspect($tree)}" does not exist.'; 156 @error 'Property tree "#{inspect($tree)}" does not exist.';
104 } 157 }
@@ -111,33 +164,50 @@ $iro-props-trees: ();
111/// 164///
112/// Access a whole property or a subsection (i.e. value) of it. 165/// Access a whole property or a subsection (i.e. value) of it.
113/// 166///
114/// @param {string | list} $key [null] - Key of the property to read. If this is a list of keys, the map will be traversed in that order. 167/// @param {string | list} $key [null] - Key of the property to read. If this is a list of keys, the map will be traversed in that order.
115/// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use 168/// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use
116/// @param {any} $default [null] - Default value to return of no match was found. If null, this function will throw an error instead. 169/// @param {any} $default [null] - Default value to return of no match was found. If null, this function will throw an error instead.
117/// 170///
118/// @return {any} Value assigned to property or $default 171/// @return {any} Value assigned to property or $default
119/// 172///
120/// @throw If there was no match for $key and $default is null 173/// @throw If there was no match for $key and $default is null
121/// 174///
122@function iro-props-get($key: (), $tree: $iro-props-default-tree, $default: null) { 175@function iro-props-get($key: (), $tree: $iro-props-default-tree, $default: null, $global: false) {
123 @if not map-has-key($iro-props-trees, $tree) { 176 @if not map-has-key($iro-props-trees, $tree) {
124 @error 'Unknown tree "#{$tree}".'; 177 @error 'Unknown tree "#{$tree}".';
125 } 178 }
126 179
127 $result: map-get($iro-props-trees, $tree); 180 $result: map-get($iro-props-trees, $tree);
128 181
182 @if not $global {
183 $ns-key: iro-props-get-ns-key();
184
185 @if $ns-key != null {
186 $orig-key: $key;
187 $key: $ns-key;
188
189 @if type-of($orig-key) == list {
190 @each $subkey in $orig-key {
191 $key: append($key, $subkey);
192 }
193 } @else {
194 $key: append($key, $orig-key);
195 }
196 }
197 }
198
129 @if type-of($key) == list { 199 @if type-of($key) == list {
130 $stop: false; 200 $stop: false;
131 201
132 @each $k in $key { 202 @each $k in $key {
133 @if map-has-key($result, $k) and not $stop { 203 @if not $stop and map-has-key($result, $k) {
134 $result: map-get($result, $k); 204 $result: map-get($result, $k);
135 205
136 @if type-of($result) == list and nth($result, 1) == 'iro-prop-ref' { 206 @if type-of($result) == list and nth($result, 1) == 'iro-prop-ref' {
137 @if length($result) == 2 { 207 @if length($result) == 2 {
138 $result: iro-props-get($tree: nth($result, 2)); 208 $result: iro-props-get($tree: nth($result, 2), $global: true);
139 } @else { 209 } @else {
140 $result: iro-props-get(nth($result, 3), nth($result, 2)); 210 $result: iro-props-get(nth($result, 3), nth($result, 2), $global: true);
141 } 211 }
142 } 212 }
143 } @else { 213 } @else {
@@ -153,9 +223,9 @@ $iro-props-trees: ();
153 223
154 @if type-of($result) == list and nth($result, 1) == 'iro-prop-ref' { 224 @if type-of($result) == list and nth($result, 1) == 'iro-prop-ref' {
155 @if length($result) == 2 { 225 @if length($result) == 2 {
156 $result: iro-props-get($tree: nth($result, 2)); 226 $result: iro-props-get($tree: nth($result, 2), $global: true);
157 } @else { 227 } @else {
158 $result: iro-props-get(nth($result, 3), nth($result, 2)); 228 $result: iro-props-get(nth($result, 3), nth($result, 2), $global: true);
159 } 229 }
160 } 230 }
161 } 231 }
@@ -180,11 +250,28 @@ $iro-props-trees: ();
180/// 250///
181/// @return {string} var() 251/// @return {string} var()
182/// 252///
183@function iro-props-get-native($key, $tree: null, $default: null) { 253@function iro-props-get-native($key, $tree: null, $default: null, $global: false) {
184 @if $tree != null { 254 @if $tree != null {
185 $noop: iro-props-get($key, $tree, $default); 255 $noop: iro-props-get($key, $tree, $default);
186 } 256 }
187 257
258 @if not $global {
259 $ns-key: iro-props-get-ns-key();
260
261 @if $ns-key != null {
262 $orig-key: $key;
263 $key: $ns-key;
264
265 @if type-of($orig-key) == list {
266 @each $subkey in $orig-key {
267 $key: append($key, $subkey);
268 }
269 } @else {
270 $key: append($key, $orig-key);
271 }
272 }
273 }
274
188 $native-var: ''; 275 $native-var: '';
189 276
190 @if type-of($key) == list { 277 @if type-of($key) == list {
@@ -206,9 +293,9 @@ $iro-props-trees: ();
206/// Generate assignments for native CSS custom properties with the values from the specified tree. 293/// Generate assignments for native CSS custom properties with the values from the specified tree.
207/// 294///
208/// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use 295/// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use
209/// @param {string} $root [()] - Sub-tree to use for assignment 296/// @param {string} $root [()] - Sub-tree to use for assignment
210/// 297///
211@mixin iro-props-assign-native($tree: $iro-props-default-tree, $root: (), $skip: (), $prefix: '') { 298@mixin iro-props-assign-native($tree: $iro-props-default-tree, $root: (), $skip: (), $prefix: '', $global: false) {
212 $map: iro-props-get($root, $tree); 299 $map: iro-props-get($root, $tree);
213 $map: map-remove($map, $skip...); 300 $map: map-remove($map, $skip...);
214 301
@@ -216,6 +303,14 @@ $iro-props-trees: ();
216 $prefix: iro-str-implode($prefix) 303 $prefix: iro-str-implode($prefix)
217 } 304 }
218 305
306 @if not $global {
307 $ns-key: iro-props-get-ns-key();
308
309 @if $ns-key != null {
310 $prefix: $prefix + iro-str-implode($ns-key);
311 }
312 }
313
219 @include iro-props-assign-native-internal($map, $prefix); 314 @include iro-props-assign-native-internal($map, $prefix);
220} 315}
221 316
@@ -270,16 +365,55 @@ $iro-props-trees: ();
270/// Generate a reference to another tree. Dereferencing is lazy, so you may specify a tree that hasn't been created yet. 365/// Generate a reference to another tree. Dereferencing is lazy, so you may specify a tree that hasn't been created yet.
271/// 366///
272/// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use 367/// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use
273/// @param {string | list} $key - Key of the property to read. If this is a list of keys, the map will be traversed in that order. 368/// @param {string | list} $key - Key of the property to read. If this is a list of keys, the map will be traversed in that order.
274/// 369///
275/// @return {list} A special list that let's Ignis know that this is a lazy value. 370/// @return {list} A special list that let's Ignis know that this is a lazy value.
276/// 371///
277/// @throw If there was no match for $key and $default is null 372/// @throw If there was no match for $key and $default is null
278/// 373///
279@function iro-props-ref($tree: $iro-props-default-tree, $key: null) { 374@function iro-props-ref($tree: $iro-props-default-tree, $key: null, $global: false) {
375 @if not $global {
376 $ns-key: iro-props-get-ns-key();
377
378 @if $ns-key != null {
379 $orig-key: $key;
380 $key: $ns-key;
381
382 @if $orig-key != null {
383 @if type-of($orig-key) == list {
384 @each $subkey in $orig-key {
385 $key: append($key, $subkey);
386 }
387 } @else {
388 $key: append($key, $orig-key);
389 }
390 }
391 }
392 }
393
280 @if $key == null { 394 @if $key == null {
281 @return ('iro-prop-ref' $tree); 395 @return ('iro-prop-ref' $tree);
282 } @else { 396 } @else {
283 @return ('iro-prop-ref' $tree $key); 397 @return ('iro-prop-ref' $tree $key);
284 } 398 }
285} 399}
400
401///
402/// Get the current namespace key.
403///
404/// @access private
405///
406@function iro-props-get-ns-key() {
407 $ctx: iro-context-get($iro-props-namespace-context-id, 'namespace');
408
409 @if $ctx == null {
410 @return null;
411 }
412
413 $data: nth($ctx, 2);
414 $key: map-get($data, 'key');
415
416 @return $key;
417}
418
419@include iro-context-stack-create($iro-props-namespace-context-id);
diff --git a/src/props-shortcodes.scss b/src/props-shortcodes.scss
new file mode 100644
index 0000000..2c678a7
--- /dev/null
+++ b/src/props-shortcodes.scss
@@ -0,0 +1,77 @@
1////
2/// Shorter version of the prop-related functions. Useful to reduce clutter.
3///
4/// @group Props shortcodes
5///
6/// @access public
7////
8
9///
10/// @alias iro-props-namespace
11///
12@mixin namespace($name) {
13 @include iro-props-namespace($name);
14}
15
16///
17/// @alias iro-props-ns-name
18///
19@function namespace() {
20 @return iro-props-ns-name();
21}
22
23///
24/// @alias iro-props-store
25///
26@function store($map, $tree: $iro-props-default-tree, $merge: false, $global: false) {
27 @return iro-props-store($map, $tree, $merge, $global);
28}
29
30///
31/// @alias iro-props-store
32///
33@mixin store($map, $tree: $iro-props-default-tree, $merge: false, $global: false) {
34 @include iro-props-store($map, $tree, $merge, $global);
35}
36
37///
38/// @alias iro-props-clear
39///
40@mixin clear($tree: $iro-props-default-tree) {
41 @include iro-props-clear($tree);
42}
43
44///
45/// @alias iro-props-clear
46///
47@function clear($tree: $iro-props-default-tree) {
48 @return iro-props-clear($tree);
49}
50
51///
52/// @alias iro-props-get
53///
54@function prop($key: (), $tree: $iro-props-default-tree, $default: null, $global: false) {
55 @return iro-props-get($key, $tree, $default, $global);
56}
57
58///
59/// @alias iro-props-get-native
60///
61@function n-prop($key, $tree: null, $default: null, $global: false) {
62 @return iro-props-get-native($key, $tree, $default, $global);
63}
64
65///
66/// @alias iro-props-assign-native
67///
68@mixin n-assign($tree: $iro-props-default-tree, $root: (), $skip: (), $prefix: '', $global: false) {
69 @include iro-props-assign-native($tree, $root, $skip, $prefix, $global);
70}
71
72///
73/// @alias iro-props-ref
74///
75@function ref($tree: $iro-props-default-tree, $key: null, $global: false) {
76 @return iro-props-ref($tree, $key, $global);
77}
diff --git a/test/_props.scss b/test/_props.scss
index 4e0a5b4..982fc2f 100644
--- a/test/_props.scss
+++ b/test/_props.scss
@@ -36,16 +36,12 @@
36 --primary: ( 36 --primary: (
37 --background: #f00, 37 --background: #f00,
38 --text: #fff 38 --text: #fff
39 ),
40 --default: (
41 --background: #ddd,
42 --text: #000
43 ) 39 )
44 ) 40 )
45 ); 41 );
46 42
47 @include assert-equal(iro-props-save($map), null, 'Save default tree'); 43 @include assert-equal(iro-props-store($map), null, 'Save default tree');
48 @include assert-equal(iro-props-delete(), null, 'Delete default tree'); 44 @include assert-equal(iro-props-clear(), null, 'Delete default tree');
49 } 45 }
50 46
51 @include it('Read') { 47 @include it('Read') {
@@ -56,10 +52,6 @@
56 --primary: ( 52 --primary: (
57 --background: #f00, 53 --background: #f00,
58 --text: #fff 54 --text: #fff
59 ),
60 --default: (
61 --background: #ddd,
62 --text: #000
63 ) 55 )
64 ) 56 )
65 ); 57 );
@@ -71,35 +63,52 @@
71 --primary: ( 63 --primary: (
72 --background: #f00, 64 --background: #f00,
73 --text: #fff 65 --text: #fff
74 ),
75 --default: (
76 --background: #444,
77 --text: #fff
78 ) 66 )
79 ) 67 )
80 ); 68 );
81 69
82 @include assert-equal(iro-props-save($map1), null, 'Save default tree'); 70 $map3: (
83 @include assert-equal(iro-props-save($map2, 'test'), null, 'Save "test" tree'); 71 --background: #666,
72 --text: #222,
73 --buttons: (
74 --primary: (
75 --background: #0f0,
76 --text: #000
77 )
78 )
79 );
80
81 @include assert-equal(iro-props-store($map1), null, 'Save default tree');
82 @include assert-equal(iro-props-store($map2, 'test'), null, 'Save "test" tree');
83
84 @include iro-props-namespace('ns') {
85 @include assert-equal(iro-props-store($map3, 'namespaced'), null, 'Save "namespaced" tree');
86 }
84 87
85 @include assert-equal(iro-props-get(--background), map-get($map1, --background), 'Get --background in default'); 88 @include assert-equal(iro-props-get(--background), map-get($map1, --background), 'Get --background in default');
86 @include assert-equal(iro-props-get(--buttons --primary --background), map-get(map-get(map-get($map1, --buttons), --primary), --background), 'Get --buttons --primary --background in default'); 89 @include assert-equal(iro-props-get(--buttons --primary --background), map-get(map-get(map-get($map1, --buttons), --primary), --background), 'Get --buttons --primary --background in default');
87 @include assert-equal(iro-props-get(--buttons --default --text), map-get(map-get(map-get($map1, --buttons), --default), --text), 'Get --buttons --default --text in default');
88 @include assert-equal(iro-props-get(--box, $default: false), false, 'Get nonexistent in default'); 90 @include assert-equal(iro-props-get(--box, $default: false), false, 'Get nonexistent in default');
89 91
90 @include assert-equal(iro-props-get(--background, 'test'), map-get($map2, --background), 'Get --background in "test"'); 92 @include assert-equal(iro-props-get(--background, 'test'), map-get($map2, --background), 'Get --background in "test"');
91 @include assert-equal(iro-props-get(--buttons --primary --background, 'test'), map-get(map-get(map-get($map2, --buttons), --primary), --background), 'Get --buttons --primary --background in "test"'); 93 @include assert-equal(iro-props-get(--buttons --primary --background, 'test'), map-get(map-get(map-get($map2, --buttons), --primary), --background), 'Get --buttons --primary --background in "test"');
92 @include assert-equal(iro-props-get(--buttons --default --text, 'test'), map-get(map-get(map-get($map2, --buttons), --default), --text), 'Get --buttons --default --text in "test"');
93 @include assert-equal(iro-props-get(--box, 'test', $default: false), false, 'Get nonexistent in "test"'); 94 @include assert-equal(iro-props-get(--box, 'test', $default: false), false, 'Get nonexistent in "test"');
95
96 @include assert-equal(iro-props-get(--background, 'namespaced', $default: false), false, 'Get --background in "namespaced"');
97 @include assert-equal(iro-props-get(--ns --background, 'namespaced'), map-get($map3, --background), 'Get --ns --background in "namespaced"');
98 @include iro-props-namespace('ns') {
99 @include assert-equal(iro-props-get(--background, 'namespaced'), map-get($map3, --background), 'Get namespaced --background in "namespaced"');
100 @include assert-equal(iro-props-get(--buttons --primary --background, 'namespaced'), map-get(map-get(map-get($map3, --buttons), --primary), --background), 'Get namespaced --buttons --primary --background in "namespaced"');
101 @include assert-equal(iro-props-get(--box, 'namespaced', $default: false), false, 'Get namespaced nonexistent in "namespaced"');
102 }
94 103
95 @include assert-equal(iro-props-delete(), null, 'Delete default tree'); 104 @include assert-equal(iro-props-clear(), null, 'Delete default tree');
96 @include assert-equal(iro-props-delete('test'), null, 'Delete "test" tree'); 105 @include assert-equal(iro-props-clear('test'), null, 'Delete "test" tree');
106 @include assert-equal(iro-props-clear('namespaced'), null, 'Delete "namespaced" tree');
97 } 107 }
98 108
99 @include it('Overwrite') { 109 @include it('Overwrite') {
100 $map1: ( 110 $map1: (
101 --background: #fff, 111 --background: #fff,
102 --text: #000,
103 --buttons: ( 112 --buttons: (
104 --primary: ( 113 --primary: (
105 --background: #f00, 114 --background: #f00,
@@ -110,54 +119,43 @@
110 119
111 $map2: ( 120 $map2: (
112 --background: #eee, 121 --background: #eee,
122 --text: #000,
113 --buttons: ( 123 --buttons: (
114 --primary: ( 124 --primary: (
115 --background: #00f 125 --background: #00f
116 ),
117 --default: (
118 --background: #444,
119 --text: #fff
120 ) 126 )
121 ) 127 )
122 ); 128 );
123 129
124 @include assert-equal(iro-props-save($map1), null, 'Save default tree'); 130 @include assert-equal(iro-props-store($map1), null, 'Save default tree');
125 131 @include assert-equal(iro-props-store($map2, $merge: true), null, 'Overwrite default tree');
126 @include assert-equal(iro-props-get(), $map1, 'Before update, get whole map');
127 @include assert-equal(iro-props-get(--background), map-get($map1, --background), 'Before update, get --background');
128 @include assert-equal(iro-props-get(--text), map-get($map1, --text), 'Before update, get --text');
129 @include assert-equal(iro-props-get(--buttons --primary --background), map-get(map-get(map-get($map1, --buttons), --primary), --background), 'Before update, get --buttons --primary --background');
130 @include assert-equal(iro-props-get(--buttons --default --text, $default: false), false, 'Before update, get --buttons --default --text (returns default)');
131
132 @include assert-equal(iro-props-save($map2, $merge: true), null, 'Overwrite default tree');
133 132
134 @include assert-equal(iro-props-get(), iro-map-merge-recursive($map1, $map2), 'After update, get whole map'); 133 @include assert-equal(iro-props-get(), iro-map-merge-recursive($map1, $map2), 'After update, get whole map');
135 @include assert-equal(iro-props-get(--background), map-get($map2, --background), 'After update, get --background'); 134 @include assert-equal(iro-props-get(--background), map-get($map2, --background), 'After update, get --background');
136 @include assert-equal(iro-props-get(--text), map-get($map1, --text), 'After update, get --text'); 135 @include assert-equal(iro-props-get(--text), map-get($map2, --text), 'After update, get --text');
137 @include assert-equal(iro-props-get(--buttons --primary --background), map-get(map-get(map-get($map2, --buttons), --primary), --background), 'After update, get --buttons --primary --background'); 136 @include assert-equal(iro-props-get(--buttons --primary --text), map-get(map-get(map-get($map1, --buttons), --primary), --text), 'After update, get --buttons --primary --text');
138 @include assert-equal(iro-props-get(--buttons --default --text), map-get(map-get(map-get($map2, --buttons), --default), --text), 'After update, get --buttons --default --text');
139 137
140 @include assert-equal(iro-props-delete(), null, 'Delete default tree'); 138 @include assert-equal(iro-props-clear(), null, 'Delete default tree');
141 } 139 }
142 140
143 @include it('Native assignment') { 141 @include it('Native assignment') {
144 @include assert('Simple') { 142 $map: (
145 $map: ( 143 --background: #fff,
146 --background: #fff, 144 --text: #000,
147 --text: #000, 145 --buttons: (
148 --buttons: ( 146 --primary: (
149 --primary: ( 147 --background: #f00,
150 --background: #f00, 148 --text: #fff
151 --text: #fff 149 ),
152 ), 150 --default: (
153 --default: ( 151 --background: #ddd,
154 --background: #ddd, 152 --text: #000
155 --text: #000
156 )
157 ) 153 )
158 ); 154 )
155 );
159 156
160 @include iro-props-save($map); 157 @include assert('Simple') {
158 @include iro-props-store($map);
161 159
162 @include output { 160 @include output {
163 @include iro-props-assign-native; 161 @include iro-props-assign-native;
@@ -172,26 +170,11 @@
172 --buttons--default--text: #{map-get(map-get(map-get($map, --buttons), --default), --text)}; 170 --buttons--default--text: #{map-get(map-get(map-get($map, --buttons), --default), --text)};
173 } 171 }
174 172
175 @include iro-props-delete; 173 @include iro-props-clear;
176 } 174 }
177 175
178 @include assert('Filtered') { 176 @include assert('Filtered') {
179 $map: ( 177 @include iro-props-store($map);
180 --background: #fff,
181 --text: #000,
182 --buttons: (
183 --primary: (
184 --background: #f00,
185 --text: #fff
186 ),
187 --default: (
188 --background: #ddd,
189 --text: #000
190 )
191 )
192 );
193
194 @include iro-props-save($map);
195 178
196 @include output { 179 @include output {
197 @include iro-props-assign-native($skip: --buttons); 180 @include iro-props-assign-native($skip: --buttons);
@@ -202,7 +185,28 @@
202 --text: #{map-get($map, --text)}; 185 --text: #{map-get($map, --text)};
203 } 186 }
204 187
205 @include iro-props-delete; 188 @include iro-props-clear;
189 }
190
191 @include assert('Namespaced') {
192 @include iro-props-namespace('ns') {
193 @include iro-props-store($map);
194 }
195
196 @include output {
197 @include iro-props-assign-native;
198 }
199
200 @include expect {
201 --ns--background: #{map-get($map, --background)};
202 --ns--text: #{map-get($map, --text)};
203 --ns--buttons--primary--background: #{map-get(map-get(map-get($map, --buttons), --primary), --background)};
204 --ns--buttons--primary--text: #{map-get(map-get(map-get($map, --buttons), --primary), --text)};
205 --ns--buttons--default--background: #{map-get(map-get(map-get($map, --buttons), --default), --background)};
206 --ns--buttons--default--text: #{map-get(map-get(map-get($map, --buttons), --default), --text)};
207 }
208
209 @include iro-props-clear;
206 } 210 }
207 } 211 }
208 212
@@ -222,13 +226,17 @@
222 ) 226 )
223 ); 227 );
224 228
225 @include assert-equal(iro-props-save($map), null, 'Save default tree'); 229 @include assert-equal(iro-props-store($map), null, 'Save default tree');
226 230
227 @include assert-equal(iro-props-get-native(--background), var(--background), 'Get --background'); 231 @include assert-equal(iro-props-get-native(--background), var(--background), 'Get --background');
228 @include assert-equal(iro-props-get-native(--buttons --primary --text), var(--buttons--primary--text), 'Get --buttons --primary --text'); 232 @include assert-equal(iro-props-get-native(--buttons --primary --text), var(--buttons--primary--text), 'Get --buttons --primary --text');
229 @include assert-equal(iro-props-get-native(--buttons --secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get --buttons --secondary --text with default'); 233 @include assert-equal(iro-props-get-native(--buttons --secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get --buttons --secondary --text with default');
234 @include iro-props-namespace('buttons') {
235 @include assert-equal(iro-props-get-native(--primary --text), var(--buttons--primary--text), 'Get via namespace "buttons" --primary --text');
236 @include assert-equal(iro-props-get-native(--secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get via namespace "buttons" --secondary --text with default');
237 }
230 238
231 @include assert-equal(iro-props-delete(), null, 'Delete default tree'); 239 @include assert-equal(iro-props-clear(), null, 'Delete default tree');
232 } 240 }
233 241
234 @include it('References') { 242 @include it('References') {
@@ -253,8 +261,8 @@
253 ) 261 )
254 ); 262 );
255 263
256 @include assert-equal(iro-props-save($map1), null, 'Save default tree'); 264 @include assert-equal(iro-props-store($map1), null, 'Save default tree');
257 @include assert-equal(iro-props-save($map2, 'second'), null, 'Save "second" tree'); 265 @include assert-equal(iro-props-store($map2, 'second'), null, 'Save "second" tree');
258 266
259 @include assert-equal(iro-props-get(--buttons --primary --background, 'second'), map-get($map1, --background), 'Get referenced value'); 267 @include assert-equal(iro-props-get(--buttons --primary --background, 'second'), map-get($map1, --background), 'Get referenced value');
260 @include assert-equal(iro-props-get-native(--buttons --primary --background, 'second'), var(--buttons--primary--background), 'Get referenced value, native'); 268 @include assert-equal(iro-props-get-native(--buttons --primary --background, 'second'), var(--buttons--primary--background), 'Get referenced value, native');
@@ -276,7 +284,7 @@
276 } 284 }
277 } 285 }
278 286
279 @include assert-equal(iro-props-delete(), null, 'Delete default tree'); 287 @include assert-equal(iro-props-clear(), null, 'Delete default tree');
280 @include assert-equal(iro-props-delete('second'), null, 'Delete "second" tree'); 288 @include assert-equal(iro-props-clear('second'), null, 'Delete "second" tree');
281 } 289 }
282} 290}
diff --git a/yarn.lock b/yarn.lock
index e8623cd..70cbe9a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -96,12 +96,19 @@ ansi-styles@^2.2.1:
96 version "2.2.1" 96 version "2.2.1"
97 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 97 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
98 98
99ansi-styles@^3.2.0, ansi-styles@^3.2.1: 99ansi-styles@^3.2.1:
100 version "3.2.1" 100 version "3.2.1"
101 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 101 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
102 dependencies: 102 dependencies:
103 color-convert "^1.9.0" 103 color-convert "^1.9.0"
104 104
105ansi-styles@^4.0.0, ansi-styles@^4.2.1:
106 version "4.3.0"
107 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
108 integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
109 dependencies:
110 color-convert "^2.0.1"
111
105ansi-styles@^4.1.0: 112ansi-styles@^4.1.0:
106 version "4.2.1" 113 version "4.2.1"
107 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 114 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
@@ -110,13 +117,6 @@ ansi-styles@^4.1.0:
110 "@types/color-name" "^1.1.1" 117 "@types/color-name" "^1.1.1"
111 color-convert "^2.0.1" 118 color-convert "^2.0.1"
112 119
113ansi-styles@^4.2.1:
114 version "4.3.0"
115 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
116 integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
117 dependencies:
118 color-convert "^2.0.1"
119
120anymatch@^2.0.0: 120anymatch@^2.0.0:
121 version "2.0.0" 121 version "2.0.0"
122 resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 122 resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
@@ -156,6 +156,11 @@ argparse@^1.0.7:
156 dependencies: 156 dependencies:
157 sprintf-js "~1.0.2" 157 sprintf-js "~1.0.2"
158 158
159argparse@^2.0.1:
160 version "2.0.1"
161 resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
162 integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
163
159arr-diff@^4.0.0: 164arr-diff@^4.0.0:
160 version "4.0.0" 165 version "4.0.0"
161 resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 166 resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -353,7 +358,7 @@ camelcase@^2.0.1:
353 version "2.1.1" 358 version "2.1.1"
354 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 359 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
355 360
356camelcase@^5.0.0, camelcase@^5.3.1: 361camelcase@^5.3.1:
357 version "5.3.1" 362 version "5.3.1"
358 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 363 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
359 integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 364 integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
@@ -406,7 +411,22 @@ chalk@^4.0.0, chalk@^4.1.0:
406 ansi-styles "^4.1.0" 411 ansi-styles "^4.1.0"
407 supports-color "^7.1.0" 412 supports-color "^7.1.0"
408 413
409chokidar@3.4.3, "chokidar@>=2.0.0 <4.0.0": 414chokidar@3.5.1:
415 version "3.5.1"
416 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
417 integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
418 dependencies:
419 anymatch "~3.1.1"
420 braces "~3.0.2"
421 glob-parent "~5.1.0"
422 is-binary-path "~2.1.0"
423 is-glob "~4.0.1"
424 normalize-path "~3.0.0"
425 readdirp "~3.5.0"
426 optionalDependencies:
427 fsevents "~2.3.1"
428
429"chokidar@>=2.0.0 <4.0.0":
410 version "3.4.3" 430 version "3.4.3"
411 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" 431 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b"
412 integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== 432 integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==
@@ -511,14 +531,14 @@ cliui@^3.0.3:
511 strip-ansi "^3.0.1" 531 strip-ansi "^3.0.1"
512 wrap-ansi "^2.0.0" 532 wrap-ansi "^2.0.0"
513 533
514cliui@^5.0.0: 534cliui@^7.0.2:
515 version "5.0.0" 535 version "7.0.4"
516 resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 536 resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
517 integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 537 integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
518 dependencies: 538 dependencies:
519 string-width "^3.1.0" 539 string-width "^4.2.0"
520 strip-ansi "^5.2.0" 540 strip-ansi "^6.0.0"
521 wrap-ansi "^5.1.0" 541 wrap-ansi "^7.0.0"
522 542
523clone-buffer@^1.0.0: 543clone-buffer@^1.0.0:
524 version "1.0.0" 544 version "1.0.0"
@@ -705,10 +725,10 @@ dargs@^4.0.0:
705 dependencies: 725 dependencies:
706 number-is-nan "^1.0.0" 726 number-is-nan "^1.0.0"
707 727
708debug@4.2.0: 728debug@4.3.1:
709 version "4.2.0" 729 version "4.3.1"
710 resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" 730 resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
711 integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== 731 integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
712 dependencies: 732 dependencies:
713 ms "2.1.2" 733 ms "2.1.2"
714 734
@@ -725,7 +745,7 @@ debug@^3.2.6:
725 dependencies: 745 dependencies:
726 ms "^2.1.1" 746 ms "^2.1.1"
727 747
728decamelize@^1.1.1, decamelize@^1.2.0: 748decamelize@^1.1.1:
729 version "1.2.0" 749 version "1.2.0"
730 resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 750 resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
731 integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 751 integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -805,10 +825,10 @@ detect-libc@^1.0.2:
805 version "1.0.3" 825 version "1.0.3"
806 resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 826 resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
807 827
808diff@4.0.2: 828diff@5.0.0:
809 version "4.0.2" 829 version "5.0.0"
810 resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 830 resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
811 integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 831 integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
812 832
813docopt@^0.6.1: 833docopt@^0.6.1:
814 version "0.6.2" 834 version "0.6.2"
@@ -941,6 +961,11 @@ es6-weak-map@^2.0.1:
941 es6-iterator "^2.0.1" 961 es6-iterator "^2.0.1"
942 es6-symbol "^3.1.1" 962 es6-symbol "^3.1.1"
943 963
964escalade@^3.1.1:
965 version "3.1.1"
966 resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
967 integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
968
944escape-goat@^2.0.0: 969escape-goat@^2.0.0:
945 version "2.1.1" 970 version "2.1.1"
946 resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 971 resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
@@ -1132,13 +1157,6 @@ find-up@5.0.0:
1132 locate-path "^6.0.0" 1157 locate-path "^6.0.0"
1133 path-exists "^4.0.0" 1158 path-exists "^4.0.0"
1134 1159
1135find-up@^3.0.0:
1136 version "3.0.0"
1137 resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
1138 integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
1139 dependencies:
1140 locate-path "^3.0.0"
1141
1142flat-cache@^1.2.1: 1160flat-cache@^1.2.1:
1143 version "1.3.0" 1161 version "1.3.0"
1144 resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" 1162 resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481"
@@ -1223,6 +1241,11 @@ fsevents@~2.1.2:
1223 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" 1241 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805"
1224 integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== 1242 integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==
1225 1243
1244fsevents@~2.3.1:
1245 version "2.3.2"
1246 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
1247 integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
1248
1226function-bind@^1.1.1: 1249function-bind@^1.1.1:
1227 version "1.1.1" 1250 version "1.1.1"
1228 resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1251 resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@@ -1251,7 +1274,7 @@ generate-object-property@^1.1.0:
1251 dependencies: 1274 dependencies:
1252 is-property "^1.0.0" 1275 is-property "^1.0.0"
1253 1276
1254get-caller-file@^2.0.1: 1277get-caller-file@^2.0.5:
1255 version "2.0.5" 1278 version "2.0.5"
1256 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1279 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1257 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1280 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
@@ -1829,7 +1852,14 @@ isobject@^3.0.0, isobject@^3.0.1:
1829 version "3.0.1" 1852 version "3.0.1"
1830 resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1853 resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1831 1854
1832js-yaml@3.14.0, js-yaml@^3.14.0: 1855js-yaml@4.0.0:
1856 version "4.0.0"
1857 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f"
1858 integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==
1859 dependencies:
1860 argparse "^2.0.1"
1861
1862js-yaml@^3.14.0:
1833 version "3.14.0" 1863 version "3.14.0"
1834 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 1864 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
1835 integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 1865 integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
@@ -1939,14 +1969,6 @@ levn@^0.3.0, levn@~0.3.0:
1939 prelude-ls "~1.1.2" 1969 prelude-ls "~1.1.2"
1940 type-check "~0.3.2" 1970 type-check "~0.3.2"
1941 1971
1942locate-path@^3.0.0:
1943 version "3.0.0"
1944 resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
1945 integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
1946 dependencies:
1947 p-locate "^3.0.0"
1948 path-exists "^3.0.0"
1949
1950locate-path@^6.0.0: 1972locate-path@^6.0.0:
1951 version "6.0.0" 1973 version "6.0.0"
1952 resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1974 resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
@@ -2227,35 +2249,35 @@ mkdirp@^1.0.4:
2227 resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 2249 resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
2228 integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 2250 integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
2229 2251
2230mocha@^8.2.0: 2252mocha@^8.3.2:
2231 version "8.2.0" 2253 version "8.3.2"
2232 resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.2.0.tgz#f8aa79110b4b5a6580c65d4dd8083c425282624e" 2254 resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.3.2.tgz#53406f195fa86fbdebe71f8b1c6fb23221d69fcc"
2233 integrity sha512-lEWEMq2LMfNJMKeuEwb5UELi+OgFDollXaytR5ggQcHpzG3NP/R7rvixAvF+9/lLsTWhWG+4yD2M70GsM06nxw== 2255 integrity sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==
2234 dependencies: 2256 dependencies:
2235 "@ungap/promise-all-settled" "1.1.2" 2257 "@ungap/promise-all-settled" "1.1.2"
2236 ansi-colors "4.1.1" 2258 ansi-colors "4.1.1"
2237 browser-stdout "1.3.1" 2259 browser-stdout "1.3.1"
2238 chokidar "3.4.3" 2260 chokidar "3.5.1"
2239 debug "4.2.0" 2261 debug "4.3.1"
2240 diff "4.0.2" 2262 diff "5.0.0"
2241 escape-string-regexp "4.0.0" 2263 escape-string-regexp "4.0.0"
2242 find-up "5.0.0" 2264 find-up "5.0.0"
2243 glob "7.1.6" 2265 glob "7.1.6"
2244 growl "1.10.5" 2266 growl "1.10.5"
2245 he "1.2.0" 2267 he "1.2.0"
2246 js-yaml "3.14.0" 2268 js-yaml "4.0.0"
2247 log-symbols "4.0.0" 2269 log-symbols "4.0.0"
2248 minimatch "3.0.4" 2270 minimatch "3.0.4"
2249 ms "2.1.2" 2271 ms "2.1.3"
2250 nanoid "3.1.12" 2272 nanoid "3.1.20"
2251 serialize-javascript "5.0.1" 2273 serialize-javascript "5.0.1"
2252 strip-json-comments "3.1.1" 2274 strip-json-comments "3.1.1"
2253 supports-color "7.2.0" 2275 supports-color "8.1.1"
2254 which "2.0.2" 2276 which "2.0.2"
2255 wide-align "1.1.3" 2277 wide-align "1.1.3"
2256 workerpool "6.0.2" 2278 workerpool "6.1.0"
2257 yargs "13.3.2" 2279 yargs "16.2.0"
2258 yargs-parser "13.1.2" 2280 yargs-parser "20.2.4"
2259 yargs-unparser "2.0.0" 2281 yargs-unparser "2.0.0"
2260 2282
2261ms@2.0.0: 2283ms@2.0.0:
@@ -2267,6 +2289,11 @@ ms@2.1.2:
2267 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2289 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
2268 integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2290 integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
2269 2291
2292ms@2.1.3:
2293 version "2.1.3"
2294 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
2295 integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
2296
2270ms@^2.1.1: 2297ms@^2.1.1:
2271 version "2.1.1" 2298 version "2.1.1"
2272 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 2299 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
@@ -2288,10 +2315,10 @@ nan@^2.9.2:
2288 version "2.10.0" 2315 version "2.10.0"
2289 resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" 2316 resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
2290 2317
2291nanoid@3.1.12: 2318nanoid@3.1.20:
2292 version "3.1.12" 2319 version "3.1.20"
2293 resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" 2320 resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788"
2294 integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== 2321 integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==
2295 2322
2296nanomatch@^1.2.9: 2323nanomatch@^1.2.9:
2297 version "1.2.13" 2324 version "1.2.13"
@@ -2338,10 +2365,10 @@ node-pre-gyp@^0.10.0:
2338 semver "^5.3.0" 2365 semver "^5.3.0"
2339 tar "^4" 2366 tar "^4"
2340 2367
2341nodemon@^2.0.6: 2368nodemon@^2.0.7:
2342 version "2.0.6" 2369 version "2.0.7"
2343 resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.6.tgz#1abe1937b463aaf62f0d52e2b7eaadf28cc2240d" 2370 resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32"
2344 integrity sha512-4I3YDSKXg6ltYpcnZeHompqac4E6JeAMpGm8tJnB9Y3T0ehasLa4139dJOcCrB93HHrUMsCrKtoAlXTqT5n4AQ== 2371 integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==
2345 dependencies: 2372 dependencies:
2346 chokidar "^3.2.2" 2373 chokidar "^3.2.2"
2347 debug "^3.2.6" 2374 debug "^3.2.6"
@@ -2522,13 +2549,6 @@ p-cancelable@^1.0.0:
2522 resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 2549 resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
2523 integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 2550 integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
2524 2551
2525p-limit@^2.0.0:
2526 version "2.3.0"
2527 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
2528 integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
2529 dependencies:
2530 p-try "^2.0.0"
2531
2532p-limit@^3.0.2: 2552p-limit@^3.0.2:
2533 version "3.0.2" 2553 version "3.0.2"
2534 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" 2554 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe"
@@ -2536,13 +2556,6 @@ p-limit@^3.0.2:
2536 dependencies: 2556 dependencies:
2537 p-try "^2.0.0" 2557 p-try "^2.0.0"
2538 2558
2539p-locate@^3.0.0:
2540 version "3.0.0"
2541 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
2542 integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
2543 dependencies:
2544 p-limit "^2.0.0"
2545
2546p-locate@^5.0.0: 2559p-locate@^5.0.0:
2547 version "5.0.0" 2560 version "5.0.0"
2548 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 2561 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
@@ -2579,11 +2592,6 @@ path-dirname@^1.0.0:
2579 version "1.0.2" 2592 version "1.0.2"
2580 resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" 2593 resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
2581 2594
2582path-exists@^3.0.0:
2583 version "3.0.0"
2584 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
2585 integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
2586
2587path-exists@^4.0.0: 2595path-exists@^4.0.0:
2588 version "4.0.0" 2596 version "4.0.0"
2589 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2597 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
@@ -2864,11 +2872,6 @@ require-directory@^2.1.1:
2864 version "2.1.1" 2872 version "2.1.1"
2865 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2873 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
2866 2874
2867require-main-filename@^2.0.0:
2868 version "2.0.0"
2869 resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
2870 integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
2871
2872require-uncached@^1.0.2: 2875require-uncached@^1.0.2:
2873 version "1.0.3" 2876 version "1.0.3"
2874 resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 2877 resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
@@ -3005,10 +3008,10 @@ sass-true@^6.0.1:
3005 css "^3.0.0" 3008 css "^3.0.0"
3006 lodash "^4.17.19" 3009 lodash "^4.17.19"
3007 3010
3008sass@^1.28.0: 3011sass@^1.32.8:
3009 version "1.28.0" 3012 version "1.32.8"
3010 resolved "https://registry.yarnpkg.com/sass/-/sass-1.28.0.tgz#546f1308ff74cc4ec2ad735fd35dc18bc3f51f72" 3013 resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.8.tgz#f16a9abd8dc530add8834e506878a2808c037bdc"
3011 integrity sha512-9FWX/0wuE1KxwfiP02chZhHaPzu6adpx9+wGch7WMOuHy5npOo0UapRI3FNSHva2CczaYJu2yNUBN8cCSqHz/A== 3014 integrity sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==
3012 dependencies: 3015 dependencies:
3013 chokidar ">=2.0.0 <4.0.0" 3016 chokidar ">=2.0.0 <4.0.0"
3014 3017
@@ -3107,7 +3110,7 @@ serialize-javascript@5.0.1:
3107 dependencies: 3110 dependencies:
3108 randombytes "^2.1.0" 3111 randombytes "^2.1.0"
3109 3112
3110set-blocking@^2.0.0, set-blocking@~2.0.0: 3113set-blocking@~2.0.0:
3111 version "2.0.0" 3114 version "2.0.0"
3112 resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 3115 resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
3113 3116
@@ -3235,7 +3238,7 @@ string-width@^1.0.1:
3235 is-fullwidth-code-point "^2.0.0" 3238 is-fullwidth-code-point "^2.0.0"
3236 strip-ansi "^4.0.0" 3239 strip-ansi "^4.0.0"
3237 3240
3238string-width@^3.0.0, string-width@^3.1.0: 3241string-width@^3.0.0:
3239 version "3.1.0" 3242 version "3.1.0"
3240 resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 3243 resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
3241 integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 3244 integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
@@ -3253,6 +3256,15 @@ string-width@^4.0.0, string-width@^4.1.0:
3253 is-fullwidth-code-point "^3.0.0" 3256 is-fullwidth-code-point "^3.0.0"
3254 strip-ansi "^6.0.0" 3257 strip-ansi "^6.0.0"
3255 3258
3259string-width@^4.2.0:
3260 version "4.2.2"
3261 resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
3262 integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
3263 dependencies:
3264 emoji-regex "^8.0.0"
3265 is-fullwidth-code-point "^3.0.0"
3266 strip-ansi "^6.0.0"
3267
3256string_decoder@^1.1.1: 3268string_decoder@^1.1.1:
3257 version "1.3.0" 3269 version "1.3.0"
3258 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 3270 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -3288,7 +3300,7 @@ strip-ansi@^4.0.0:
3288 dependencies: 3300 dependencies:
3289 ansi-regex "^3.0.0" 3301 ansi-regex "^3.0.0"
3290 3302
3291strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 3303strip-ansi@^5.1.0:
3292 version "5.2.0" 3304 version "5.2.0"
3293 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 3305 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
3294 integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 3306 integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
@@ -3329,10 +3341,10 @@ strip-json-comments@~2.0.1:
3329 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 3341 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
3330 integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 3342 integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
3331 3343
3332supports-color@7.2.0: 3344supports-color@8.1.1:
3333 version "7.2.0" 3345 version "8.1.1"
3334 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 3346 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
3335 integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 3347 integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
3336 dependencies: 3348 dependencies:
3337 has-flag "^4.0.0" 3349 has-flag "^4.0.0"
3338 3350
@@ -3690,11 +3702,6 @@ vinyl@^2.0.0:
3690 remove-trailing-separator "^1.0.1" 3702 remove-trailing-separator "^1.0.1"
3691 replace-ext "^1.0.0" 3703 replace-ext "^1.0.0"
3692 3704
3693which-module@^2.0.0:
3694 version "2.0.0"
3695 resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
3696 integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
3697
3698which@2.0.2: 3705which@2.0.2:
3699 version "2.0.2" 3706 version "2.0.2"
3700 resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 3707 resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
@@ -3731,10 +3738,10 @@ wordwrap@~1.0.0:
3731 version "1.0.0" 3738 version "1.0.0"
3732 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 3739 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
3733 3740
3734workerpool@6.0.2: 3741workerpool@6.1.0:
3735 version "6.0.2" 3742 version "6.1.0"
3736 resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.2.tgz#e241b43d8d033f1beb52c7851069456039d1d438" 3743 resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b"
3737 integrity sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q== 3744 integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==
3738 3745
3739wrap-ansi@^2.0.0: 3746wrap-ansi@^2.0.0:
3740 version "2.1.0" 3747 version "2.1.0"
@@ -3743,14 +3750,14 @@ wrap-ansi@^2.0.0:
3743 string-width "^1.0.1" 3750 string-width "^1.0.1"
3744 strip-ansi "^3.0.1" 3751 strip-ansi "^3.0.1"
3745 3752
3746wrap-ansi@^5.1.0: 3753wrap-ansi@^7.0.0:
3747 version "5.1.0" 3754 version "7.0.0"
3748 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 3755 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
3749 integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 3756 integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
3750 dependencies: 3757 dependencies:
3751 ansi-styles "^3.2.0" 3758 ansi-styles "^4.0.0"
3752 string-width "^3.0.0" 3759 string-width "^4.1.0"
3753 strip-ansi "^5.0.0" 3760 strip-ansi "^6.0.0"
3754 3761
3755wrappy@1: 3762wrappy@1:
3756 version "1.0.2" 3763 version "1.0.2"
@@ -3785,22 +3792,24 @@ y18n@^3.2.0:
3785 version "3.2.1" 3792 version "3.2.1"
3786 resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 3793 resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
3787 3794
3788y18n@^4.0.0: 3795y18n@^5.0.5:
3789 version "4.0.0" 3796 version "5.0.5"
3790 resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 3797 resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18"
3791 integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 3798 integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==
3792 3799
3793yallist@^3.0.0, yallist@^3.0.2: 3800yallist@^3.0.0, yallist@^3.0.2:
3794 version "3.0.2" 3801 version "3.0.2"
3795 resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" 3802 resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
3796 3803
3797yargs-parser@13.1.2, yargs-parser@^13.1.2: 3804yargs-parser@20.2.4:
3798 version "13.1.2" 3805 version "20.2.4"
3799 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 3806 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
3800 integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 3807 integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
3801 dependencies: 3808
3802 camelcase "^5.0.0" 3809yargs-parser@^20.2.2:
3803 decamelize "^1.2.0" 3810 version "20.2.7"
3811 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a"
3812 integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==
3804 3813
3805yargs-unparser@2.0.0: 3814yargs-unparser@2.0.0:
3806 version "2.0.0" 3815 version "2.0.0"
@@ -3812,21 +3821,18 @@ yargs-unparser@2.0.0:
3812 flat "^5.0.2" 3821 flat "^5.0.2"
3813 is-plain-obj "^2.1.0" 3822 is-plain-obj "^2.1.0"
3814 3823
3815yargs@13.3.2: 3824yargs@16.2.0:
3816 version "13.3.2" 3825 version "16.2.0"
3817 resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 3826 resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
3818 integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 3827 integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
3819 dependencies: 3828 dependencies:
3820 cliui "^5.0.0" 3829 cliui "^7.0.2"
3821 find-up "^3.0.0" 3830 escalade "^3.1.1"
3822 get-caller-file "^2.0.1" 3831 get-caller-file "^2.0.5"
3823 require-directory "^2.1.1" 3832 require-directory "^2.1.1"
3824 require-main-filename "^2.0.0" 3833 string-width "^4.2.0"
3825 set-blocking "^2.0.0" 3834 y18n "^5.0.5"
3826 string-width "^3.0.0" 3835 yargs-parser "^20.2.2"
3827 which-module "^2.0.0"
3828 y18n "^4.0.0"
3829 yargs-parser "^13.1.2"
3830 3836
3831yargs@^3.32.0: 3837yargs@^3.32.0:
3832 version "3.32.0" 3838 version "3.32.0"