From 8f2ce6e4491d630a35dca9612daedf95b4a2954b Mon Sep 17 00:00:00 2001 From: Volpeon Date: Wed, 17 Mar 2021 17:32:14 +0100 Subject: Added namespaces and shortcodes for property trees --- README.md | 2 +- package.json | 6 +- src/_contexts.scss | 6 +- src/_props.scss | 182 +++++++++++++++++++++++++---- src/props-shortcodes.scss | 77 +++++++++++++ test/_props.scss | 166 ++++++++++++++------------- yarn.lock | 286 +++++++++++++++++++++++----------------------- 7 files changed, 475 insertions(+), 250 deletions(-) create mode 100644 src/props-shortcodes.scss 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 Example usage: ```scss -@include iro-props-save(( +@include iro-props-store(( --accent: #f00, --accent-text: #fff, diff --git a/package.json b/package.json index d4eb18b..c93a3b3 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,9 @@ }, "homepage": "https://git.vulpes.one/Feuerfuchs/iro-sass", "devDependencies": { - "mocha": "^8.2.0", - "nodemon": "^2.0.6", - "sass": "^1.28.0", + "mocha": "^8.3.2", + "nodemon": "^2.0.7", + "sass": "^1.32.8", "sass-lint": "^1.12.1", "sass-true": "^6.0.1", "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: (); @error 'Context stack "#{inspect($stack-id)}" does not exist.'; } - $context: $id $data; - $context-stack: map-get($iro-context-stacks, $stack-id); - $context-stack: append($context-stack, $context); + $context: $id $data; + $context-stack: map-get($iro-context-stacks, $stack-id); + $context-stack: append($context-stack, $context); $iro-context-stacks: map-merge($iro-context-stacks, ($stack-id: $context-stack)) !global; @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; /// $iro-props-trees: (); +/// +/// Default context name used for the namespace context. +/// +/// @type string +/// +$iro-props-namespace-context-id: 'namespace' !default; + +/// +/// Declare a namespace, meaning that all variables declared and accessed. +/// +/// @param {string} $name - Name of the namespace +/// +@mixin iro-props-namespace($name) { + $key: '--#{$name}'; + + $ns-key: iro-props-get-ns-key(); + + @if $ns-key != null { + $key: append($ns-key, $key); + } @else { + $key: ($key); + } + + @include iro-context-push($iro-props-namespace-context-id, 'namespace', ( + 'name': $name, + 'key': $key + )); + + @content; + + @include iro-context-pop($iro-props-namespace-context-id); +} + +/// +/// Get the current namespace name. +/// +@function iro-props-ns-name() { + $noop: iro-context-assert-stack-must-contain($iro-props-namespace-context-id, 'namespace'); + + $data: nth(iro-context-get($iro-props-namespace-context-id, 'namespace'), 2); + $name: map-get($data, 'name'); + + @return $name; +} + /// /// Save a property tree. If a tree with the sane name already exists, the trees /// will be merged. /// -/// @param {map} $map - Map containing properties +/// @param {map} $map - Map containing properties /// @param {string} $tree [$iro-props-default-tree] - ID the map is saved as -/// @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. +/// @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. /// -@mixin iro-props-save($map, $tree: $iro-props-default-tree, $merge: false) { - $noop: iro-props-save($map, $tree, $merge); +@mixin iro-props-store($map, $tree: $iro-props-default-tree, $merge: false, $global: false) { + $noop: iro-props-store($map, $tree, $merge, $global); } /// /// Save a property tree. /// -/// @param {map} $map - Map containing properties +/// @param {map} $map - Map containing properties /// @param {string} $tree [$iro-props-default-tree] - ID the map is saved as -/// @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. +/// @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. /// -@function iro-props-save($map, $tree: $iro-props-default-tree, $merge: false) { +@function iro-props-store($map, $tree: $iro-props-default-tree, $merge: false, $global: false) { $prop-map: null; @if $iro-props-enforce-double-dashes { @@ -69,6 +114,14 @@ $iro-props-trees: (); } } + @if not $global { + $ns-key: iro-props-get-ns-key(); + + @if $ns-key != null { + $map: ($ns-key: $map) + } + } + @if map-has-key($iro-props-trees, $tree) { @if $merge { $map: iro-map-merge-recursive(map-get($iro-props-trees, $tree), $map); @@ -87,18 +140,18 @@ $iro-props-trees: (); /// /// @param {string} $tree [$iro-props-default-tree] - ID of the tree to be deleted /// -@mixin iro-props-delete($tree: $iro-props-default-tree) { - $noop: iro-props-delete($tree); +@mixin iro-props-clear($tree: $iro-props-default-tree) { + $noop: iro-props-clear($tree); } /// -/// Unset a property tree. +/// Delete a property tree. /// /// @param {string} $tree [$iro-props-default-tree] - ID of the tree to be deleted /// /// @throw If the property tree does not exist /// -@function iro-props-delete($tree: $iro-props-default-tree) { +@function iro-props-clear($tree: $iro-props-default-tree) { @if not map-has-key($iro-props-trees, $tree) { @error 'Property tree "#{inspect($tree)}" does not exist.'; } @@ -111,33 +164,50 @@ $iro-props-trees: (); /// /// Access a whole property or a subsection (i.e. value) of it. /// -/// @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. +/// @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. /// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use -/// @param {any} $default [null] - Default value to return of no match was found. If null, this function will throw an error instead. +/// @param {any} $default [null] - Default value to return of no match was found. If null, this function will throw an error instead. /// /// @return {any} Value assigned to property or $default /// /// @throw If there was no match for $key and $default is null /// -@function iro-props-get($key: (), $tree: $iro-props-default-tree, $default: null) { +@function iro-props-get($key: (), $tree: $iro-props-default-tree, $default: null, $global: false) { @if not map-has-key($iro-props-trees, $tree) { @error 'Unknown tree "#{$tree}".'; } $result: map-get($iro-props-trees, $tree); + @if not $global { + $ns-key: iro-props-get-ns-key(); + + @if $ns-key != null { + $orig-key: $key; + $key: $ns-key; + + @if type-of($orig-key) == list { + @each $subkey in $orig-key { + $key: append($key, $subkey); + } + } @else { + $key: append($key, $orig-key); + } + } + } + @if type-of($key) == list { $stop: false; @each $k in $key { - @if map-has-key($result, $k) and not $stop { + @if not $stop and map-has-key($result, $k) { $result: map-get($result, $k); @if type-of($result) == list and nth($result, 1) == 'iro-prop-ref' { @if length($result) == 2 { - $result: iro-props-get($tree: nth($result, 2)); + $result: iro-props-get($tree: nth($result, 2), $global: true); } @else { - $result: iro-props-get(nth($result, 3), nth($result, 2)); + $result: iro-props-get(nth($result, 3), nth($result, 2), $global: true); } } } @else { @@ -153,9 +223,9 @@ $iro-props-trees: (); @if type-of($result) == list and nth($result, 1) == 'iro-prop-ref' { @if length($result) == 2 { - $result: iro-props-get($tree: nth($result, 2)); + $result: iro-props-get($tree: nth($result, 2), $global: true); } @else { - $result: iro-props-get(nth($result, 3), nth($result, 2)); + $result: iro-props-get(nth($result, 3), nth($result, 2), $global: true); } } } @@ -180,11 +250,28 @@ $iro-props-trees: (); /// /// @return {string} var() /// -@function iro-props-get-native($key, $tree: null, $default: null) { +@function iro-props-get-native($key, $tree: null, $default: null, $global: false) { @if $tree != null { $noop: iro-props-get($key, $tree, $default); } + @if not $global { + $ns-key: iro-props-get-ns-key(); + + @if $ns-key != null { + $orig-key: $key; + $key: $ns-key; + + @if type-of($orig-key) == list { + @each $subkey in $orig-key { + $key: append($key, $subkey); + } + } @else { + $key: append($key, $orig-key); + } + } + } + $native-var: ''; @if type-of($key) == list { @@ -206,9 +293,9 @@ $iro-props-trees: (); /// Generate assignments for native CSS custom properties with the values from the specified tree. /// /// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use -/// @param {string} $root [()] - Sub-tree to use for assignment +/// @param {string} $root [()] - Sub-tree to use for assignment /// -@mixin iro-props-assign-native($tree: $iro-props-default-tree, $root: (), $skip: (), $prefix: '') { +@mixin iro-props-assign-native($tree: $iro-props-default-tree, $root: (), $skip: (), $prefix: '', $global: false) { $map: iro-props-get($root, $tree); $map: map-remove($map, $skip...); @@ -216,6 +303,14 @@ $iro-props-trees: (); $prefix: iro-str-implode($prefix) } + @if not $global { + $ns-key: iro-props-get-ns-key(); + + @if $ns-key != null { + $prefix: $prefix + iro-str-implode($ns-key); + } + } + @include iro-props-assign-native-internal($map, $prefix); } @@ -270,16 +365,55 @@ $iro-props-trees: (); /// Generate a reference to another tree. Dereferencing is lazy, so you may specify a tree that hasn't been created yet. /// /// @param {string} $tree [$iro-props-default-tree] - ID of the property tree to use -/// @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. +/// @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. /// /// @return {list} A special list that let's Ignis know that this is a lazy value. /// /// @throw If there was no match for $key and $default is null /// -@function iro-props-ref($tree: $iro-props-default-tree, $key: null) { +@function iro-props-ref($tree: $iro-props-default-tree, $key: null, $global: false) { + @if not $global { + $ns-key: iro-props-get-ns-key(); + + @if $ns-key != null { + $orig-key: $key; + $key: $ns-key; + + @if $orig-key != null { + @if type-of($orig-key) == list { + @each $subkey in $orig-key { + $key: append($key, $subkey); + } + } @else { + $key: append($key, $orig-key); + } + } + } + } + @if $key == null { @return ('iro-prop-ref' $tree); } @else { @return ('iro-prop-ref' $tree $key); } } + +/// +/// Get the current namespace key. +/// +/// @access private +/// +@function iro-props-get-ns-key() { + $ctx: iro-context-get($iro-props-namespace-context-id, 'namespace'); + + @if $ctx == null { + @return null; + } + + $data: nth($ctx, 2); + $key: map-get($data, 'key'); + + @return $key; +} + +@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 @@ +//// +/// Shorter version of the prop-related functions. Useful to reduce clutter. +/// +/// @group Props shortcodes +/// +/// @access public +//// + +/// +/// @alias iro-props-namespace +/// +@mixin namespace($name) { + @include iro-props-namespace($name); +} + +/// +/// @alias iro-props-ns-name +/// +@function namespace() { + @return iro-props-ns-name(); +} + +/// +/// @alias iro-props-store +/// +@function store($map, $tree: $iro-props-default-tree, $merge: false, $global: false) { + @return iro-props-store($map, $tree, $merge, $global); +} + +/// +/// @alias iro-props-store +/// +@mixin store($map, $tree: $iro-props-default-tree, $merge: false, $global: false) { + @include iro-props-store($map, $tree, $merge, $global); +} + +/// +/// @alias iro-props-clear +/// +@mixin clear($tree: $iro-props-default-tree) { + @include iro-props-clear($tree); +} + +/// +/// @alias iro-props-clear +/// +@function clear($tree: $iro-props-default-tree) { + @return iro-props-clear($tree); +} + +/// +/// @alias iro-props-get +/// +@function prop($key: (), $tree: $iro-props-default-tree, $default: null, $global: false) { + @return iro-props-get($key, $tree, $default, $global); +} + +/// +/// @alias iro-props-get-native +/// +@function n-prop($key, $tree: null, $default: null, $global: false) { + @return iro-props-get-native($key, $tree, $default, $global); +} + +/// +/// @alias iro-props-assign-native +/// +@mixin n-assign($tree: $iro-props-default-tree, $root: (), $skip: (), $prefix: '', $global: false) { + @include iro-props-assign-native($tree, $root, $skip, $prefix, $global); +} + +/// +/// @alias iro-props-ref +/// +@function ref($tree: $iro-props-default-tree, $key: null, $global: false) { + @return iro-props-ref($tree, $key, $global); +} 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 @@ --primary: ( --background: #f00, --text: #fff - ), - --default: ( - --background: #ddd, - --text: #000 ) ) ); - @include assert-equal(iro-props-save($map), null, 'Save default tree'); - @include assert-equal(iro-props-delete(), null, 'Delete default tree'); + @include assert-equal(iro-props-store($map), null, 'Save default tree'); + @include assert-equal(iro-props-clear(), null, 'Delete default tree'); } @include it('Read') { @@ -56,10 +52,6 @@ --primary: ( --background: #f00, --text: #fff - ), - --default: ( - --background: #ddd, - --text: #000 ) ) ); @@ -71,35 +63,52 @@ --primary: ( --background: #f00, --text: #fff - ), - --default: ( - --background: #444, - --text: #fff ) ) ); - @include assert-equal(iro-props-save($map1), null, 'Save default tree'); - @include assert-equal(iro-props-save($map2, 'test'), null, 'Save "test" tree'); + $map3: ( + --background: #666, + --text: #222, + --buttons: ( + --primary: ( + --background: #0f0, + --text: #000 + ) + ) + ); + + @include assert-equal(iro-props-store($map1), null, 'Save default tree'); + @include assert-equal(iro-props-store($map2, 'test'), null, 'Save "test" tree'); + + @include iro-props-namespace('ns') { + @include assert-equal(iro-props-store($map3, 'namespaced'), null, 'Save "namespaced" tree'); + } @include assert-equal(iro-props-get(--background), map-get($map1, --background), 'Get --background in default'); @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'); - @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'); @include assert-equal(iro-props-get(--box, $default: false), false, 'Get nonexistent in default'); @include assert-equal(iro-props-get(--background, 'test'), map-get($map2, --background), 'Get --background in "test"'); @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"'); - @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"'); @include assert-equal(iro-props-get(--box, 'test', $default: false), false, 'Get nonexistent in "test"'); + + @include assert-equal(iro-props-get(--background, 'namespaced', $default: false), false, 'Get --background in "namespaced"'); + @include assert-equal(iro-props-get(--ns --background, 'namespaced'), map-get($map3, --background), 'Get --ns --background in "namespaced"'); + @include iro-props-namespace('ns') { + @include assert-equal(iro-props-get(--background, 'namespaced'), map-get($map3, --background), 'Get namespaced --background in "namespaced"'); + @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"'); + @include assert-equal(iro-props-get(--box, 'namespaced', $default: false), false, 'Get namespaced nonexistent in "namespaced"'); + } - @include assert-equal(iro-props-delete(), null, 'Delete default tree'); - @include assert-equal(iro-props-delete('test'), null, 'Delete "test" tree'); + @include assert-equal(iro-props-clear(), null, 'Delete default tree'); + @include assert-equal(iro-props-clear('test'), null, 'Delete "test" tree'); + @include assert-equal(iro-props-clear('namespaced'), null, 'Delete "namespaced" tree'); } @include it('Overwrite') { $map1: ( --background: #fff, - --text: #000, --buttons: ( --primary: ( --background: #f00, @@ -110,54 +119,43 @@ $map2: ( --background: #eee, + --text: #000, --buttons: ( --primary: ( --background: #00f - ), - --default: ( - --background: #444, - --text: #fff ) ) ); - @include assert-equal(iro-props-save($map1), null, 'Save default tree'); - - @include assert-equal(iro-props-get(), $map1, 'Before update, get whole map'); - @include assert-equal(iro-props-get(--background), map-get($map1, --background), 'Before update, get --background'); - @include assert-equal(iro-props-get(--text), map-get($map1, --text), 'Before update, get --text'); - @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'); - @include assert-equal(iro-props-get(--buttons --default --text, $default: false), false, 'Before update, get --buttons --default --text (returns default)'); - - @include assert-equal(iro-props-save($map2, $merge: true), null, 'Overwrite default tree'); + @include assert-equal(iro-props-store($map1), null, 'Save default tree'); + @include assert-equal(iro-props-store($map2, $merge: true), null, 'Overwrite default tree'); - @include assert-equal(iro-props-get(), iro-map-merge-recursive($map1, $map2), 'After update, get whole map'); - @include assert-equal(iro-props-get(--background), map-get($map2, --background), 'After update, get --background'); - @include assert-equal(iro-props-get(--text), map-get($map1, --text), 'After update, get --text'); - @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'); - @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'); + @include assert-equal(iro-props-get(), iro-map-merge-recursive($map1, $map2), 'After update, get whole map'); + @include assert-equal(iro-props-get(--background), map-get($map2, --background), 'After update, get --background'); + @include assert-equal(iro-props-get(--text), map-get($map2, --text), 'After update, get --text'); + @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'); - @include assert-equal(iro-props-delete(), null, 'Delete default tree'); + @include assert-equal(iro-props-clear(), null, 'Delete default tree'); } @include it('Native assignment') { - @include assert('Simple') { - $map: ( - --background: #fff, - --text: #000, - --buttons: ( - --primary: ( - --background: #f00, - --text: #fff - ), - --default: ( - --background: #ddd, - --text: #000 - ) + $map: ( + --background: #fff, + --text: #000, + --buttons: ( + --primary: ( + --background: #f00, + --text: #fff + ), + --default: ( + --background: #ddd, + --text: #000 ) - ); + ) + ); - @include iro-props-save($map); + @include assert('Simple') { + @include iro-props-store($map); @include output { @include iro-props-assign-native; @@ -172,26 +170,11 @@ --buttons--default--text: #{map-get(map-get(map-get($map, --buttons), --default), --text)}; } - @include iro-props-delete; + @include iro-props-clear; } @include assert('Filtered') { - $map: ( - --background: #fff, - --text: #000, - --buttons: ( - --primary: ( - --background: #f00, - --text: #fff - ), - --default: ( - --background: #ddd, - --text: #000 - ) - ) - ); - - @include iro-props-save($map); + @include iro-props-store($map); @include output { @include iro-props-assign-native($skip: --buttons); @@ -202,7 +185,28 @@ --text: #{map-get($map, --text)}; } - @include iro-props-delete; + @include iro-props-clear; + } + + @include assert('Namespaced') { + @include iro-props-namespace('ns') { + @include iro-props-store($map); + } + + @include output { + @include iro-props-assign-native; + } + + @include expect { + --ns--background: #{map-get($map, --background)}; + --ns--text: #{map-get($map, --text)}; + --ns--buttons--primary--background: #{map-get(map-get(map-get($map, --buttons), --primary), --background)}; + --ns--buttons--primary--text: #{map-get(map-get(map-get($map, --buttons), --primary), --text)}; + --ns--buttons--default--background: #{map-get(map-get(map-get($map, --buttons), --default), --background)}; + --ns--buttons--default--text: #{map-get(map-get(map-get($map, --buttons), --default), --text)}; + } + + @include iro-props-clear; } } @@ -222,13 +226,17 @@ ) ); - @include assert-equal(iro-props-save($map), null, 'Save default tree'); + @include assert-equal(iro-props-store($map), null, 'Save default tree'); @include assert-equal(iro-props-get-native(--background), var(--background), 'Get --background'); @include assert-equal(iro-props-get-native(--buttons --primary --text), var(--buttons--primary--text), 'Get --buttons --primary --text'); @include assert-equal(iro-props-get-native(--buttons --secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get --buttons --secondary --text with default'); + @include iro-props-namespace('buttons') { + @include assert-equal(iro-props-get-native(--primary --text), var(--buttons--primary--text), 'Get via namespace "buttons" --primary --text'); + @include assert-equal(iro-props-get-native(--secondary --text, $default: false), var(--buttons--secondary--text, false), 'Get via namespace "buttons" --secondary --text with default'); + } - @include assert-equal(iro-props-delete(), null, 'Delete default tree'); + @include assert-equal(iro-props-clear(), null, 'Delete default tree'); } @include it('References') { @@ -253,8 +261,8 @@ ) ); - @include assert-equal(iro-props-save($map1), null, 'Save default tree'); - @include assert-equal(iro-props-save($map2, 'second'), null, 'Save "second" tree'); + @include assert-equal(iro-props-store($map1), null, 'Save default tree'); + @include assert-equal(iro-props-store($map2, 'second'), null, 'Save "second" tree'); @include assert-equal(iro-props-get(--buttons --primary --background, 'second'), map-get($map1, --background), 'Get referenced value'); @include assert-equal(iro-props-get-native(--buttons --primary --background, 'second'), var(--buttons--primary--background), 'Get referenced value, native'); @@ -276,7 +284,7 @@ } } - @include assert-equal(iro-props-delete(), null, 'Delete default tree'); - @include assert-equal(iro-props-delete('second'), null, 'Delete "second" tree'); + @include assert-equal(iro-props-clear(), null, 'Delete default tree'); + @include assert-equal(iro-props-clear('second'), null, 'Delete "second" tree'); } } 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: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" @@ -110,13 +117,6 @@ ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-styles@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -156,6 +156,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -353,7 +358,7 @@ camelcase@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -406,7 +411,22 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@3.4.3, "chokidar@>=2.0.0 <4.0.0": +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +"chokidar@>=2.0.0 <4.0.0": version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== @@ -511,14 +531,14 @@ cliui@^3.0.3: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" clone-buffer@^1.0.0: version "1.0.0" @@ -705,10 +725,10 @@ dargs@^4.0.0: dependencies: number-is-nan "^1.0.0" -debug@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" @@ -725,7 +745,7 @@ debug@^3.2.6: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -805,10 +825,10 @@ detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" -diff@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== docopt@^0.6.1: version "0.6.2" @@ -941,6 +961,11 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.1" es6-symbol "^3.1.1" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-goat@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" @@ -1132,13 +1157,6 @@ find-up@5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" @@ -1223,6 +1241,11 @@ fsevents@~2.1.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -1251,7 +1274,7 @@ generate-object-property@^1.1.0: dependencies: is-property "^1.0.0" -get-caller-file@^2.0.1: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -1829,7 +1852,14 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" -js-yaml@3.14.0, js-yaml@^3.14.0: +js-yaml@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.14.0: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -1939,14 +1969,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -2227,35 +2249,35 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.2.0.tgz#f8aa79110b4b5a6580c65d4dd8083c425282624e" - integrity sha512-lEWEMq2LMfNJMKeuEwb5UELi+OgFDollXaytR5ggQcHpzG3NP/R7rvixAvF+9/lLsTWhWG+4yD2M70GsM06nxw== +mocha@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.3.2.tgz#53406f195fa86fbdebe71f8b1c6fb23221d69fcc" + integrity sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.4.3" - debug "4.2.0" - diff "4.0.2" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" glob "7.1.6" growl "1.10.5" he "1.2.0" - js-yaml "3.14.0" + js-yaml "4.0.0" log-symbols "4.0.0" minimatch "3.0.4" - ms "2.1.2" - nanoid "3.1.12" + ms "2.1.3" + nanoid "3.1.20" serialize-javascript "5.0.1" strip-json-comments "3.1.1" - supports-color "7.2.0" + supports-color "8.1.1" which "2.0.2" wide-align "1.1.3" - workerpool "6.0.2" - yargs "13.3.2" - yargs-parser "13.1.2" + workerpool "6.1.0" + yargs "16.2.0" + yargs-parser "20.2.4" yargs-unparser "2.0.0" ms@2.0.0: @@ -2267,6 +2289,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" @@ -2288,10 +2315,10 @@ nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" -nanoid@3.1.12: - version "3.1.12" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" - integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== +nanoid@3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== nanomatch@^1.2.9: version "1.2.13" @@ -2338,10 +2365,10 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -nodemon@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.6.tgz#1abe1937b463aaf62f0d52e2b7eaadf28cc2240d" - integrity sha512-4I3YDSKXg6ltYpcnZeHompqac4E6JeAMpGm8tJnB9Y3T0ehasLa4139dJOcCrB93HHrUMsCrKtoAlXTqT5n4AQ== +nodemon@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32" + integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA== dependencies: chokidar "^3.2.2" debug "^3.2.6" @@ -2522,13 +2549,6 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - p-limit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" @@ -2536,13 +2556,6 @@ p-limit@^3.0.2: dependencies: p-try "^2.0.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -2579,11 +2592,6 @@ path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -2864,11 +2872,6 @@ require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - require-uncached@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -3005,10 +3008,10 @@ sass-true@^6.0.1: css "^3.0.0" lodash "^4.17.19" -sass@^1.28.0: - version "1.28.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.28.0.tgz#546f1308ff74cc4ec2ad735fd35dc18bc3f51f72" - integrity sha512-9FWX/0wuE1KxwfiP02chZhHaPzu6adpx9+wGch7WMOuHy5npOo0UapRI3FNSHva2CczaYJu2yNUBN8cCSqHz/A== +sass@^1.32.8: + version "1.32.8" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.8.tgz#f16a9abd8dc530add8834e506878a2808c037bdc" + integrity sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ== dependencies: chokidar ">=2.0.0 <4.0.0" @@ -3107,7 +3110,7 @@ serialize-javascript@5.0.1: dependencies: randombytes "^2.1.0" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -3235,7 +3238,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: +string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -3253,6 +3256,15 @@ string-width@^4.0.0, string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -3288,7 +3300,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -3329,10 +3341,10 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -supports-color@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" @@ -3690,11 +3702,6 @@ vinyl@^2.0.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - which@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -3731,10 +3738,10 @@ wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" -workerpool@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.2.tgz#e241b43d8d033f1beb52c7851069456039d1d438" - integrity sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q== +workerpool@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" + integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== wrap-ansi@^2.0.0: version "2.1.0" @@ -3743,14 +3750,14 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" @@ -3785,22 +3792,24 @@ y18n@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +y18n@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" + integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" -yargs-parser@13.1.2, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== yargs-unparser@2.0.0: version "2.0.0" @@ -3812,21 +3821,18 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" yargs@^3.32.0: version "3.32.0" -- cgit v1.2.3-54-g00ecf