From 68567eaa929a19d3dcabf90bdccf20c63e81885b Mon Sep 17 00:00:00 2001 From: Interfaced Date: Tue, 4 Feb 2020 14:28:31 +0700 Subject: [PATCH] Version 2.1.1 GitOrigin-RevId: a9a39a76170ef11f317a5086356ebd4a25174a3a --- .eslintignore | 2 + .eslintrc.js | 31 +- CHANGELOG.md | 5 + LICENSE | 2 +- lib/data/cyclical-list.js | 8 + lib/data/dynamic-list.js | 8 + lib/data/i-list.js | 29 +- lib/data/list.js | 49 +- lib/image-preload.js | 10 + lib/limit.js | 9 + lib/popups/abstract-base/abstract-base.js | 12 +- lib/widgets/arrow-list/arrow-list.js | 8 + .../base-list/abstract-base-list-buffer.js | 15 +- lib/widgets/base-list/base-list-data-list.js | 11 +- lib/widgets/base-list/base-list-item.js | 8 + lib/widgets/base-list/base-list-utils.js | 10 + lib/widgets/base-list/base-list.js | 20 +- lib/widgets/base-list/i-base-list-item.js | 8 + lib/widgets/button/button.js | 12 +- lib/widgets/extended-list/extended-list.js | 11 +- lib/widgets/help-bar/help-bar-item.js | 24 +- lib/widgets/help-bar/help-bar.js | 25 +- lib/widgets/help-bar/i-help-bar-item.js | 20 +- lib/widgets/input/abstract-input.js | 18 +- lib/widgets/input/div-input.js | 11 +- lib/widgets/input/i-input-widget.js | 10 + lib/widgets/input/native-input.js | 8 + lib/widgets/keyboard/abstract-keyboard.js | 8 + lib/widgets/keyboard/keyboard-layout.js | 8 + lib/widgets/marquee/abstract-marquee.js | 8 + lib/widgets/marquee/speed-marquee.js | 8 + lib/widgets/marquee/step-marquee.js | 8 + .../player-play-pause/player-play-pause.js | 8 + .../player-progress/player-progress.js | 8 + lib/widgets/scroll-bar/scroll-bar.js | 8 + lib/widgets/scroll-list/scroll-list.js | 8 + lib/widgets/scroll-text/scroll-text.js | 14 +- lib/widgets/throbber/throbber.js | 8 + package-lock.json | 4198 +++++++---------- package.json | 42 +- test/components/base-list/common.mocha.js | 11 +- test/components/base-list/helper.js | 3 +- ...th-cyclical-data-list-select-next.mocha.js | 610 +-- ...th-cyclical-data-list-select-prev.mocha.js | 417 +- .../with-data-list-add-one.mocha.js | 317 +- .../with-data-list-change-group.mocha.js | 557 +-- .../with-data-list-getters.mocha.js | 217 +- .../with-data-list-remove-one.mocha.js | 132 +- .../with-data-list-select-next-line.mocha.js | 96 +- .../with-data-list-select-next.mocha.js | 433 +- .../with-data-list-select-prev.mocha.js | 232 +- .../with-data-list-select.mocha.js | 234 +- .../with-data-list-set-source.mocha.js | 330 +- test/components/button.js | 6 +- test/components/dynamic-list/helper.js | 5 +- .../dynamic-list/step-by-step.mocha.js | 1093 ++--- test/components/throbber.js | 67 +- test/generated/define.js | 8 + test/generated/package-info.js | 1 - test/karma.components.conf.js | 15 +- 60 files changed, 3970 insertions(+), 5532 deletions(-) create mode 100644 .eslintignore delete mode 100644 test/generated/package-info.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..b09e122 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +test/generated +fake.webpack.config.js diff --git a/.eslintrc.js b/.eslintrc.js index b5700ad..9a6c87b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,22 +1,31 @@ +const copyright = [ + '', + ' * This file is part of the ZombieBox package.', + ' *', + ` * Copyright © 2012-${(new Date).getFullYear()}, Interfaced`, + ' *', + ' * For the full copyright and license information, please view the LICENSE', + ' * file that was distributed with this source code.', + ' ' +]; + module.exports = { extends: 'interfaced', + plugins: ['header'], overrides: [{ files: ['lib/**/*.js', 'test/components/**/*.js'], extends: 'interfaced/esm', rules: { - 'no-else-return': 'off', - 'padded-blocks': 'off', - 'import/extensions': ['error', 'never', {jst: 'always'}], - 'import/no-unresolved': ['error', { - ignore: [ - '^generated/', - '^cutejs/', - ], - }], + 'import/extensions': ['error', 'never', {jst: 'always'}] }, settings: { 'import/resolver': 'zombiebox', } + }, { + files: ['lib/**/*.js'], + rules: { + 'header/header': ['error', 'block', copyright] + } }, { files: ['test/karma.*.conf.js', 'index.js'], extends: 'interfaced/node', @@ -24,12 +33,10 @@ module.exports = { files: ['test/components/**/*.js'], extends: 'interfaced/mocha-chai', rules: { - 'no-else-return': 'off', 'import/no-unused-modules': 'off', }, globals: { - sinon: true, - mochaTestSteps: true, + sinon: true } }], }; diff --git a/CHANGELOG.md b/CHANGELOG.md index f607e45..1918d83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ История изменений ----------------------- +## Версия 2.1.1 + +* Обновлены зависимости проекта; +* Поддержка ZombieBox 2.6. + ## Версия 2.1.0 * Обновлены зависимости проекта; diff --git a/LICENSE b/LICENSE index 49addbe..cdcb3cd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright © 2019 Interfaced +Copyright © 2012-2020 Interfaced Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal diff --git a/lib/data/cyclical-list.js b/lib/data/cyclical-list.js index cd9d0f4..277daea 100644 --- a/lib/data/cyclical-list.js +++ b/lib/data/cyclical-list.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import List from './list'; diff --git a/lib/data/dynamic-list.js b/lib/data/dynamic-list.js index 1f8fd5f..7e44693 100644 --- a/lib/data/dynamic-list.js +++ b/lib/data/dynamic-list.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import IList from './i-list'; import List from './list'; diff --git a/lib/data/i-list.js b/lib/data/i-list.js index e400408..58782e5 100644 --- a/lib/data/i-list.js +++ b/lib/data/i-list.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import IEventPublisher from 'zb/events/interfaces/i-event-publisher'; @@ -141,27 +149,6 @@ export default class IList { } -/** - * @type {Array} - * @protected - */ -IList.prototype._items; - - -/** - * @type {number} - * @protected - */ -IList.prototype._currentIndex; - - -/** - * @type {boolean} - * @protected - */ -IList.prototype._autoSelect; - - /** * @const {string} Fired with args: item, index, prevItem, prevIndex */ diff --git a/lib/data/list.js b/lib/data/list.js index 3e62352..307c9b2 100644 --- a/lib/data/list.js +++ b/lib/data/list.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import EventPublisher from 'zb/events/event-publisher'; import IList from './i-list'; @@ -13,6 +21,24 @@ export default class List extends EventPublisher { constructor(items) { super(); + /** + * @type {Array} + * @protected + */ + this._items; + + /** + * @type {number} + * @protected + */ + this._currentIndex; + + /** + * @type {boolean} + * @protected + */ + this._autoSelect; + this._items = []; this._currentIndex = NaN; this._autoSelect = true; @@ -299,7 +325,6 @@ export default class List extends EventPublisher { if (!isNaN(currentIndex)) { if (currentIndex === index) { - this._currentIndex = NaN; changedIndex = NaN; @@ -310,7 +335,6 @@ export default class List extends EventPublisher { } fireSelectAt = true; - } else if (currentIndex > index) { changedIndex = currentIndex - 1; } @@ -335,27 +359,6 @@ export default class List extends EventPublisher { } -/** - * @type {Array} - * @protected - */ -List.prototype._items; - - -/** - * @type {number} - * @protected - */ -List.prototype._currentIndex; - - -/** - * @type {boolean} - * @protected - */ -List.prototype._autoSelect; - - /** * Fired with: item {!ItemType}, index {number}, prevItem {!ItemType}, prevIndex {number} * @const {string} diff --git a/lib/image-preload.js b/lib/image-preload.js index 9677f53..f6e0b9b 100644 --- a/lib/image-preload.js +++ b/lib/image-preload.js @@ -1,3 +1,13 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /** * @param {Array} urlList * @param {number=} timeout diff --git a/lib/limit.js b/lib/limit.js index 81d667c..b2c9663 100644 --- a/lib/limit.js +++ b/lib/limit.js @@ -1,3 +1,12 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + /** * @param {function()|function(...*)} targetFunction * @param {number} waitTime diff --git a/lib/popups/abstract-base/abstract-base.js b/lib/popups/abstract-base/abstract-base.js index c6b15d2..2633fe8 100644 --- a/lib/popups/abstract-base/abstract-base.js +++ b/lib/popups/abstract-base/abstract-base.js @@ -1,5 +1,13 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import AbstractCutePopup from 'cutejs/layers/abstract-popup'; -import InputKeys from 'zb/device/input/keys'; +import InputKey from 'zb/device/input/key'; /** @@ -26,7 +34,7 @@ export default class AbstractBase extends AbstractCutePopup { * @override */ _processKey(zbKey, e) { - if (zbKey === InputKeys.BACK) { + if (zbKey === InputKey.BACK) { this.close(Status.CANCELLED); return true; } diff --git a/lib/widgets/arrow-list/arrow-list.js b/lib/widgets/arrow-list/arrow-list.js index 0284541..f11b28d 100644 --- a/lib/widgets/arrow-list/arrow-list.js +++ b/lib/widgets/arrow-list/arrow-list.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import * as template from 'generated/cutejs/ui/widgets/arrow-list/arrow-list.jst'; import {updateClassName} from 'zb/html'; import BaseList from '../base-list/base-list'; diff --git a/lib/widgets/base-list/abstract-base-list-buffer.js b/lib/widgets/base-list/abstract-base-list-buffer.js index 41a22ec..554a175 100644 --- a/lib/widgets/base-list/abstract-base-list-buffer.js +++ b/lib/widgets/base-list/abstract-base-list-buffer.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import IList from '../../data/i-list'; import { getPrevIndex, @@ -261,9 +269,8 @@ export default class AbstractBaseListBuffer { getGlobalStart() { if (this.hasSource() && this.getSourceSize()) { return 0; - } else { - return NaN; } + return NaN; } /** @@ -438,9 +445,9 @@ export default class AbstractBaseListBuffer { if (this._isBlocked && this.isLoading()) { return true; - } else { - this._isBlocked = false; } + this._isBlocked = false; + let isSelected = false; diff --git a/lib/widgets/base-list/base-list-data-list.js b/lib/widgets/base-list/base-list-data-list.js index b84efe9..7cbce2e 100644 --- a/lib/widgets/base-list/base-list-data-list.js +++ b/lib/widgets/base-list/base-list-data-list.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import CyclicalList from '../../data/cyclical-list'; import DynamicList from '../../data/dynamic-list'; import AbstractBaseListBuffer from './abstract-base-list-buffer'; @@ -90,9 +98,8 @@ export default class BaseListDataList extends AbstractBaseListBuffer { getSourceStart() { if (this.hasSource() && this.getSourceSize()) { return this._source.getBufferStart(); - } else { - return NaN; } + return NaN; } /** diff --git a/lib/widgets/base-list/base-list-item.js b/lib/widgets/base-list/base-list-item.js index 63f55e0..3d421cb 100644 --- a/lib/widgets/base-list/base-list-item.js +++ b/lib/widgets/base-list/base-list-item.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import {text, div} from 'zb/html'; import IBaseListItem, {Input as IBaseListItemInput} from './i-base-list-item'; diff --git a/lib/widgets/base-list/base-list-utils.js b/lib/widgets/base-list/base-list-utils.js index 1adf836..183354e 100644 --- a/lib/widgets/base-list/base-list-utils.js +++ b/lib/widgets/base-list/base-list-utils.js @@ -1,3 +1,13 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /* * Утилита для работы с координатами. * Ограничения нужны для того, чтобы можно было вычислять конец по размеру и размер по концу. diff --git a/lib/widgets/base-list/base-list.js b/lib/widgets/base-list/base-list.js index 5be2882..36a5a73 100644 --- a/lib/widgets/base-list/base-list.js +++ b/lib/widgets/base-list/base-list.js @@ -1,7 +1,15 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import * as template from 'generated/cutejs/ui/widgets/base-list/base-list.jst'; import AbstractCuteWidget from 'cutejs/widgets/abstract-widget'; import {updateClassName} from 'zb/html'; -import InputKeys from 'zb/device/input/keys'; +import InputKey from 'zb/device/input/key'; import AbstractBaseListBuffer, { Source as AbstractBaseListBufferSource, Options as AbstractBaseListBufferOptions @@ -247,19 +255,19 @@ export default class BaseList extends AbstractCuteWidget { let isHandled = false; switch (zbKey) { - case InputKeys.UP: + case InputKey.UP: isHandled = this._moveUp(); break; - case InputKeys.DOWN: + case InputKey.DOWN: isHandled = this._moveDown(); break; - case InputKeys.LEFT: + case InputKey.LEFT: isHandled = this._moveLeft(); break; - case InputKeys.RIGHT: + case InputKey.RIGHT: isHandled = this._moveRight(); break; - case InputKeys.ENTER: + case InputKey.ENTER: const data = this._buffer.getSourceItem(); if (data) { this._fireEvent(this.EVENT_CLICK, data); diff --git a/lib/widgets/base-list/i-base-list-item.js b/lib/widgets/base-list/i-base-list-item.js index 6347314..6308816 100644 --- a/lib/widgets/base-list/i-base-list-item.js +++ b/lib/widgets/base-list/i-base-list-item.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import IFocusable from 'zb/interfaces/i-focusable'; diff --git a/lib/widgets/button/button.js b/lib/widgets/button/button.js index 86562a3..b7882f2 100644 --- a/lib/widgets/button/button.js +++ b/lib/widgets/button/button.js @@ -1,6 +1,14 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import InlineWidget from 'cutejs/widgets/inline-widget'; import {div} from 'zb/html'; -import InputKeys from 'zb/device/input/keys'; +import InputKey from 'zb/device/input/key'; /** @@ -63,7 +71,7 @@ export default class Button extends InlineWidget { _processKey(zbKey, event) { let isHandled = false; - if (zbKey === InputKeys.ENTER) { + if (zbKey === InputKey.ENTER) { this._fireEvent(this.EVENT_CLICK, this._data); isHandled = true; } diff --git a/lib/widgets/extended-list/extended-list.js b/lib/widgets/extended-list/extended-list.js index 94a36e5..af72143 100644 --- a/lib/widgets/extended-list/extended-list.js +++ b/lib/widgets/extended-list/extended-list.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import * as template from 'generated/cutejs/ui/widgets/extended-list/extended-list.jst'; import {updateClassName} from 'zb/html'; import BaseList from '../base-list/base-list'; @@ -100,9 +108,8 @@ export default class ExtendedList extends BaseList { _hasArrows() { if (this._isVertical) { return !!this._exported.arrowUp && !!this._exported.arrowDown; - } else { - return !!this._exported.arrowLeft && !!this._exported.arrowRight; } + return !!this._exported.arrowLeft && !!this._exported.arrowRight; } /** diff --git a/lib/widgets/help-bar/help-bar-item.js b/lib/widgets/help-bar/help-bar-item.js index 4249da7..482d2ae 100644 --- a/lib/widgets/help-bar/help-bar-item.js +++ b/lib/widgets/help-bar/help-bar-item.js @@ -1,6 +1,14 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import * as template from 'generated/cutejs/ui/widgets/help-bar/help-bar-item.jst'; import {text, findFirstElementNode} from 'zb/html'; -import InputKeys from 'zb/device/input/keys'; +import InputKey from 'zb/device/input/key'; import Widget from 'zb/widgets/widget'; import IHelpBarItem from './i-help-bar-item'; @@ -36,14 +44,14 @@ export default class HelpBarItem extends Widget { } /** - * @param {Array} keys + * @param {Array} keys */ setKeys(keys) { this._keys = keys; } /** - * @return {Array} + * @return {Array} */ getKeys() { return this._keys; @@ -60,7 +68,7 @@ export default class HelpBarItem extends Widget { * @override */ _processKey(zbKey, e) { - return this._handleKey(zbKey === InputKeys.ENTER, zbKey); + return this._handleKey(zbKey === InputKey.ENTER, zbKey); } /** @@ -77,7 +85,7 @@ export default class HelpBarItem extends Widget { /** * @param {boolean} isHandled - * @param {InputKeys} zbKey + * @param {InputKey} zbKey * @return {boolean} * @protected */ @@ -99,14 +107,14 @@ HelpBarItem.prototype._exported; /** - * @type {Array} + * @type {Array} * @protected */ HelpBarItem.prototype._keys; /** - * Fired with: {InputKeys} zbKey, {HelpBarItem} item + * Fired with: {InputKey} zbKey, {HelpBarItem} item * @const {string} */ HelpBarItem.prototype.EVENT_CLICK = 'click'; @@ -115,7 +123,7 @@ HelpBarItem.prototype.EVENT_CLICK = 'click'; /** * @typedef {{ * label: string, - * keys: Array, + * keys: Array, * cssClass: string * }} */ diff --git a/lib/widgets/help-bar/help-bar.js b/lib/widgets/help-bar/help-bar.js index 82eee10..37148a0 100644 --- a/lib/widgets/help-bar/help-bar.js +++ b/lib/widgets/help-bar/help-bar.js @@ -1,7 +1,15 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import * as template from 'generated/cutejs/ui/widgets/help-bar/help-bar.jst'; import AbstractCuteWidget from 'cutejs/widgets/abstract-widget'; import {remove} from 'zb/html'; -import InputKeys from 'zb/device/input/keys'; +import InputKey from 'zb/device/input/key'; import HelpBarItem, {Options as HelpBarItemOptions} from './help-bar-item'; import IHelpBarItem from './i-help-bar-item'; @@ -32,13 +40,12 @@ export default class HelpBar extends AbstractCuteWidget { const hasItems = this._items.length > 0; if (hasItems) { return super.isFocusable(); - } else { - return false; } + return false; } /** - * @param {InputKeys} zbKey + * @param {InputKey} zbKey * @return {boolean} */ hasKey(zbKey) { @@ -46,7 +53,7 @@ export default class HelpBar extends AbstractCuteWidget { } /** - * @param {InputKeys} zbKey + * @param {InputKey} zbKey * @param {KeyboardEvent|WheelEvent=} event * @return {boolean} */ @@ -87,7 +94,7 @@ export default class HelpBar extends AbstractCuteWidget { } /** - * @param {?Array} order + * @param {?Array} order */ setOrder(order) { this._itemsOrder = order; @@ -103,7 +110,7 @@ export default class HelpBar extends AbstractCuteWidget { } /** - * @param {InputKeys} zbKey + * @param {InputKey} zbKey * @return {IHelpBarItem} */ getItem(zbKey) { @@ -146,7 +153,7 @@ export default class HelpBar extends AbstractCuteWidget { /** * Sort items by zbKey in order [...anyCustomKeysInAddOrder, ...commonKeysByDefinedOrder] - * @param {Array} order + * @param {Array} order * @param {Array} items * @protected */ @@ -190,7 +197,7 @@ HelpBar.prototype._items; /** - * @type {?Array} + * @type {?Array} * @protected */ HelpBar.prototype._itemsOrder; diff --git a/lib/widgets/help-bar/i-help-bar-item.js b/lib/widgets/help-bar/i-help-bar-item.js index e81bc56..33f0365 100644 --- a/lib/widgets/help-bar/i-help-bar-item.js +++ b/lib/widgets/help-bar/i-help-bar-item.js @@ -1,4 +1,12 @@ -import InputKeys from 'zb/device/input/keys'; +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +import InputKey from 'zb/device/input/key'; import IWidget from 'zb/widgets/interfaces/i-widget'; @@ -8,7 +16,7 @@ import IWidget from 'zb/widgets/interfaces/i-widget'; */ export default class IHelpBarItem { /** - * @param {InputKeys} zbKey + * @param {InputKey} zbKey * @param {KeyboardEvent|WheelEvent=} event * @return {boolean} */ @@ -16,18 +24,18 @@ export default class IHelpBarItem { /** * Checks should this item handle zbKey - * @param {InputKeys} zbKey + * @param {InputKey} zbKey * @return {boolean} */ hasKey(zbKey) {} /** - * @param {Array} keys + * @param {Array} keys */ setKeys(keys) {} /** - * @return {Array} + * @return {Array} */ getKeys() {} @@ -39,7 +47,7 @@ export default class IHelpBarItem { /** - * Fired with {InputKeys, IWidget} + * Fired with {InputKey, IWidget} * @const {string} */ IHelpBarItem.prototype.EVENT_CLICK; diff --git a/lib/widgets/input/abstract-input.js b/lib/widgets/input/abstract-input.js index 6137408..f3f6f86 100644 --- a/lib/widgets/input/abstract-input.js +++ b/lib/widgets/input/abstract-input.js @@ -1,6 +1,14 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import app from 'generated/app'; import InlineWidget from 'cutejs/widgets/inline-widget'; -import InputKeys from 'zb/device/input/keys'; +import InputKey from 'zb/device/input/key'; import IInputWidget from './i-input-widget'; @@ -124,18 +132,18 @@ export default class AbstractInput extends InlineWidget { let isHandled = false; switch (zbKey) { - case InputKeys.RIGHT: + case InputKey.RIGHT: isHandled = this.moveCaretRight(); break; - case InputKeys.ENTER: + case InputKey.ENTER: this._fireChange(); this._fireFinish(); isHandled = true; break; - case InputKeys.LEFT: + case InputKey.LEFT: isHandled = this.moveCaretLeft(); break; - case InputKeys.BACKSPACE: + case InputKey.BACKSPACE: this.backspace(); isHandled = true; break; diff --git a/lib/widgets/input/div-input.js b/lib/widgets/input/div-input.js index 3e113c6..c063f08 100644 --- a/lib/widgets/input/div-input.js +++ b/lib/widgets/input/div-input.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import app from 'generated/app'; import * as template from 'generated/cutejs/ui/widgets/input/div-input.jst'; import {showHide, updateClassName, text} from 'zb/html'; @@ -324,9 +332,8 @@ export default class DivInput extends AbstractInput { if (this._type === AbstractInputType.PASSWORD) { const passwordLength = this._value.length ? this._value.length + 1 : 0; return new Array(passwordLength).join(this._passwordSymbol); - } else { - return this._value; } + return this._value; } /** diff --git a/lib/widgets/input/i-input-widget.js b/lib/widgets/input/i-input-widget.js index 1482fc3..3d31e5f 100644 --- a/lib/widgets/input/i-input-widget.js +++ b/lib/widgets/input/i-input-widget.js @@ -1,3 +1,13 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /** * @interface */ diff --git a/lib/widgets/input/native-input.js b/lib/widgets/input/native-input.js index 404ba40..c259ff4 100644 --- a/lib/widgets/input/native-input.js +++ b/lib/widgets/input/native-input.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import AbstractInput, {Type as AbstractInputType} from './abstract-input'; import IInputWidget from './i-input-widget'; diff --git a/lib/widgets/keyboard/abstract-keyboard.js b/lib/widgets/keyboard/abstract-keyboard.js index e74b700..bbc43b5 100644 --- a/lib/widgets/keyboard/abstract-keyboard.js +++ b/lib/widgets/keyboard/abstract-keyboard.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import AbstractCuteWidget from 'cutejs/widgets/abstract-widget'; import {updateClassName} from 'zb/html'; import IInputWidget from '../input/i-input-widget'; diff --git a/lib/widgets/keyboard/keyboard-layout.js b/lib/widgets/keyboard/keyboard-layout.js index bbdd61e..a082701 100644 --- a/lib/widgets/keyboard/keyboard-layout.js +++ b/lib/widgets/keyboard/keyboard-layout.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import InlineWidget from 'cutejs/widgets/inline-widget'; import Button from '../button/button'; diff --git a/lib/widgets/marquee/abstract-marquee.js b/lib/widgets/marquee/abstract-marquee.js index d023b23..3f39eb5 100644 --- a/lib/widgets/marquee/abstract-marquee.js +++ b/lib/widgets/marquee/abstract-marquee.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import {updateClassName} from 'zb/html'; import EventPublisher from 'zb/events/event-publisher'; diff --git a/lib/widgets/marquee/speed-marquee.js b/lib/widgets/marquee/speed-marquee.js index 0df1858..ccdeb9e 100644 --- a/lib/widgets/marquee/speed-marquee.js +++ b/lib/widgets/marquee/speed-marquee.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import AbstractMarquee, {Input as AbstractMarqueeInput} from './abstract-marquee'; diff --git a/lib/widgets/marquee/step-marquee.js b/lib/widgets/marquee/step-marquee.js index 3088fda..60241c5 100644 --- a/lib/widgets/marquee/step-marquee.js +++ b/lib/widgets/marquee/step-marquee.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import AbstractMarquee, {Input as AbstractMarqueeInput} from './abstract-marquee'; diff --git a/lib/widgets/player-play-pause/player-play-pause.js b/lib/widgets/player-play-pause/player-play-pause.js index ed8d68d..944accc 100644 --- a/lib/widgets/player-play-pause/player-play-pause.js +++ b/lib/widgets/player-play-pause/player-play-pause.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import {updateClassName} from 'zb/html'; import IVideo, {State as IVideoState} from 'zb/device/interfaces/i-video'; import Button from '../button/button'; diff --git a/lib/widgets/player-progress/player-progress.js b/lib/widgets/player-progress/player-progress.js index 25f14e7..2373dd4 100644 --- a/lib/widgets/player-progress/player-progress.js +++ b/lib/widgets/player-progress/player-progress.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import * as template from 'generated/cutejs/ui/widgets/player-progress/player-progress.jst'; import AbstractCuteWidget from 'cutejs/widgets/abstract-widget'; import {text} from 'zb/html'; diff --git a/lib/widgets/scroll-bar/scroll-bar.js b/lib/widgets/scroll-bar/scroll-bar.js index 30ad065..49c2f52 100644 --- a/lib/widgets/scroll-bar/scroll-bar.js +++ b/lib/widgets/scroll-bar/scroll-bar.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import InlineWidget from 'cutejs/widgets/inline-widget'; import {updateClassName, div} from 'zb/html'; diff --git a/lib/widgets/scroll-list/scroll-list.js b/lib/widgets/scroll-list/scroll-list.js index 7040af9..89bb579 100644 --- a/lib/widgets/scroll-list/scroll-list.js +++ b/lib/widgets/scroll-list/scroll-list.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import * as template from 'generated/cutejs/ui/widgets/scroll-list/scroll-list.jst'; import BaseList from '../base-list/base-list'; import ScrollBar from '../scroll-bar/scroll-bar'; diff --git a/lib/widgets/scroll-text/scroll-text.js b/lib/widgets/scroll-text/scroll-text.js index a0a009e..f87182f 100644 --- a/lib/widgets/scroll-text/scroll-text.js +++ b/lib/widgets/scroll-text/scroll-text.js @@ -1,5 +1,13 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import InlineWidget from 'cutejs/widgets/inline-widget'; -import InputKeys from 'zb/device/input/keys'; +import InputKey from 'zb/device/input/key'; import ScrollBar from '../scroll-bar/scroll-bar'; @@ -128,10 +136,10 @@ export default class ScrollText extends InlineWidget { if (this.isScrollable()) { switch (zbKey) { - case InputKeys.UP: + case InputKey.UP: isHandled = this.moveUp(); break; - case InputKeys.DOWN: + case InputKey.DOWN: isHandled = this.moveDown(); break; } diff --git a/lib/widgets/throbber/throbber.js b/lib/widgets/throbber/throbber.js index 8eb6188..a624d0b 100644 --- a/lib/widgets/throbber/throbber.js +++ b/lib/widgets/throbber/throbber.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2012-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import InlineWidget from 'cutejs/widgets/inline-widget'; import {div} from 'zb/html'; import Block from 'zb/block'; diff --git a/package-lock.json b/package-lock.json index c84cb9c..9cc5091 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,33 +1,34 @@ { "name": "zombiebox-extension-ui", - "version": "2.1.0", + "version": "2.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.8.3" } }, "@babel/core": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", - "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helpers": "^7.5.5", - "@babel/parser": "^7.5.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5", - "convert-source-map": "^1.1.0", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", + "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.4", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", "json5": "^2.1.0", "lodash": "^4.17.13", "resolve": "^1.3.2", @@ -50,16 +51,15 @@ } }, "@babel/generator": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", - "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", + "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", "dev": true, "requires": { - "@babel/types": "^7.5.5", + "@babel/types": "^7.8.3", "jsesc": "^2.5.1", "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" }, "dependencies": { "source-map": { @@ -71,49 +71,49 @@ } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.8.3" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.8.3" } }, "@babel/helpers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", - "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", "dev": true, "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", "dev": true, "requires": { "chalk": "^2.0.0", @@ -122,43 +122,60 @@ } }, "@babel/parser": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", - "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", + "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", "dev": true }, + "@babel/runtime": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", + "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", + "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" } }, "@babel/traverse": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", - "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", + "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.5", - "@babel/types": "^7.5.5", + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } } }, "@babel/types": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", - "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -172,50 +189,60 @@ "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", "dev": true }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, "@sinonjs/commons": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", - "integrity": "sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz", + "integrity": "sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/formatio": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.1.tgz", - "integrity": "sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-4.0.1.tgz", + "integrity": "sha512-asIdlLFrla/WZybhm0C8eEzaDNNrzymiTqHMeJl6zPW2881l3uuVRpm0QlRQEjqYWv6CcKMGYME3LbrLJsORBw==", "dev": true, "requires": { "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" + "@sinonjs/samsam": "^4.2.0" } }, "@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-4.2.2.tgz", + "integrity": "sha512-z9o4LZUzSD9Hl22zV38aXNykgFeVj8acqfFabCY6FY83n/6s/XwNJyYYldz6/9lBJanpno9h+oL6HTISkviweA==", "dev": true, "requires": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, "@sinonjs/text-encoding": { @@ -224,33 +251,34 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", "dev": true }, "@types/node": { - "version": "12.7.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.2.tgz", - "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.0.tgz", + "integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, "@types/unist": { @@ -271,13 +299,12 @@ } }, "@types/vfile-message": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-1.0.1.tgz", - "integrity": "sha512-mlGER3Aqmq7bqR1tTTIVHq8KSAFFRyGbrxuM8C/H82g6k7r2fS+IMEkIu3D7JHzG10NvPdR8DNx0jr0pwpp4dA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz", + "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==", "dev": true, "requires": { - "@types/node": "*", - "@types/unist": "*" + "vfile-message": "*" } }, "accepts": { @@ -291,9 +318,9 @@ } }, "acorn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", - "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", "dev": true }, "acorn-jsx": { @@ -309,12 +336,12 @@ "dev": true }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -327,15 +354,18 @@ "dev": true }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -348,9 +378,9 @@ } }, "anymatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz", - "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -391,9 +421,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -431,67 +461,33 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" } }, "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -510,12 +506,6 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -537,33 +527,19 @@ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "autoprefixer": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", - "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", + "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", - "dev": true - } + "postcss": "^7.0.26", + "postcss-value-parser": "^4.0.2" } }, "backo2": { @@ -573,9 +549,9 @@ "dev": true }, "bail": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz", - "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "dev": true }, "balanced-match": { @@ -584,61 +560,6 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", @@ -705,9 +626,9 @@ "dev": true }, "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "body-parser": { @@ -771,20 +692,20 @@ "dev": true }, "browserslist": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", - "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz", + "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000984", - "electron-to-chromium": "^1.3.191", - "node-releases": "^1.1.25" + "caniuse-lite": "^1.0.30001023", + "electron-to-chromium": "^1.3.341", + "node-releases": "^1.1.47" } }, "buffer": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", - "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -825,55 +746,6 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", @@ -893,34 +765,26 @@ "dev": true }, "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.1.2.tgz", + "integrity": "sha512-QfFrU0CIw2oltVvpndW32kuJ/9YOJwUnmWrjlXt1nnJZHCaS9i6bfOpg9R4Lw8aZjStkJWM+jc0cdXjWBgVJSw==", "dev": true, "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" } }, "caniuse-lite": { - "version": "1.0.30000989", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", - "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "version": "1.0.30001023", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz", + "integrity": "sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA==", "dev": true }, "ccount": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz", - "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", + "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==", "dev": true }, "chai": { @@ -949,27 +813,27 @@ } }, "character-entities": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz", - "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true }, "character-entities-html4": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.3.tgz", - "integrity": "sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", "dev": true }, "character-entities-legacy": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz", - "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", "dev": true }, "character-reference-invalid": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz", - "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true }, "chardet": { @@ -985,51 +849,28 @@ "dev": true }, "chokidar": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz", - "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==", - "dev": true, - "requires": { - "anymatch": "^3.0.1", - "braces": "^3.0.2", - "fsevents": "^2.0.6", - "glob-parent": "^5.0.0", - "is-binary-path": "^2.1.0", - "is-glob": "^4.0.1", - "normalize-path": "^3.0.0", - "readdirp": "^3.1.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" } }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-width": { @@ -1039,23 +880,37 @@ "dev": true }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } @@ -1099,9 +954,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -1130,26 +985,20 @@ } } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "collapse-white-space": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz", - "integrity": "sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", "dev": true }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "color-convert": "^1.9.1", + "color-string": "^1.5.2" } }, "color-convert": { @@ -1167,16 +1016,42 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", + "dev": true + }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "dev": true, + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, "comment-parser": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.6.2.tgz", - "integrity": "sha512-Wdms0Q8d4vvb2Yk72OwZjwNWtMklbC5Re7lD9cjCP/AG1fhocmc0TrxGBBAXPLy8fZQPrfHGgyygwI0lA7pbzA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.2.tgz", + "integrity": "sha512-4Rjb1FnxtOcv9qsfuaNuVsmmVn4ooVoBHzYfyKteiXwIU84PClyGA5jASoFMwPV93+FPh9spwueXauxFJZkGAg==", "dev": true }, "component-bind": { @@ -1210,9 +1085,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -1289,9 +1164,9 @@ "dev": true }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -1311,18 +1186,6 @@ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1330,41 +1193,34 @@ "dev": true }, "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "dependencies": { - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "dev": true, "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" } }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true } } @@ -1451,21 +1307,13 @@ } }, "css-tree": { - "version": "1.0.0-alpha25", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha25.tgz", - "integrity": "sha512-XC6xLW/JqIGirnZuUWHXCHRaAjje2b3OIB0Vj5RIJo6mIi/AdJo30quQl5LxUl0gkXDIrTrFGbMlcZjyFplz1A==", + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", "dev": true, "requires": { - "mdn-data": "^1.0.0", - "source-map": "^0.5.3" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "mdn-data": "2.0.4", + "source-map": "^0.6.1" } }, "cssdb": { @@ -1481,12 +1329,12 @@ "dev": true }, "csso": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.3.1.tgz", - "integrity": "sha512-OjETffCFB/OzwxVL3eF0+5tXOXCMukVO6rEUxlkIhscE1KRObyg+zMrLUbkPn9kxgBrFWicc37Gv5/22dOh5EA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha25" + "css-tree": "1.0.0-alpha.37" } }, "cuint": { @@ -1495,15 +1343,6 @@ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", "dev": true }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -1555,12 +1394,6 @@ } } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -1585,47 +1418,6 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -1644,6 +1436,17 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, + "diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "dev": true, + "requires": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -1651,27 +1454,18 @@ "dev": true }, "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "path-type": "^3.0.0" + "path-type": "^4.0.0" }, "dependencies": { "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true } } @@ -1704,9 +1498,9 @@ } }, "dom-serializer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", - "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -1768,17 +1562,26 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.241", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.241.tgz", - "integrity": "sha512-Gb9E6nWZlbgjDDNe5cAvMJixtn79krNJ70EDpq/M10lkGo7PGtBUe7Y0CYVHsBScRwi6ybCS+YetXAN9ysAHDg==", + "version": "1.3.344", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.344.tgz", + "integrity": "sha512-tvbx2Wl8WBR+ym3u492D0L6/jH+8NoQXqe46+QhbWH3voVPauGuZYeb1QAXYoOAWuiP2dbSvlBx0kQ1F3hu/Mw==", "dev": true }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "enabled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "dev": true, + "requires": { + "env-variable": "0.0.x" + } + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -1786,9 +1589,9 @@ "dev": true }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" @@ -1886,6 +1689,12 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, + "env-variable": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.6.tgz", + "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==", + "dev": true + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -1896,23 +1705,28 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -1933,9 +1747,9 @@ "dev": true }, "eslint": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.2.tgz", - "integrity": "sha512-mf0elOkxHbdyGX1IJEUsNBzCDdyoUgljF3rRlgfyYh0pwGnreLc0jjD6ZuleOibjmnUWZLY2eXwSooeOgGJ2jw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -1945,19 +1759,19 @@ "debug": "^4.0.1", "doctrine": "^3.0.0", "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.2", + "eslint-utils": "^1.4.3", "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.1", + "espree": "^6.1.2", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^11.7.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.4.1", + "inquirer": "^7.0.0", "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -1966,7 +1780,7 @@ "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", "semver": "^6.1.2", @@ -1978,22 +1792,22 @@ } }, "eslint-config-interfaced": { - "version": "2.0.0-beta.2", - "resolved": "https://registry.npmjs.org/eslint-config-interfaced/-/eslint-config-interfaced-2.0.0-beta.2.tgz", - "integrity": "sha512-Uxudgv5zYG26Jd58hlJNnQWH2qkoe4GHWLqB6TOY+cGkZBvK10/UVuIpecnQshAoaV5BclMatXup7ix45GX7eQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-interfaced/-/eslint-config-interfaced-2.0.0.tgz", + "integrity": "sha512-pwIdDk6APT3VIhVW01IKGbCj3tt9wqwM7JBcCq3SBdlIcuRpUbBIGDFVjs+g8P0Tw3uQ7dWe3ArqlSAdCaOevQ==", "dev": true, "requires": { "js-yaml": "3.13.1" } }, "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", "dev": true, "requires": { "debug": "^2.6.9", - "resolve": "^1.5.0" + "resolve": "^1.13.1" }, "dependencies": { "debug": { @@ -2014,18 +1828,18 @@ } }, "eslint-import-resolver-zombiebox": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-zombiebox/-/eslint-import-resolver-zombiebox-1.0.0.tgz", - "integrity": "sha512-Yw7kjVZ1Wd4x8ECQzBxrHLRBzEYYjTT91ERuFUljL92g3x9pE4m/qAumyVvyHXy50t1kxAG81KqNPGDo88uH/Q==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-zombiebox/-/eslint-import-resolver-zombiebox-1.0.1.tgz", + "integrity": "sha512-Z5H4gy0B/dlkcnJpq3oK8sYfpTtVYyKGL+YJhHLtWT9SHqh1vsewQqt5stZGYnBukFZdOP//GD4avlyBRo55WA==", "dev": true }, "eslint-module-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz", - "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", + "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", "dev": true, "requires": { - "debug": "^2.6.8", + "debug": "^2.6.9", "pkg-dir": "^2.0.0" }, "dependencies": { @@ -2047,32 +1861,56 @@ } }, "eslint-plugin-es": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", - "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", + "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", "dev": true, "requires": { - "eslint-utils": "^1.4.2", - "regexpp": "^2.0.1" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "regexpp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", + "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "dev": true + } } }, + "eslint-plugin-header": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.0.0.tgz", + "integrity": "sha512-OIu2ciVW8jK4Ove4JHm1I7X0C98PZuLCyCsoUhAm2HpyGS+zr34qLM6iV06unnDvssvvEh5BkOfaLRF+N7cGoQ==", + "dev": true + }, "eslint-plugin-import": { - "version": "2.18.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", - "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", "dev": true, "requires": { "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", "contains-path": "^0.1.0", "debug": "^2.6.9", "doctrine": "1.5.0", "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.0", + "eslint-module-utils": "^2.4.1", "has": "^1.0.3", "minimatch": "^3.0.4", "object.values": "^1.1.0", "read-pkg-up": "^2.0.0", - "resolve": "^1.11.0" + "resolve": "^1.12.0" }, "dependencies": { "debug": { @@ -2103,9 +1941,9 @@ } }, "eslint-plugin-interfaced": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-interfaced/-/eslint-plugin-interfaced-2.0.0-beta.1.tgz", - "integrity": "sha512-wIcmFLjtX3Sh7ksmQKRTBh9UQKuq0xP740IEWAWGeYmxTscA0De4l1Gnco78EKsu5koAm5sCYv3YWECsEYTq9A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-interfaced/-/eslint-plugin-interfaced-2.0.0.tgz", + "integrity": "sha512-0ip19P+hxzf5ZH9JtgpRMgksiBYMPysG17h6+SWItzjK8jc3DHRYX2nS4RFzxoXSRedHgDFDS/vRYH2U8h31UQ==", "dev": true, "requires": { "doctrine": "github:interfaced/doctrine#range-fixes", @@ -2124,33 +1962,43 @@ } }, "eslint-plugin-jsdoc": { - "version": "15.8.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-15.8.3.tgz", - "integrity": "sha512-p2O6SYetuSD5gWV04HHevIfp2WfimXReYwINuB4iC33hm1jrYoP+t2XbJtCBYvjhoRjjw8w4NfnyZKixte1fug==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-21.0.0.tgz", + "integrity": "sha512-CdLGe2oyw5YAX9rxq9bVz7H2PK+r8PVwdGuvYGMBstpbVD/66yUAgRFQRsJwAsRKLmReo58Lw1jFdNcxdOc4eg==", "dev": true, "requires": { - "comment-parser": "^0.6.2", + "comment-parser": "^0.7.2", "debug": "^4.1.1", - "jsdoctypeparser": "5.0.1", + "jsdoctypeparser": "^6.1.0", "lodash": "^4.17.15", - "object.entries-ponyfill": "^1.0.1", - "regextras": "^0.6.1" + "regextras": "^0.7.0", + "semver": "^6.3.0", + "spdx-expression-parse": "^3.0.0" } }, "eslint-plugin-node": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz", - "integrity": "sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz", + "integrity": "sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==", "dev": true, "requires": { - "eslint-plugin-es": "^1.4.0", - "eslint-utils": "^1.3.1", + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", "ignore": "^5.1.1", "minimatch": "^3.0.4", "resolve": "^1.10.1", "semver": "^6.1.0" }, "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, "ignore": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", @@ -2170,12 +2018,12 @@ } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { @@ -2185,14 +2033,22 @@ "dev": true }, "espree": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", - "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", "dev": true, "requires": { - "acorn": "^7.0.0", - "acorn-jsx": "^5.0.2", + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "dev": true + } } }, "esprima": { @@ -2238,26 +2094,11 @@ "dev": true }, "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", "dev": true }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "execall": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", @@ -2267,83 +2108,12 @@ "clone-regexp": "^2.1.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -2355,227 +2125,29 @@ "tmp": "^0.0.33" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz", + "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2" } }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -2584,10 +2156,31 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true + }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, + "fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -2679,33 +2272,29 @@ "dev": true }, "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "dev": true }, "follow-redirects": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.8.0.tgz", - "integrity": "sha512-eYyazyi+vwXZ6LfSQicvqFwaNEF5xTvnB/rpzRLuqwK45u7WbBEnQ/dDic66KD/A8IzTXFlj2ROAcaP0f2v4lg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz", + "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==", "dev": true, "requires": { - "debug": "^4.1.1" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "fresh": { @@ -2714,15 +2303,6 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "fs-access": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", - "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true, - "requires": { - "null-check": "^1.0.0" - } - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -2747,9 +2327,9 @@ "dev": true }, "fsevents": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz", - "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "dev": true, "optional": true }, @@ -2765,6 +2345,12 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -2783,25 +2369,10 @@ "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -2813,20 +2384,14 @@ } }, "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -2848,37 +2413,32 @@ } }, "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } }, "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", + "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "dev": true } } @@ -2907,17 +2467,17 @@ } }, "google-closure-compiler": { - "version": "20190823.0.0-nightly", - "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20190823.0.0-nightly.tgz", - "integrity": "sha512-7lWI1jum43SKmWyP3QMk5YD4hIGGlJ0aci0QbKuNpH/HHUnROty9nPpLfkb7GP1PtqJdNCpwlntcREOxRQ3J5g==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20200112.0.0.tgz", + "integrity": "sha512-8d43B3hU2pAFy6MD946oslArRe11jPJ/h/VaPPiiSMoSMFxnDpd8jjVJfM2solFSNOOZ9OacA6g/RVGMyp5lvg==", "dev": true, "requires": { "chalk": "2.x", - "google-closure-compiler-java": "^20190823.0.0-nightly", - "google-closure-compiler-js": "^20190823.0.0-nightly", - "google-closure-compiler-linux": "^20190823.0.0-nightly", - "google-closure-compiler-osx": "^20190823.0.0-nightly", - "google-closure-compiler-windows": "^20190823.0.0-nightly", + "google-closure-compiler-java": "^20200112.0.0", + "google-closure-compiler-js": "^20200112.0.0", + "google-closure-compiler-linux": "^20200112.0.0", + "google-closure-compiler-osx": "^20200112.0.0", + "google-closure-compiler-windows": "^20200112.0.0", "minimist": "1.x", "vinyl": "2.x", "vinyl-sourcemaps-apply": "^0.2.0" @@ -2932,35 +2492,35 @@ } }, "google-closure-compiler-java": { - "version": "20190823.0.0-nightly", - "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20190823.0.0-nightly.tgz", - "integrity": "sha512-jGe9tiirfljTJFr3s55VdTqVrohzjGcVKUlBnDCiWG/glSsOwFwml3WkSC2Z4qHFrhiwqsJA1tCDMvDs4ytKdw==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200112.0.0.tgz", + "integrity": "sha512-h/ExDCXAw88nOniQSbbK6et31kOwmaDxl6t52dnETCIzituQtGToPzy21vUel1o8o+FvWUybLoap+dEYBam1pA==", "dev": true }, "google-closure-compiler-js": { - "version": "20190823.0.0-nightly", - "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20190823.0.0-nightly.tgz", - "integrity": "sha512-mhAQ67zaLFx1yn3irQpH7dHkA2vB4JEeefZiIkK8qxIG11UZb1mnaltr8V46y6R6bxMs+BMx5Bzy+b0d0E0WKg==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20200112.0.0.tgz", + "integrity": "sha512-xW47rSuiRaql6q1YN7+b3FXIW74b1nCcENVwm9cigw1H5gWoBMBJOmpZiXnjMfmYC+MALjPQ8giMzvSeP+2X5A==", "dev": true }, "google-closure-compiler-linux": { - "version": "20190823.0.0-nightly", - "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20190823.0.0-nightly.tgz", - "integrity": "sha512-AwnFYQ1pwL73MqYWBDa0ix13KtrucwSkCuV80Bl3Odzup227ZGajwo/efDa0qYh8qwov69XCZOurKS1ozZIf2Q==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200112.0.0.tgz", + "integrity": "sha512-imTfdYP7BVTzzp3y7MuZP+98nEkbX7LZsZtxalNpl56vd+Ysc9/vOHXS14CdSoThaXIVlzX/lfjOlBRqPow+ew==", "dev": true, "optional": true }, "google-closure-compiler-osx": { - "version": "20190823.0.0-nightly", - "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20190823.0.0-nightly.tgz", - "integrity": "sha512-OCmpm4qpVjLDJkR8VxQ76GcUO+W3xG+aqRmPqC7lkNsvJjV4qjXa1v117Oh5yHAMpoPclioYaroNxteICMie9w==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200112.0.0.tgz", + "integrity": "sha512-E3S1KqZw4+Zov0VXCkjomPrYhyuuV6jH9InBchQ7cZfipFJjhQmSRf39u4Mu0sINW7GXfODZbzBwOXhEIquFQw==", "dev": true, "optional": true }, "google-closure-compiler-windows": { - "version": "20190823.0.0-nightly", - "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20190823.0.0-nightly.tgz", - "integrity": "sha512-z3/nquXcX1EDrDpW9MrZ+9D7lFJkVQvt1N4i6fxlnSLkmTGgPqOPlMrZXS0ySzcpZkJz3tbImQH/6gB3gmJG7A==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200112.0.0.tgz", + "integrity": "sha512-+5+UJFKXH0LGnYEHSVJxWwhtvX/MI6uebkAQkhma0057QsKs8fOToWuHL8/UbJULB4WUPa3DlHy0+Izs5z6lCQ==", "dev": true, "optional": true }, @@ -2976,6 +2536,12 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3015,69 +2581,11 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -3085,9 +2593,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", - "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", "dev": true }, "html-tags": { @@ -3132,12 +2640,12 @@ } }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -3164,9 +2672,9 @@ "dev": true }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -3186,9 +2694,9 @@ "dev": true }, "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "indexes-of": { @@ -3226,68 +2734,36 @@ "dev": true }, "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", + "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", + "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ip-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz", "integrity": "sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA==", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-alphabetical": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", - "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true }, "is-alphanumeric": { @@ -3297,9 +2773,9 @@ "dev": true }, "is-alphanumerical": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", - "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, "requires": { "is-alphabetical": "^1.0.0", @@ -3322,84 +2798,27 @@ } }, "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", "dev": true }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", "dev": true }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-decimal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", - "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true }, "is-extglob": { @@ -3409,9 +2828,9 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { @@ -3424,9 +2843,9 @@ } }, "is-hexadecimal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", - "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, "is-number": { @@ -3447,15 +2866,6 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -3463,12 +2873,12 @@ "dev": true }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, "is-regexp": { @@ -3483,15 +2893,27 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, "is-url-superb": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-3.0.0.tgz", @@ -3502,21 +2924,15 @@ } }, "is-whitespace-character": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", - "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", "dev": true }, "is-word-character": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz", - "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", "dev": true }, "isarray": { @@ -3540,12 +2956,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3563,9 +2973,9 @@ } }, "jsdoctypeparser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-5.0.1.tgz", - "integrity": "sha512-dYwcK6TKzvq+ZKtbp4sbQSW9JMo6s+4YFfUs5D/K7bZsn3s1NhEhZ+jmIPzby0HbkbECBe+hNPEa6a+E21o94w==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz", + "integrity": "sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA==", "dev": true }, "jsesc": { @@ -3593,9 +3003,9 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -3619,9 +3029,9 @@ } }, "jsonschema": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.4.tgz", - "integrity": "sha512-lz1nOH69GbsVHeVgEdvyavc/33oymY1AZwtePMiMj4HZPMbP5OIKK3zT9INMWjwua/V4Z4yq7wSlBbSG+g4AEw==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.5.tgz", + "integrity": "sha512-kVTF+08x25PQ0CjuVc0gRM9EUPb0Fe9Ln/utFOgcdxEIOHuU7ooBk/UPTd7t1M91pP35m0MU1T8M5P7vP1bRRw==", "dev": true }, "just-extend": { @@ -3631,9 +3041,9 @@ "dev": true }, "karma": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-4.2.0.tgz", - "integrity": "sha512-fmCuxN1rwJxTdZfOXK5LjlmS4Ana/OvzNMpkyLL/TLE8hmgSkpVpMYQ7RTVa8TNKRVQDZNl5W1oF5cfKfgIMlA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", + "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", "dev": true, "requires": { "bluebird": "^3.3.0", @@ -3642,7 +3052,6 @@ "chokidar": "^3.0.0", "colors": "^1.1.0", "connect": "^3.6.0", - "core-js": "^3.1.3", "di": "^0.0.1", "dom-serialize": "^2.2.0", "flatted": "^2.0.0", @@ -3650,7 +3059,7 @@ "graceful-fs": "^4.1.2", "http-proxy": "^1.13.0", "isbinaryfile": "^3.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "log4js": "^4.0.0", "mime": "^2.3.1", "minimatch": "^3.0.2", @@ -3672,12 +3081,11 @@ "dev": true }, "karma-chrome-launcher": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", "dev": true, "requires": { - "fs-access": "^1.0.0", "which": "^1.2.1" } }, @@ -3704,6 +3112,34 @@ } } }, + "karma-mocha-reporter": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", + "integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "karma-module-resolver-preprocessor": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/karma-module-resolver-preprocessor/-/karma-module-resolver-preprocessor-1.1.1.tgz", @@ -3739,11 +3175,20 @@ "dev": true }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, "klaw-sync": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", @@ -3754,11 +3199,20 @@ } }, "known-css-properties": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.14.0.tgz", - "integrity": "sha512-P+0a/gBzLgVlCnK8I7VcD0yuYJscmWn66wH9tlKsQnmVdg689tLEmziwB9PuazZYLkcm07fvWOKCJJqI55sD5Q==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.17.0.tgz", + "integrity": "sha512-Vi3nxDGMm/z+lAaCjvAR1u+7fiv+sG6gU/iYDj5QOF8h76ytK9EW/EKfF0NeTyiGBi8Jy6Hklty/vxISrLox3w==", "dev": true }, + "kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "dev": true, + "requires": { + "colornames": "^1.1.1" + } + }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -3769,9 +3223,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -3800,15 +3254,6 @@ } } }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -3825,6 +3270,12 @@ "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -3877,6 +3328,12 @@ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -3930,28 +3387,34 @@ "streamroller": "^1.0.6" } }, - "lolex": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", - "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", - "dev": true - }, - "longest-streak": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", - "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", - "dev": true + "logform": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", + "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", + "dev": true, + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "@sinonjs/commons": "^1.7.0" } }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -3962,40 +3425,16 @@ "yallist": "^2.1.2" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, "markdown-escapes": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz", - "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", "dev": true }, "markdown-table": { @@ -4005,24 +3444,24 @@ "dev": true }, "mathml-tag-names": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", - "integrity": "sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true }, "mdast-util-compact": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz", - "integrity": "sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", + "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", "dev": true, "requires": { "unist-util-visit": "^1.1.0" } }, "mdn-data": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.2.0.tgz", - "integrity": "sha512-esDqNvsJB2q5V28+u7NdtdMg6Rmg4khQmAVSjUiX7BY/7haIv0K2yWM43hYp0or+3nvG7+UaTF1JHz31hgU1TA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", "dev": true }, "media-typer": { @@ -4031,121 +3470,133 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, "meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0", - "yargs-parser": "^10.0.0" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.0.0.tgz", + "integrity": "sha512-x4rYsjigPBDAxY+BGuK83YLhUIqui5wYyZoqb6QJCUOs+0fiYq+i/NV4Jt8OgIfObZFxG9iTyvLDu4UTohGTFw==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.1.1", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.0.0", + "minimist-options": "^4.0.1", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.0", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.8.1", + "yargs-parser": "^16.1.0" }, "dependencies": { - "camelcase": { + "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "p-locate": "^4.1.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "p-try": "^2.0.0" } }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "pify": "^3.0.0" + "p-limit": "^2.2.0" } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" } }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", + "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, "merge2": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz", - "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", "dev": true }, "micromatch": { @@ -4165,24 +3616,30 @@ "dev": true }, "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", "dev": true }, "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "dev": true, "requires": { - "mime-db": "1.40.0" + "mime-db": "1.43.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", "dev": true }, "minimatch": { @@ -4201,36 +3658,15 @@ "dev": true }, "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.0.2.tgz", + "integrity": "sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w==", "dev": true, "requires": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0" } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -4241,13 +3677,14 @@ } }, "mocha": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz", - "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.0.1.tgz", + "integrity": "sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg==", "dev": true, "requires": { "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", + "chokidar": "3.3.0", "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", @@ -4260,17 +3697,33 @@ "minimatch": "3.0.4", "mkdirp": "0.5.1", "ms": "2.1.1", - "node-environment-flags": "1.0.5", + "node-environment-flags": "1.0.6", "object.assign": "4.1.0", "strip-json-comments": "2.0.1", "supports-color": "6.0.0", "which": "1.3.1", "wide-align": "1.1.3", - "yargs": "13.2.2", - "yargs-parser": "13.0.0", - "yargs-unparser": "1.5.0" + "yargs": "13.3.0", + "yargs-parser": "13.1.1", + "yargs-unparser": "1.6.0" }, "dependencies": { + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -4320,9 +3773,9 @@ "dev": true }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -4343,6 +3796,15 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -4360,12 +3822,6 @@ } } }, - "mocha-test-steps": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mocha-test-steps/-/mocha-test-steps-0.1.3.tgz", - "integrity": "sha1-7kv0xS5wRpf3lHXSCEtRXev3G+I=", - "dev": true - }, "morgan": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", @@ -4403,30 +3859,11 @@ "dev": true }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4446,22 +3883,23 @@ "dev": true }, "nise": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.1.tgz", - "integrity": "sha512-edFWm0fsFG2n318rfEnKlTZTkjlbVOFF9XIA+fj+Ed+Qz1laYW2lobwavWoMzGrYDHH1EpiNJgDfvGnkZztR/g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-3.0.1.tgz", + "integrity": "sha512-fYcH9y0drBGSoi88kvhpbZEsenX58Yr+wOJ4/Mi1K4cy+iGP/a73gNoyNhu5E9QxPdgTlVChfIaAlnyOy/gHUA==", "dev": true, "requires": { - "@sinonjs/formatio": "^3.2.1", + "@sinonjs/commons": "^1.7.0", + "@sinonjs/formatio": "^4.0.1", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", - "lolex": "^4.1.0", + "lolex": "^5.0.1", "path-to-regexp": "^1.7.0" } }, "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", "dev": true, "requires": { "object.getownpropertydescriptors": "^2.0.3", @@ -4477,20 +3915,12 @@ } }, "node-releases": { - "version": "1.1.28", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.28.tgz", - "integrity": "sha512-AQw4emh6iSXnCpDiFe0phYcThiccmkNWMZnFZ+lDJjAP8J0m2fVd59duvUUyuTirQOhIAajTFkzG6FHCLBO59g==", + "version": "1.1.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.47.tgz", + "integrity": "sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==", "dev": true, "requires": { - "semver": "^5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "semver": "^6.3.0" } }, "normalize-package-data": { @@ -4531,75 +3961,23 @@ "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", "dev": true }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "object-component": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true }, "object-keys": { "version": "1.1.1", @@ -4607,15 +3985,6 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", @@ -4628,39 +3997,24 @@ "object-keys": "^1.0.11" } }, - "object.entries-ponyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.entries-ponyfill/-/object.entries-ponyfill-1.0.1.tgz", - "integrity": "sha1-Kavfd8v70mVm3RqiTp2I9lQz0lY=", - "dev": true - }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { - "isobject": "^3.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" } @@ -4689,13 +4043,19 @@ "wrappy": "1" } }, + "one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", + "dev": true + }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" } }, "optimist": { @@ -4706,39 +4066,20 @@ "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "word-wrap": "~1.2.3" } }, "os-tmpdir": { @@ -4747,24 +4088,6 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -4845,18 +4168,6 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -4882,9 +4193,9 @@ "dev": true }, "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, "requires": { "isarray": "0.0.1" @@ -4914,9 +4225,9 @@ "dev": true }, "picomatch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", - "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", "dev": true }, "pify": { @@ -4940,16 +4251,10 @@ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "postcss": { - "version": "7.0.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", - "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "version": "7.0.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", + "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -4969,22 +4274,28 @@ } }, "postcss-attribute-case-insensitive": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.1.tgz", - "integrity": "sha512-L2YKB3vF4PetdTIthQVeT+7YiSzMoNMLLYxPXXppOOP7NoazEAy45sh2LvJ8leCQjfBcfkYQs8TtCcQjeZTp8A==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "requires": { "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0" + "postcss-selector-parser": "^6.0.2" }, "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { - "cssesc": "^2.0.0", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -5109,26 +4420,12 @@ } }, "postcss-csso": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-csso/-/postcss-csso-3.0.0.tgz", - "integrity": "sha512-5yvI9IMIJOofYqmYfn65ZTxxlYZ86jXzDMXwYqltx/kqGsSvHRw4gYkn5e/tCPPIgUeFP5MIhIkA02uoUEZsXA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-csso/-/postcss-csso-4.0.0.tgz", + "integrity": "sha512-Yh9Ug0w3+T/LZIh1vGJQY8+hE13yFRHpINoAmgOhvu9lBmG1jyHkAprGHEHlGjWODJzB4DCNBVBb6Cs0QEoglQ==", "dev": true, "requires": { - "csso": "~3.3.0", - "postcss": "^6.0.0" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } + "csso": "^4.0.2" } }, "postcss-custom-media": { @@ -5333,12 +4630,20 @@ "postcss-value-parser": "^3.2.3", "read-cache": "^1.0.0", "resolve": "^1.1.7" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-initial": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.1.tgz", - "integrity": "sha512-I2Sz83ZSHybMNh02xQDK609lZ1/QOyYeuizCjzEhlMgeV/HcDJapQiH4yTqLjZss0X6/6VvKFXUeObaHpJoINw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", + "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "requires": { "lodash.template": "^4.5.0", @@ -5346,9 +4651,9 @@ } }, "postcss-jsx": { - "version": "0.36.3", - "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.3.tgz", - "integrity": "sha512-yV8Ndo6KzU8eho5mCn7LoLUGPkXrRXRjhMpX4AaYJ9wLJPv099xbtpbRQ8FrPnzVxb/cuMebbPR7LweSt+hTfA==", + "version": "0.36.4", + "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.4.tgz", + "integrity": "sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==", "dev": true, "requires": { "@babel/core": ">=7.2.2" @@ -5576,13 +4881,13 @@ } }, "postcss-sass": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.3.5.tgz", - "integrity": "sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.2.tgz", + "integrity": "sha512-hcRgnd91OQ6Ot9R90PE/khUDCJHG8Uxxd3F7Y0+9VHjBiJgNv7sK5FxyHMCBtoLmmkzVbSj3M3OlqUfLJpq0CQ==", "dev": true, "requires": { - "gonzales-pe": "^4.2.3", - "postcss": "^7.0.1" + "gonzales-pe": "^4.2.4", + "postcss": "^7.0.21" } }, "postcss-scss": { @@ -5683,9 +4988,9 @@ } }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", "dev": true }, "postcss-values-parser": { @@ -5733,16 +5038,6 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -5762,9 +5057,9 @@ "dev": true }, "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, "range-parser": { @@ -5816,9 +5111,9 @@ } }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", + "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -5827,33 +5122,29 @@ } }, "readdirp": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.2.tgz", - "integrity": "sha512-8rhl0xs2cxfVsqzreYCvs8EwBfn/DhVdqtoLmw19uI3SC5avYX9teCurlErfpPXGmYtMHReGaP2RsLnFvz/lnw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", "dev": true, "requires": { - "picomatch": "^2.0.4" + "picomatch": "^2.0.7" } }, "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true }, "regexpp": { "version": "2.0.1", @@ -5862,9 +5153,9 @@ "dev": true }, "regextras": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.6.1.tgz", - "integrity": "sha512-EzIHww9xV2Kpqx+corS/I7OBmf2rZ0pKKJPsw5Dc+l6Zq1TslDmtRIP9maVn3UH+72MIXmn8zzDgP07ihQogUA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.0.tgz", + "integrity": "sha512-ds+fL+Vhl918gbAUb0k2gVKbTZLsg84Re3DI6p85Et0U0tYME3hyW4nMK8Px4dtDaBA2qNjvG5uWyW7eK5gfmw==", "dev": true }, "remark": { @@ -5929,12 +5220,6 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -5966,9 +5251,9 @@ "dev": true }, "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -5980,26 +5265,20 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, "rfdc": { @@ -6026,10 +5305,16 @@ "is-promise": "^2.1.0" } }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -6041,15 +5326,6 @@ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -6132,29 +5408,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -6182,25 +5435,65 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "sinon": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.1.tgz", - "integrity": "sha512-7s9buHGHN/jqoy/v4bJgmt0m1XEkCEd/tqdHXumpBp0JSujaT4Ng84JU5wDdK4E85ZMq78NuDe0I3NAqXY8TFg==", + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "dev": true, "requires": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.2", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.1", - "supports-color": "^5.5.0" + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sinon": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-8.1.1.tgz", + "integrity": "sha512-E+tWr3acRdoe1nXbHMu86SSqA1WGM7Yw3jZRLvlCMnXwTHP8lgFFVn5BnKnF26uc5SfZ3D7pA9sN7S3Y2jG4Ew==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0", + "@sinonjs/formatio": "^4.0.1", + "@sinonjs/samsam": "^4.2.2", + "diff": "^4.0.2", + "lolex": "^5.1.2", + "nise": "^3.0.1", + "supports-color": "^7.1.0" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "sinon-chai": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.3.0.tgz", - "integrity": "sha512-r2JhDY7gbbmh5z3Q62pNbrjxZdOAjpsqW/8yxAZRSqLZqowmfGZPGUZPFf3UX36NLis0cv8VEM5IJh9HgkSOAA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.4.0.tgz", + "integrity": "sha512-BpVxsjEkGi6XPbDXrgWUe7Cb1ZzIfxKUbu/MmH5RoUnS7AXpKo3aIYIyQUg0FMvlUL05aPt7VZuAdaeQhEnWxg==", "dev": true }, "slash": { @@ -6218,139 +5511,13 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { + "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } } } }, @@ -6386,9 +5553,9 @@ } }, "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", "dev": true }, "socket.io-client": { @@ -6470,25 +5637,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -6527,47 +5675,23 @@ "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "state-toggle": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz", - "integrity": "sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==", + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true }, "statuses": { "version": "1.5.0", @@ -6600,26 +5724,47 @@ } }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -6664,17 +5809,14 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } }, "strip-json-comments": { "version": "3.0.1", @@ -6689,65 +5831,100 @@ "dev": true }, "stylelint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-10.1.0.tgz", - "integrity": "sha512-OmlUXrgzEMLQYj1JPTpyZPR9G4bl0StidfHnGJEMpdiQ0JyTq0MPg1xkHk1/xVJ2rTPESyJCDWjG8Kbpoo7Kuw==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.0.0.tgz", + "integrity": "sha512-6sjgOJbM3iLhnUtmRO0J1vvxie9VnhIZX/2fCehjylv9Gl9u0ytehGCTm9Lhw2p1F8yaNZn5UprvhCB8C3g/Tg==", "dev": true, "requires": { - "autoprefixer": "^9.5.1", + "autoprefixer": "^9.7.3", "balanced-match": "^1.0.0", - "chalk": "^2.4.2", - "cosmiconfig": "^5.2.0", + "chalk": "^3.0.0", + "cosmiconfig": "^6.0.0", "debug": "^4.1.1", "execall": "^2.0.0", "file-entry-cache": "^5.0.1", "get-stdin": "^7.0.0", "global-modules": "^2.0.0", - "globby": "^9.2.0", + "globby": "^11.0.0", "globjoin": "^0.1.4", - "html-tags": "^3.0.0", - "ignore": "^5.0.6", + "html-tags": "^3.1.0", + "ignore": "^5.1.4", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.14.0", + "known-css-properties": "^0.17.0", "leven": "^3.1.0", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "log-symbols": "^3.0.0", - "mathml-tag-names": "^2.1.0", - "meow": "^5.0.0", - "micromatch": "^4.0.0", + "mathml-tag-names": "^2.1.1", + "meow": "^6.0.0", + "micromatch": "^4.0.2", "normalize-selector": "^0.2.0", - "pify": "^4.0.1", - "postcss": "^7.0.14", + "postcss": "^7.0.26", "postcss-html": "^0.36.0", - "postcss-jsx": "^0.36.1", + "postcss-jsx": "^0.36.3", "postcss-less": "^3.1.4", "postcss-markdown": "^0.36.0", "postcss-media-query-parser": "^0.2.3", "postcss-reporter": "^6.0.1", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^4.0.1", - "postcss-sass": "^0.3.5", + "postcss-sass": "^0.4.2", "postcss-scss": "^2.0.0", "postcss-selector-parser": "^3.1.0", "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^3.3.1", + "postcss-value-parser": "^4.0.2", "resolve-from": "^5.0.0", - "signal-exit": "^3.0.2", "slash": "^3.0.0", "specificity": "^0.4.1", - "string-width": "^4.1.0", - "strip-ansi": "^5.2.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", "style-search": "^0.1.0", "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^5.2.3" + "table": "^5.4.6", + "v8-compile-cache": "^2.1.0", + "write-file-atomic": "^3.0.1" }, "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "ignore": { @@ -6756,12 +5933,6 @@ "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -6769,29 +5940,82 @@ "dev": true, "requires": { "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" + "has-flag": "^4.0.0" } } } @@ -6821,13 +6045,13 @@ } }, "stylelint-order": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-3.0.1.tgz", - "integrity": "sha512-isVEJ1oUoVB7bb5pYop96KYOac4c+tLOqa5dPtAEwAwQUVSbi7OPFbfaCclcTjOlXicymasLpwhRirhFWh93yw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-4.0.0.tgz", + "integrity": "sha512-bXV0v+jfB0+JKsqIn3mLglg1Dj2QCYkFHNfL1c+rVMEmruZmW5LUqT/ARBERfBm8SFtCuXpEdatidw/3IkcoiA==", "dev": true, "requires": { - "lodash": "^4.17.14", - "postcss": "^7.0.17", + "lodash": "^4.17.15", + "postcss": "^7.0.26", "postcss-sorting": "^5.0.1" } }, @@ -6867,6 +6091,18 @@ "string-width": "^3.0.0" }, "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -6893,6 +6129,12 @@ "readable-stream": "^3.1.1" } }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -6906,9 +6148,9 @@ "dev": true }, "tlds": { - "version": "1.203.1", - "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.203.1.tgz", - "integrity": "sha512-7MUlYyGJ6rSitEZ3r1Q1QNV8uSIzapS8SmmhSusBuIc7uIxPPwsKllEP0GRp1NS6Ik6F+fRZvnjDWm3ecv2hDw==", + "version": "1.207.0", + "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.207.0.tgz", + "integrity": "sha512-k7d7Q1LqjtAvhtEOs3yN14EabsNO8ZCoY6RESSJDB9lst3bTx3as/m1UuAeCKzYxiyhR1qq72ZPhpSf+qlqiwg==", "dev": true }, "tmp": { @@ -6932,44 +6174,6 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6992,27 +6196,27 @@ "dev": true }, "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", "dev": true }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==", "dev": true }, - "trim-trailing-lines": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz", - "integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==", + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", "dev": true }, "trough": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", - "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true }, "tslib": { @@ -7036,6 +6240,12 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -7046,6 +6256,15 @@ "mime-types": "~2.1.24" } }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -7053,13 +6272,13 @@ "dev": true }, "unherit": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", - "integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", "dev": true, "requires": { - "inherits": "^2.0.1", - "xtend": "^4.0.1" + "inherits": "^2.0.0", + "xtend": "^4.0.0" } }, "unified": { @@ -7078,18 +6297,6 @@ "x-is-string": "^0.1.0" } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -7097,9 +6304,9 @@ "dev": true }, "unist-util-find-all-after": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.4.tgz", - "integrity": "sha512-CaxvMjTd+yF93BKLJvZnEfqdM7fgEACsIpQqz8vIj9CJnUb9VpyymFS3tg6TCtgrF7vfCJBF5jbT2Ox9CBRYRQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz", + "integrity": "sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==", "dev": true, "requires": { "unist-util-is": "^3.0.0" @@ -7112,19 +6319,22 @@ "dev": true }, "unist-util-remove-position": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz", - "integrity": "sha512-CtszTlOjP2sBGYc2zcKA/CvNdTdEs3ozbiJ63IPBxh8iZg42SCCb8m04f8z2+V1aSk5a7BxbZKEdoDjadmBkWA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", "dev": true, "requires": { "unist-util-visit": "^1.1.0" } }, "unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.2.tgz", + "integrity": "sha512-nK5n8OGhZ7ZgUwoUbL8uiVRwAbZyzBsB/Ddrlbu6jwwubFza4oe15KlyEaLNMXQW1svOQq4xesUeqA85YrIUQA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } }, "unist-util-visit": { "version": "1.4.1", @@ -7156,46 +6366,6 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -7205,12 +6375,6 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, "url-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-5.0.0.tgz", @@ -7221,12 +6385,6 @@ "tlds": "^1.203.0" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "useragent": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", @@ -7275,21 +6433,39 @@ "replace-ext": "1.0.0", "unist-util-stringify-position": "^1.0.0", "vfile-message": "^1.0.0" + }, + "dependencies": { + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "dev": true + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "dev": true, + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } } }, "vfile-location": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.5.tgz", - "integrity": "sha512-Pa1ey0OzYBkLPxPZI3d9E+S4BmvfVwNAAXrrqGbwTVXWaX2p9kM1zZ+n35UtVM06shmWKH4RPRN8KI80qE3wNQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", + "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", "dev": true }, "vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.2.tgz", + "integrity": "sha512-gNV2Y2fDvDOOqq8bEe7cF3DXU6QgV4uA9zMR2P8tix11l1r7zju3zry3wZ8sx+BEfuO6WQ7z2QzfWTvqHQiwsA==", "dev": true, "requires": { - "unist-util-stringify-position": "^1.1.1" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" } }, "vinyl": { @@ -7351,57 +6527,144 @@ "dev": true, "requires": { "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "winston": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", + "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^2.1.1", + "one-time": "0.0.4", + "readable-stream": "^3.1.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.3.0" + } }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "winston-transport": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", + "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "readable-stream": "^2.3.6", + "triple-beam": "^1.2.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "safe-buffer": "~5.1.0" } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } @@ -7421,6 +6684,18 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", + "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "ws": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", @@ -7479,25 +6754,39 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, + "yaml": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", + "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.6.3" + } + }, "yargs": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", - "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "dev": true, "requires": { - "cliui": "^4.0.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "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.0.0" + "yargs-parser": "^13.1.1" }, "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -7507,6 +6796,12 @@ "locate-path": "^3.0.0" } }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -7518,9 +6813,9 @@ } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -7555,9 +6850,9 @@ } }, "yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -7565,101 +6860,14 @@ } }, "yargs-unparser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", - "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", "dev": true, "requires": { "flat": "^4.1.0", - "lodash": "^4.17.11", - "yargs": "^12.0.5" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "lodash": "^4.17.15", + "yargs": "^13.3.0" } }, "yeast": { @@ -7688,9 +6896,9 @@ } }, "zip-stream": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.2.tgz", - "integrity": "sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", + "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", "dev": true, "requires": { "archiver-utils": "^2.1.0", @@ -7699,54 +6907,92 @@ } }, "zombiebox": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/zombiebox/-/zombiebox-2.2.0.tgz", - "integrity": "sha512-FNI/hGKwxXcnMs3gw0EDXHGk3FkWHSq/Rq/RWCzbMX+7QmlFKB0qA+YeO1MFzO+o1BatKpRf+ag88AKYMxIXIw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/zombiebox/-/zombiebox-2.6.1.tgz", + "integrity": "sha512-MQA0Kipwe/dYaT8m7sH//YlFsvSC7J8l803dUEioqXZ+XWYqmEGMLgb5JYvsN43mfgcEpD/+O/UbbXaP9n4jmw==", "dev": true, "requires": { "archiver": "^3.1.1", - "chalk": "^2.4.2", - "chokidar": "3.0.2", + "chalk": "^3.0.0", + "chokidar": "3.3.1", "connect": "3.7.0", - "espree": "^6.1.1", + "espree": "^6.1.2", "fs-extra": "^8.1.0", - "google-closure-compiler": "^20190823.0.0-nightly", - "http-proxy": "1.17.0", - "jsonschema": "^1.2.4", + "google-closure-compiler": "^20200112.0.0", + "http-proxy": "1.18.0", + "jsonschema": "^1.2.5", + "klaw": "^3.0.0", "klaw-sync": "^6.0.0", "lodash": "^4.17.15", "morgan": "1.9.1", - "postcss": "^7.0.17", - "postcss-csso": "^3.0.0", + "postcss": "^7.0.26", + "postcss-csso": "^4.0.0", "postcss-import": "^12.0.1", "postcss-preset-env": "^6.7.0", "postcss-url": "^9.0.0", "postcss-values-parser": "^3.0.5", - "semver": "^6.3.0", + "semver": "^7.1.2", "send": "^0.17.1", "serve-static": "1.14.1", - "yargs": "^14.0.0", + "winston": "^3.2.1", + "yargs": "^15.1.0", "zb-log-server": "0.0.6" }, "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "fs-extra": { @@ -7760,32 +7006,37 @@ "universalify": "^0.1.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { @@ -7794,51 +7045,70 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "semver": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.2.tgz", + "integrity": "sha512-BJs9T/H8sEVHbeigqzIEo57Iu/3DG6c4QoqTfbQB3BPA4zgzAomh/Fk9E7QtjWQ8mx2dgA9YCfSF4y9k9bHNpQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "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" } }, "yargs": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.0.0.tgz", - "integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz", + "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==", "dev": true, "requires": { - "cliui": "^5.0.0", + "cliui": "^6.0.0", "decamelize": "^1.2.0", - "find-up": "^3.0.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "yargs-parser": "^16.1.0" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", + "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index bd37fcc..0515643 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zombiebox-extension-ui", - "version": "2.1.0", + "version": "2.1.1", "description": "UI-components library for ZombieBox framework", "author": "Interfaced (http://interfaced.tv)", "license": "MIT", @@ -30,39 +30,41 @@ }, "scripts": { "test": "karma start test/karma.components.conf.js", - "lint.code": "eslint index.js lib test --ignore-pattern test/generated", + "lint": "eslint .", "lint.styles": "stylelint './lib/**/*.css'" }, "devDependencies": { "chai": "^4.2.0", "cutejs": "^2.0.0", "dirty-chai": "^2.0.1", - "eslint": "6.2.2", - "eslint-config-interfaced": "2.0.0-beta.2", - "eslint-import-resolver-zombiebox": "1.0.0", - "eslint-plugin-import": "2.18.2", - "eslint-plugin-interfaced": "2.0.0-beta.1", - "eslint-plugin-jsdoc": "15.8.3", - "eslint-plugin-node": "9.1.0", - "karma": "^4.1.0", + "eslint": "6.8.0", + "eslint-config-interfaced": "2.0.0", + "eslint-import-resolver-zombiebox": "1.0.1", + "eslint-plugin-header": "^3.0.0", + "eslint-plugin-import": "2.20.1", + "eslint-plugin-interfaced": "2.0.0", + "eslint-plugin-jsdoc": "21.0.0", + "eslint-plugin-node": "11.0.0", + "karma": "^4.4.1", "karma-chai": "^0.1.0", - "karma-chrome-launcher": "^2.2.0", + "karma-chrome-launcher": "^3.1.0", "karma-dirty-chai": "^2.0.0", "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.5", "karma-module-resolver-preprocessor": "^1.1.1", "karma-sinon-chai": "^2.0.2", - "mocha": "^6.1.4", - "mocha-test-steps": "^0.1.3", - "sinon": "^7.3.2", - "sinon-chai": "^3.3.0", - "stylelint": "10.1.0", + "mocha": "^7.0.1", + "sinon": "^8.1.1", + "sinon-chai": "^3.4.0", + "stylelint": "13.0.0", "stylelint-config-interfaced": "0.1.0", - "stylelint-order": "3.0.1", - "zombiebox": "^2.2.0", + "stylelint-order": "4.0.0", + "zombiebox": "^2.6.1", "zombiebox-extension-cutejs": "^1.2.0" }, "peerDependencies": { - "zombiebox": "^2.2.0", + "zombiebox": "^2.6.1", "zombiebox-extension-cutejs": "^1.2.0" - } + }, + "dependencies": {} } diff --git a/test/components/base-list/common.mocha.js b/test/components/base-list/common.mocha.js index b226e5f..769f23a 100644 --- a/test/components/base-list/common.mocha.js +++ b/test/components/base-list/common.mocha.js @@ -4,8 +4,6 @@ import {createDefaultDataList, setBufferSource, noop} from './helper'; describe('BaseListDataList', () => { const expect = chai.expect; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; describe('Class', () => { it('class exists', () => { @@ -82,15 +80,12 @@ describe('BaseListDataList', () => { expect(buffer.getSource()).is.null(); }); - it('set source and get it back', () => { + it('set source and get it back', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - when('set new source', () => setBufferSource(buffer, dataList)); - - then('set new source', () => { - expect(buffer.getSource()).equal(dataList); - }); + expect(buffer.getSource()).equal(dataList); }); }); }); diff --git a/test/components/base-list/helper.js b/test/components/base-list/helper.js index a0372f6..cb25cc2 100644 --- a/test/components/base-list/helper.js +++ b/test/components/base-list/helper.js @@ -53,9 +53,8 @@ export const setBufferSource = (buffer, source) => { return source .preload() .then(() => buffer); - } else { - return Promise.resolve(buffer); } + return Promise.resolve(buffer); }; // Default diff --git a/test/components/base-list/integration/with-cyclical-data-list-select-next.mocha.js b/test/components/base-list/integration/with-cyclical-data-list-select-next.mocha.js index 85ac89a..5aeee55 100644 --- a/test/components/base-list/integration/with-cyclical-data-list-select-next.mocha.js +++ b/test/components/base-list/integration/with-cyclical-data-list-select-next.mocha.js @@ -1,18 +1,15 @@ import CyclicalList from 'ui/data/cyclical-list'; import {createBuffer, createDefaultArray, setBufferSource, changeSpy, selectSpy} from '../helper'; +const expect = chai.expect; -describe('BaseListDataList with CyclicalList: select next', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; +describe('BaseListDataList with CyclicalList: select next', () => { let dataList; let buffer; let bufferPromise; - beforeEach(() => { + beforeEach(async () => { buffer = createBuffer(); dataList = new CyclicalList(createDefaultArray()); bufferPromise = setBufferSource(buffer, dataList) @@ -20,444 +17,285 @@ describe('BaseListDataList with CyclicalList: select next', () => { changeSpy.resetHistory(); selectSpy.resetHistory(); }); + await bufferPromise; }); - it('Selecting next item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next item', () => { - dataList.selectNextItem(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('B', 1, 'A', 0) - .callCount(1); - }); + it('Selecting next item', async () => { + dataList.selectNextItem(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy) + .calledWith('B', 1, 'A', 0) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting next next item', () => { - given('created baselist-datalist', () => bufferPromise); + it('Selecting next next item', async () => { + dataList.selectNextItem(); + dataList.selectNextItem(); - when('select next next item', () => { - dataList.selectNextItem(); - dataList.selectNextItem(); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('C', 2, 'B', 1)) + .callCount(1); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('C', 2, 'B', 1)) - .callCount(1); - }); - - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting last but one and last item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last but one and next item', () => { - dataList.selectAt(dataList.size() - 2); - dataList.selectNextItem(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Y', 6, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('Z', 7, 'Y', 6)) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); - }); + it('Selecting last but one and last item', async () => { + dataList.selectAt(dataList.size() - 2); + dataList.selectNextItem(); - it('Selecting next after last item', () => { - given('created baselist-datalist', () => bufferPromise); + expect(selectSpy.withArgs('Y', 6, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('Z', 7, 'Y', 6)) + .callCount(1); - when('select last and next item', () => { - dataList.selectLast(); - dataList.selectNextItem(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Z', 7, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, null, NaN)) - .callCount(1); - }); - - then('changeCallback is called twice with new buffer contents', () => { - expect(changeSpy.withArgs([ + expect(changeSpy) + .calledWith([ 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ])) - .callCount(1); - expect(changeSpy.withArgs([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ])) - .callCount(1); - }); - - return then('done'); + ]) + .callCount(1); }); - it('Selecting next index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next index', () => { - buffer.selectNextIndex(); - }); + it('Selecting next after last item', async () => { + dataList.selectLast(); + dataList.selectNextItem(); + + expect(selectSpy.withArgs('Z', 7, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, null, NaN)) + .callCount(1); + + expect(changeSpy.withArgs([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ])) + .callCount(1); + expect(changeSpy.withArgs([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ])) + .callCount(1); + }); - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('B', 1, 'A', 0) - .callCount(1); - }); + it('Selecting next index via buffer', async () => { + buffer.selectNextIndex(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy) + .calledWith('B', 1, 'A', 0) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting next next index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next next index', () => { - buffer.selectNextIndex(); - buffer.selectNextIndex(); - }); + it('Selecting next next index via buffer', async () => { + buffer.selectNextIndex(); + buffer.selectNextIndex(); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('C', 2, 'B', 1)) - .callCount(1); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('C', 2, 'B', 1)) + .callCount(1); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting last but one item and next index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last item and next index', () => { - dataList.selectAt(dataList.size() - 2); - buffer.selectNextIndex(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Y', 6, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('Z', 7, 'Y', 6)) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); - }); + it('Selecting last but one item and next index via buffer', async () => { + dataList.selectAt(dataList.size() - 2); + buffer.selectNextIndex(); - it('Selecting last item and next index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); + expect(selectSpy.withArgs('Y', 6, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('Z', 7, 'Y', 6)) + .callCount(1); - when('select last item and next line', () => { - dataList.selectLast(); - buffer.selectNextIndex(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Z', 7, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, null, NaN)) - .callCount(1); - }); - - then('changeCallback is called twice with new buffer contents', () => { - expect(changeSpy.withArgs([ + expect(changeSpy) + .calledWith([ 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ])) - .callCount(1); - expect(changeSpy.withArgs([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ])) - .callCount(1); - }); - - return then('done'); - }); - - it('Selecting next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next line', () => { - buffer.selectNextLine(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('D', 3, 'A', 0) - .callCount(1); - }); - - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + ]) + .callCount(1); }); - it('Selecting next next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next next line', () => { - buffer.selectNextLine(); - buffer.selectNextLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('D', 3, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('G', 6, 'D', 3)) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I', - 'J', 'K', 'L', - 'M', 'N', 'O' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting last item and next index via buffer', async () => { + dataList.selectLast(); + buffer.selectNextIndex(); + + expect(selectSpy.withArgs('Z', 7, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, null, NaN)) + .callCount(1); + + expect(changeSpy.withArgs([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ])) + .callCount(1); + expect(changeSpy.withArgs([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ])) + .callCount(1); }); - it('Selecting next item and next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); + it('Selecting next line via buffer', async () => { + buffer.selectNextLine(); - when('select next item and next line', () => { - dataList.selectNextItem(); - buffer.selectNextLine(); - }); + expect(selectSpy) + .calledWith('D', 3, 'A', 0) + .callCount(1); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('E', 4, 'B', 1)) - .callCount(1); - }); + expect(changeSpy) + .callCount(0); + }); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + it('Selecting next next line via buffer', async () => { + buffer.selectNextLine(); + buffer.selectNextLine(); - return then('done'); - }); + expect(selectSpy.withArgs('D', 3, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('G', 6, 'D', 3)) + .callCount(1); - it('Selecting next next item and next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next item and next line', () => { - dataList.selectNextItem(); - dataList.selectNextItem(); - buffer.selectNextLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('C', 2, 'B', 1)) - .callCount(1); - expect(selectSpy.withArgs('F', 5, 'C', 2)) - .callCount(1); - }); - - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .calledWith([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I', + 'J', 'K', 'L', + 'M', 'N', 'O' + ]) + .callCount(1); }); - it('Selecting last but one line and next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last but one line and next line', () => { - dataList.selectAt(dataList.size() - 5); - buffer.selectNextLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('V', 6, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('Y', 9, 'V', 6)) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'P', 'Q', 'R', - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); - }); + it('Selecting next item and next line via buffer', async () => { + dataList.selectNextItem(); + buffer.selectNextLine(); - it('Selecting last but one item and next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('E', 4, 'B', 1)) + .callCount(1); - when('select last but one item and next line', () => { - dataList.selectAt(dataList.size() - 2); - buffer.selectNextLine(); - }); + expect(changeSpy) + .callCount(0); + }); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Y', 6, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, null, NaN)) - .callCount(1); - }); + it('Selecting next next item and next line via buffer', async () => { + dataList.selectNextItem(); + dataList.selectNextItem(); + buffer.selectNextLine(); - then('changeCallback is called twice with new buffer contents', () => { - expect(changeSpy.withArgs([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ])) - .callCount(1); - expect(changeSpy.withArgs([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ])) - .callCount(1); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('C', 2, 'B', 1)) + .callCount(1); + expect(selectSpy.withArgs('F', 5, 'C', 2)) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting last but two item and next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); + it('Selecting last but one line and next line via buffer', async () => { + dataList.selectAt(dataList.size() - 5); + buffer.selectNextLine(); - when('select last but two item and next line', () => { - dataList.selectAt(dataList.size() - 3); - buffer.selectNextLine(); - }); + expect(selectSpy.withArgs('V', 6, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('Y', 9, 'V', 6)) + .callCount(1); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('X', 8, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('C', 2, null, NaN)) - .callCount(1); - }); - - then('changeCallback is called twice with new buffer contents', () => { - expect(changeSpy.withArgs([ + expect(changeSpy) + .calledWith([ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ])) - .callCount(1); - expect(changeSpy.withArgs([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ])) - .callCount(1); - }); - - return then('done'); + ]) + .callCount(1); }); - it('Selecting last item and next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last item and next line', () => { - dataList.selectLast(); - buffer.selectNextLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Z', 7, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('B', 1, null, NaN)) - .callCount(1); - }); + it('Selecting last but one item and next line via buffer', async () => { + dataList.selectAt(dataList.size() - 2); + buffer.selectNextLine(); + + expect(selectSpy.withArgs('Y', 6, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, null, NaN)) + .callCount(1); + + expect(changeSpy.withArgs([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ])) + .callCount(1); + expect(changeSpy.withArgs([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ])) + .callCount(1); + }); - then('changeCallback is called twice with new buffer contents', () => { - expect(changeSpy.withArgs([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ])) - .callCount(1); - expect(changeSpy.withArgs([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ])) - .callCount(1); - }); + it('Selecting last but two item and next line via buffer', async () => { + dataList.selectAt(dataList.size() - 3); + buffer.selectNextLine(); + + expect(selectSpy.withArgs('X', 8, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('C', 2, null, NaN)) + .callCount(1); + + expect(changeSpy.withArgs([ + 'P', 'Q', 'R', + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ])) + .callCount(1); + expect(changeSpy.withArgs([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ])) + .callCount(1); + }); - return then('done'); + it('Selecting last item and next line via buffer', async () => { + dataList.selectLast(); + buffer.selectNextLine(); + + expect(selectSpy.withArgs('Z', 7, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('B', 1, null, NaN)) + .callCount(1); + + expect(changeSpy.withArgs([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ])) + .callCount(1); + expect(changeSpy.withArgs([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ])) + .callCount(1); }); }); diff --git a/test/components/base-list/integration/with-cyclical-data-list-select-prev.mocha.js b/test/components/base-list/integration/with-cyclical-data-list-select-prev.mocha.js index 9601354..73cbcd4 100644 --- a/test/components/base-list/integration/with-cyclical-data-list-select-prev.mocha.js +++ b/test/components/base-list/integration/with-cyclical-data-list-select-prev.mocha.js @@ -1,18 +1,15 @@ import CyclicalList from 'ui/data/cyclical-list'; import {createBuffer, createDefaultArray, setBufferSource, changeSpy, selectSpy} from '../helper'; +const expect = chai.expect; -describe('BaseListDataList with CyclicalList: select prev', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; +describe('BaseListDataList with CyclicalList: select prev', () => { let dataList; let buffer; let bufferPromise; - beforeEach(() => { + beforeEach(async () => { buffer = createBuffer(); dataList = new CyclicalList(createDefaultArray()); bufferPromise = setBufferSource(buffer, dataList) @@ -20,293 +17,185 @@ describe('BaseListDataList with CyclicalList: select prev', () => { changeSpy.resetHistory(); selectSpy.resetHistory(); }); + + await bufferPromise; }); - it('Selecting prev item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev item', () => { - dataList.selectPrevItem(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('Z', 7, null, NaN) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting prev item', async () => { + dataList.selectPrevItem(); + + expect(selectSpy) + .calledWith('Z', 7, null, NaN) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting prev prev item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev prev item', () => { - dataList.selectPrevItem(); - dataList.selectPrevItem(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Z', 7, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('Y', 6, 'Z', 7)) - .callCount(1); - }); - - then('changeCallback is called twice with new item and old item', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting prev prev item', async () => { + dataList.selectPrevItem(); + dataList.selectPrevItem(); + + expect(selectSpy.withArgs('Z', 7, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('Y', 6, 'Z', 7)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting second and prev item', () => { - given('created baselist-datalist', () => bufferPromise); + it('Selecting second and prev item', async () => { + dataList.selectAt(1); + dataList.selectPrevItem(); - when('select second and prev item', () => { - dataList.selectAt(1); - dataList.selectPrevItem(); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, 'B', 1)) + .callCount(1); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, 'B', 1)) - .callCount(1); - }); + expect(changeSpy) + .callCount(0); + }); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + it('Selecting prev index via buffer', async () => { + buffer.selectPrevIndex(); - return then('done'); - }); + expect(selectSpy) + .calledWith('Z', 7, null, NaN) + .callCount(1); - it('Selecting prev index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev index', () => { - buffer.selectPrevIndex(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('Z', 7, null, NaN) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting prev prev index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev prev index', () => { - buffer.selectPrevIndex(); - buffer.selectPrevIndex(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Z', 7, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('Y', 6, 'Z', 7)) - .callCount(1); - }); - - then('changeCallback is called once with new item and old item', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting prev prev index via buffer', async () => { + buffer.selectPrevIndex(); + buffer.selectPrevIndex(); + + expect(selectSpy.withArgs('Z', 7, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('Y', 6, 'Z', 7)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting second item and prev index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); + it('Selecting second item and prev index via buffer', async () => { + dataList.selectAt(1); + buffer.selectPrevIndex(); - when('select last item and prev index', () => { - dataList.selectAt(1); - buffer.selectPrevIndex(); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, 'B', 1)) + .callCount(1); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, 'B', 1)) - .callCount(1); - }); + expect(changeSpy) + .callCount(0); + }); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + it('Selecting prev line via buffer', async () => { + buffer.selectPrevLine(); - return then('done'); - }); + expect(selectSpy) + .calledWith('Y', 6, null, NaN) + .callCount(1); - it('Selecting prev line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev index', () => { - buffer.selectPrevLine(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('Y', 6, null, NaN) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting prev prev line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev prev line', () => { - buffer.selectPrevLine(); - buffer.selectPrevLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Y', 6, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('V', 3, 'Y', 6)) - .callCount(1); - }); - - then('changeCallback is called once with new item and old item', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting prev prev line via buffer', async () => { + buffer.selectPrevLine(); + buffer.selectPrevLine(); + + expect(selectSpy.withArgs('Y', 6, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('V', 3, 'Y', 6)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting second item and prev line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select second item and prev line', () => { - dataList.selectAt(1); - buffer.selectPrevLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('Z', 7, null, NaN)) - .callCount(1); - }); - - then('changeCallback is called once with new item and old item', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting second item and prev line via buffer', async () => { + dataList.selectAt(1); + buffer.selectPrevLine(); + + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('Z', 7, null, NaN)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting third item and prev line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select third item and prev line', () => { - dataList.selectAt(2); - buffer.selectPrevLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('C', 2, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('X', 8, null, NaN)) - .callCount(1); - }); - - then('changeCallback is called once with new item and old item', () => { - expect(changeSpy) - .calledWith([ - 'P', 'Q', 'R', - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting third item and prev line via buffer', async () => { + dataList.selectAt(2); + buffer.selectPrevLine(); + + expect(selectSpy.withArgs('C', 2, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('X', 8, null, NaN)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'P', 'Q', 'R', + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting second line and prev line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select second line and prev line', () => { - buffer.selectNextLine(); - buffer.selectPrevLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('D', 3, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, 'D', 3)) - .callCount(1); - }); + it('Selecting second line and prev line via buffer', async () => { + buffer.selectNextLine(); + buffer.selectPrevLine(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy.withArgs('D', 3, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, 'D', 3)) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); }); diff --git a/test/components/base-list/integration/with-data-list-add-one.mocha.js b/test/components/base-list/integration/with-data-list-add-one.mocha.js index be73e33..698f618 100644 --- a/test/components/base-list/integration/with-data-list-add-one.mocha.js +++ b/test/components/base-list/integration/with-data-list-add-one.mocha.js @@ -1,13 +1,10 @@ import {createBuffer, setBufferSource, changeSpy, selectSpy, createDefaultDataList} from '../helper'; +const expect = chai.expect; -describe('BaseListDataList: add one item', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; - it('before the frame', () => { +describe('BaseListDataList: add one item', () => { + it('before the frame', async () => { const buffer = createBuffer({ padding: 1, lineSize: 3, @@ -15,40 +12,29 @@ describe('BaseListDataList: add one item', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); - - given('frame moved from source beginning', () => { - dataList.select('H'); - buffer._changeItems(); + dataList.select('H'); + buffer._changeItems(); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); - - when('add element to source - before buffer frame', () => { - dataList.addAt('+1', 0); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('changeCallback should be called once with shifted items around new index', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'C', 'D', 'E', - 'F', 'G', 'H', - 'I', 'J', 'K' - ]); - }); + dataList.addAt('+1', 0); - then('selectCallback should be called with same element on new index', () => { - expect(selectSpy) - .callCount(0); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'C', 'D', 'E', + 'F', 'G', 'H', + 'I', 'J', 'K' + ]); - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('before the frame, pushing selected item to new line', () => { + it('before the frame, pushing selected item to new line', async () => { const buffer = createBuffer({ padding: 2, lineSize: 3, @@ -58,43 +44,33 @@ describe('BaseListDataList: add one item', () => { // buffer frame position should change - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); + await setBufferSource(buffer, dataList); - given('frame moved from source beginning', () => { - dataList.select('H'); - buffer._changeItems(); - dataList.select('I'); + dataList.select('H'); + buffer._changeItems(); + dataList.select('I'); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - when('add element to source - before buffer frame', () => { - dataList.addAt('+1', 0); - }); + dataList.addAt('+1', 0); // buffer frame should be moved - then('changeCallback should be called with CHANGED buffer frame position', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'C', 'D', 'E', - 'F', 'G', 'H', - 'I', 'J', 'K', - 'L', 'M', 'N', - 'O', 'P', 'Q' - ]); - }); - - then('selectCallback should be called with same element on new index', () => { - expect(selectSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'C', 'D', 'E', + 'F', 'G', 'H', + 'I', 'J', 'K', + 'L', 'M', 'N', + 'O', 'P', 'Q' + ]); + + expect(selectSpy) + .callCount(0); }); - it('before the frame, pushing selected item to LOL', () => { + it('before the frame, pushing selected item to LOL', async () => { const buffer = createBuffer({ padding: 1, lineSize: 3, @@ -104,41 +80,31 @@ describe('BaseListDataList: add one item', () => { // buffer frame position should change ONCE - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); + await setBufferSource(buffer, dataList); - given('frame moved from source beginning', () => { - dataList.select('H'); - buffer._changeItems(); - dataList.select('I'); + dataList.select('H'); + buffer._changeItems(); + dataList.select('I'); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - when('add element to source - before buffer frame', () => { - dataList.addAt('+1', 0); - }); + dataList.addAt('+1', 0); // buffer frame should be moved - then('changeCallback should be called with CHANGED buffer frame position', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'F', 'G', 'H', - 'I', 'J', 'K', - 'L', 'M', 'N' - ]); - }); - - then('selectCallback should be called with same element on new index', () => { - expect(selectSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'F', 'G', 'H', + 'I', 'J', 'K', + 'L', 'M', 'N' + ]); + + expect(selectSpy) + .callCount(0); }); - it('in the frame before selected', () => { + it('in the frame before selected', async () => { const buffer = createBuffer({ padding: 1, lineSize: 3, @@ -146,40 +112,29 @@ describe('BaseListDataList: add one item', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); + dataList.select('H'); + buffer._changeItems(); - given('frame moved from source beginning', () => { - dataList.select('H'); - buffer._changeItems(); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); + dataList.addAt('+', 4); - when('add element to source - in the frame before selected', () => { - dataList.addAt('+', 4); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'D', '+', 'E', + 'F', 'G', 'H', + 'I', 'J', 'K' + ]); - then('changeCallback should be called ONCE with shifted items around new index', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'D', '+', 'E', - 'F', 'G', 'H', - 'I', 'J', 'K' - ]); - }); - - then('selectCallback should be called with same element on new index', () => { - expect(selectSpy) - .callCount(0); - }); - - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('selected', () => { + it('selected', async () => { const buffer = createBuffer({ padding: 2, lineSize: 3, @@ -187,42 +142,31 @@ describe('BaseListDataList: add one item', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); + dataList.select('K'); + buffer._changeItems(); - given('frame moved from source beginning', () => { - dataList.select('K'); - buffer._changeItems(); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); + dataList.addAt('+', 10); - when('add element to source - at the index of selected element', () => { - dataList.addAt('+', 10); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'D', 'E', 'F', + 'G', 'H', 'I', + 'J', '+', 'K', + 'L', 'M', 'N', + 'O', 'P', 'Q' + ]); - then('selected element must shift right', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'D', 'E', 'F', - 'G', 'H', 'I', - 'J', '+', 'K', - 'L', 'M', 'N', - 'O', 'P', 'Q' - ]); - }); - - then('selected element new index', () => { - expect(selectSpy) - .callCount(0); - }); - - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('in buffer frame after selected', () => { + it('in buffer frame after selected', async () => { const buffer = createBuffer({ padding: 2, lineSize: 3, @@ -230,42 +174,31 @@ describe('BaseListDataList: add one item', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); - - given('frame moved from source beginning', () => { - dataList.select('K'); - buffer._changeItems(); - - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); + dataList.select('K'); + buffer._changeItems(); - when('add element to source - at the index in buffer frame after selected element', () => { - dataList.addAt('+', 11); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('elements after selected must shift right', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'D', 'E', 'F', - 'G', 'H', 'I', - 'J', 'K', '+', - 'L', 'M', 'N', - 'O', 'P', 'Q' - ]); - }); + dataList.addAt('+', 11); - then('selectCallback should not be called', () => { - expect(selectSpy) - .callCount(0); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'D', 'E', 'F', + 'G', 'H', 'I', + 'J', 'K', '+', + 'L', 'M', 'N', + 'O', 'P', 'Q' + ]); - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('after buffer frame', () => { + it('after buffer frame', async () => { const buffer = createBuffer({ padding: 2, lineSize: 3, @@ -273,31 +206,19 @@ describe('BaseListDataList: add one item', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); - - given('frame moved from source beginning', () => { - dataList.select('K'); - buffer._changeItems(); + dataList.select('K'); + buffer._changeItems(); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - when('after buffer frame', () => { - dataList.addAt('+', 18); - }); - - then('changeCallback should not be called', () => { - expect(changeSpy) - .callCount(0); - }); - - then('selectCallback should not be called', () => { - expect(selectSpy) - .callCount(0); - }); + dataList.addAt('+', 18); - return then('done'); + expect(changeSpy) + .callCount(0); + expect(selectSpy) + .callCount(0); }); }); diff --git a/test/components/base-list/integration/with-data-list-change-group.mocha.js b/test/components/base-list/integration/with-data-list-change-group.mocha.js index 4084e4a..edddf03 100644 --- a/test/components/base-list/integration/with-data-list-change-group.mocha.js +++ b/test/components/base-list/integration/with-data-list-change-group.mocha.js @@ -10,471 +10,298 @@ import { createOtherArray } from '../helper'; +const expect = chai.expect; -describe('BaseListDataList: change group of items', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; +describe('BaseListDataList: change group of items', () => { let buffer; beforeEach(() => { buffer = createBuffer(); }); - it('Setting empty List', () => { + it('Setting empty List', async () => { const dataList = createEmptyDataList(); - given('created empty baselist-datalist', () => setBufferSource(buffer, dataList)); - - then('changeCallback not called', () => { - expect(changeSpy).callCount(0); - }); + await setBufferSource(buffer, dataList); - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + expect(changeSpy).callCount(0); + expect(selectSpy).callCount(0); }); - it('Re-setting empty Array', () => { + it('Re-setting empty Array', async () => { const dataList = createEmptyDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created empty baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set empty array of items', () => dataList.setItems(createEmptyArray())); + dataList.setItems(createEmptyArray()); - then('changeCallback not called', () => { - expect(changeSpy).callCount(0); - }); - - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + expect(changeSpy).callCount(0); + expect(selectSpy).callCount(0); }); - it('Setting items to List with setItems method', () => { + it('Setting items to List with setItems method', async () => { const dataList = createEmptyDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created empty baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => dataList.setItems(createDefaultArray())); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ]); - }); + dataList.setItems(createDefaultArray()); - then('selectCallback called once with first item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('A', 0, null, NaN); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ]); - return then('done'); + expect(selectSpy) + .callCount(1) + .calledWith('A', 0, null, NaN); }); - it('Clearing not empty List', () => { + it('Clearing not empty List', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + dataList.clear(); - when('set array of items', () => dataList.clear()); + expect(changeSpy) + .callCount(1) + .calledWith([]); - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([]); - }); - - then('selectCallback called once with null item', () => { - // Из-за особенностей List.clear(), будет вызываться selectCallback. - // Не сильно критично, но по логике этот вызов не нужен. - expect(selectSpy) - .callCount(1) - .calledWith(null, NaN, 'A', 0); - }); - - return then('done'); + // Из-за особенностей List.clear(), будет вызываться selectCallback. + // Не сильно критично, но по логике этот вызов не нужен. + expect(selectSpy) + .callCount(1) + .calledWith(null, NaN, 'A', 0); }); - it('Clearing empty List', () => { + it('Clearing empty List', async () => { const dataList = createEmptyDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created empty baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => dataList.clear()); + dataList.clear(); - then('changeCallback not called', () => { - expect(changeSpy).callCount(0); - }); + expect(changeSpy).callCount(0); - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + expect(selectSpy).callCount(0); }); - it('Adding empty array to empty List', () => { + it('Adding empty array to empty List', async () => { const dataList = createEmptyDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created empty baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => { - const array = createEmptyArray(); - return dataList.addItems(array); - }); + const array = createEmptyArray(); + dataList.addItems(array); - then('changeCallback not called', () => { - expect(changeSpy).callCount(0); - }); - - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + expect(changeSpy).callCount(0); + expect(selectSpy).callCount(0); }); - it('Adding empty array to filled List', () => { + it('Adding empty array to filled List', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => { - const array = createEmptyArray(); - return dataList.addItems(array); - }); - - then('changeCallback not called', () => { - expect(changeSpy).callCount(0); - }); + const array = createEmptyArray(); + dataList.addItems(array); - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); + expect(changeSpy).callCount(0); - return then('done'); + expect(selectSpy).callCount(0); }); - it('Adding filled array to empty List', () => { + it('Adding filled array to empty List', async () => { const dataList = createEmptyDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created empty baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => { - const array = createDefaultArray(); - return dataList.addItems(array); - }); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ]); - }); - - then('selectCallback called once with A item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('A', 0, null, NaN); - }); - - return then('done'); + const array = createDefaultArray(); + dataList.addItems(array); + + expect(changeSpy) + .callCount(1) + .calledWith([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ]); + + expect(selectSpy) + .callCount(1) + .calledWith('A', 0, null, NaN); }); - it('Adding filled array to filled List', () => { + it('Adding filled array to filled List', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + const array = createOtherArray(); + dataList.addItems(array); - when('set array of items', () => { - const array = createOtherArray(); - return dataList.addItems(array); - }); + expect(changeSpy).callCount(0); + expect(selectSpy).callCount(0); + }); - then('changeCallback not called', () => { - expect(changeSpy).callCount(0); - }); + it('Adding array before buffer without line shifting', async () => { + const dataList = createDefaultDataList(); - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); + await setBufferSource(buffer, dataList); + dataList.select('K'); - return then('done'); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - it('Adding array before buffer without line shifting', () => { - const dataList = createDefaultDataList(); + const array = createOtherArray().slice(0, 3); + dataList.addItemsAt(array, 0); + expect(changeSpy).callCount(0); + expect(selectSpy).callCount(0); + }); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - dataList.select('K'); + it('Adding array before buffer with line shifting', async () => { + const dataList = createDefaultDataList(); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + await setBufferSource(buffer, dataList); + dataList.select('K'); - when('set array of items', () => { - const array = createOtherArray().slice(0, 3); - return dataList.addItemsAt(array, 0); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('changeCallback not called', () => { - expect(changeSpy).callCount(0); - }); + const array = createOtherArray().slice(0, 2); + dataList.addItemsAt(array, 0); - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'E', 'F', 'G', + 'H', 'I', 'J', + 'K', 'L', 'M', + 'N', 'O', 'P', + 'Q', 'R', 'S' + ]); - return then('done'); + expect(selectSpy).callCount(0); }); - it('Adding array before buffer with line shifting', () => { + it('Adding array after buffer', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); + + const array = createOtherArray().slice(0, 3); + dataList.addItemsAt(array, dataList.size()); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - dataList.select('K'); - - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => { - const array = createOtherArray().slice(0, 2); - return dataList.addItemsAt(array, 0); - }); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'E', 'F', 'G', - 'H', 'I', 'J', - 'K', 'L', 'M', - 'N', 'O', 'P', - 'Q', 'R', 'S' - ]); - }); - - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + expect(changeSpy).callCount(0); + expect(selectSpy).callCount(0); }); - it('Adding array after buffer', () => { + it('Adding array in buffer before selected element without line shifting', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + const array = createOtherArray().slice(0, 3); + dataList.addItemsAt(array, 0); - when('set array of items', () => { - const array = createOtherArray().slice(0, 3); - return dataList.addItemsAt(array, dataList.size()); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'alpha', 'beta', 'gamma', + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ]); - then('changeCallback not called', () => { - expect(changeSpy).callCount(0); - }); - - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + expect(selectSpy).callCount(0); }); - it('Adding array in buffer before selected element without line shifting', () => { + it('Adding double array in buffer before selected element without line shifting', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => { - const array = createOtherArray().slice(0, 3); - return dataList.addItemsAt(array, 0); - }); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'alpha', 'beta', 'gamma', - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ]); - }); - - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); - }); - - it('Adding double array in buffer before selected element without line shifting', () => { - const dataList = createDefaultDataList(); + const array = createOtherArray().slice(0, 6); + dataList.addItemsAt(array, 0); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'alpha', 'beta', 'gamma', + 'delta', 'epsilon', 'zeta', + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ]); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => { - const array = createOtherArray().slice(0, 6); - return dataList.addItemsAt(array, 0); - }); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'alpha', 'beta', 'gamma', - 'delta', 'epsilon', 'zeta', - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ]); - }); - - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + expect(selectSpy).callCount(0); }); - it('Adding array in buffer before selected element with line shifting', () => { + it('Adding array in buffer before selected element with line shifting', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); + + const array = createOtherArray().slice(0, 2); + dataList.addItemsAt(array, 0); - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => { - const array = createOtherArray().slice(0, 2); - return dataList.addItemsAt(array, 0); - }); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'alpha', 'beta', 'A', - 'B', 'C', 'D', - 'E', 'F', 'G' - ]); - }); - - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'alpha', 'beta', 'A', + 'B', 'C', 'D', + 'E', 'F', 'G' + ]); + + expect(selectSpy).callCount(0); }); - it('Adding array in buffer after selected element', () => { + it('Adding array in buffer after selected element', async () => { const dataList = createDefaultDataList(); - - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set array of items', () => { - const array = createOtherArray().slice(0, 3); - return dataList.addItemsAt(array, 1); - }); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'A', 'alpha', 'beta', - 'gamma', 'B', 'C', - 'D', 'E', 'F' - ]); - }); - - then('selectCallback not called', () => { - expect(selectSpy).callCount(0); - }); - - return then('done'); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); + + const array = createOtherArray().slice(0, 3); + dataList.addItemsAt(array, 1); + + expect(changeSpy) + .callCount(1) + .calledWith([ + 'A', 'alpha', 'beta', + 'gamma', 'B', 'C', + 'D', 'E', 'F' + ]); + expect(selectSpy).callCount(0); }); }); diff --git a/test/components/base-list/integration/with-data-list-getters.mocha.js b/test/components/base-list/integration/with-data-list-getters.mocha.js index d123274..c67eb18 100644 --- a/test/components/base-list/integration/with-data-list-getters.mocha.js +++ b/test/components/base-list/integration/with-data-list-getters.mocha.js @@ -1,148 +1,115 @@ import List from 'ui/data/list'; import {createBuffer, setBufferSource, createEmptyDataList, createDefaultArray} from '../helper'; +const expect = chai.expect; -describe('BaseListDataList: getters', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; +describe('BaseListDataList: getters', () => { let buffer; beforeEach(() => { - given('created empty baselist-datalist', () => { - buffer = createBuffer(); - }); + buffer = createBuffer(); }); - it('When null', () => { - when('set source', () => setBufferSource(buffer, null)); - - then('local variables has values', () => { - expect(buffer.getSourceStart()).eql(NaN); - expect(buffer.getSourceEnd()).eql(NaN); - expect(buffer.getSourceIndex()).eql(NaN); - expect(buffer.getSourceSize()).eql(0); + it('When null', async () => { + await setBufferSource(buffer, null); - expect(buffer.getLocalStart()).eql(NaN); - expect(buffer.getLocalEnd()).eql(NaN); - expect(buffer.getLocalIndex()).eql(NaN); - expect(buffer.getLocalSize()).eql(0); + expect(buffer.getSourceStart()).eql(NaN); + expect(buffer.getSourceEnd()).eql(NaN); + expect(buffer.getSourceIndex()).eql(NaN); + expect(buffer.getSourceSize()).eql(0); - expect(buffer.getGlobalStart()).eql(NaN); - expect(buffer.getGlobalEnd()).eql(NaN); - expect(buffer.getGlobalIndex()).eql(NaN); - expect(buffer.getGlobalSize()).eql(0); - }); + expect(buffer.getLocalStart()).eql(NaN); + expect(buffer.getLocalEnd()).eql(NaN); + expect(buffer.getLocalIndex()).eql(NaN); + expect(buffer.getLocalSize()).eql(0); - return then('done'); + expect(buffer.getGlobalStart()).eql(NaN); + expect(buffer.getGlobalEnd()).eql(NaN); + expect(buffer.getGlobalIndex()).eql(NaN); + expect(buffer.getGlobalSize()).eql(0); }); - it('When empty array', () => { - when('set source', () => { - const dataList = createEmptyDataList(); - return setBufferSource(buffer, dataList); - }); - - then('local variables has values', () => { - expect(buffer.getSourceStart()).eql(NaN); - expect(buffer.getSourceEnd()).eql(NaN); - expect(buffer.getSourceIndex()).eql(NaN); - expect(buffer.getSourceSize()).eql(0); - - expect(buffer.getLocalStart()).eql(NaN); - expect(buffer.getLocalEnd()).eql(NaN); - expect(buffer.getLocalIndex()).eql(NaN); - expect(buffer.getLocalSize()).eql(0); - - expect(buffer.getGlobalStart()).eql(NaN); - expect(buffer.getGlobalEnd()).eql(NaN); - expect(buffer.getGlobalIndex()).eql(NaN); - expect(buffer.getGlobalSize()).eql(0); - }); - - return then('done'); + it('When empty array', async () => { + const dataList = createEmptyDataList(); + await setBufferSource(buffer, dataList); + + expect(buffer.getSourceStart()).eql(NaN); + expect(buffer.getSourceEnd()).eql(NaN); + expect(buffer.getSourceIndex()).eql(NaN); + expect(buffer.getSourceSize()).eql(0); + + expect(buffer.getLocalStart()).eql(NaN); + expect(buffer.getLocalEnd()).eql(NaN); + expect(buffer.getLocalIndex()).eql(NaN); + expect(buffer.getLocalSize()).eql(0); + + expect(buffer.getGlobalStart()).eql(NaN); + expect(buffer.getGlobalEnd()).eql(NaN); + expect(buffer.getGlobalIndex()).eql(NaN); + expect(buffer.getGlobalSize()).eql(0); }); - it('When size is 0', () => { - when('set source', () => { - const array = createDefaultArray().slice(0, 1); - const dataList = new List(array); - return setBufferSource(buffer, dataList); - }); - - then('local variables has values', () => { - expect(buffer.getSourceStart()).eql(0); - expect(buffer.getSourceEnd()).eql(0); - expect(buffer.getSourceIndex()).eql(0); - expect(buffer.getSourceSize()).eql(1); - - expect(buffer.getLocalStart()).eql(0); - expect(buffer.getLocalEnd()).eql(0); - expect(buffer.getLocalIndex()).eql(0); - expect(buffer.getLocalSize()).eql(1); - - expect(buffer.getGlobalStart()).eql(0); - expect(buffer.getGlobalEnd()).eql(0); - expect(buffer.getGlobalIndex()).eql(0); - expect(buffer.getGlobalSize()).eql(1); - }); - - return then('done'); + it('When size is 0', async () => { + const array = createDefaultArray().slice(0, 1); + const dataList = new List(array); + await setBufferSource(buffer, dataList); + + expect(buffer.getSourceStart()).eql(0); + expect(buffer.getSourceEnd()).eql(0); + expect(buffer.getSourceIndex()).eql(0); + expect(buffer.getSourceSize()).eql(1); + + expect(buffer.getLocalStart()).eql(0); + expect(buffer.getLocalEnd()).eql(0); + expect(buffer.getLocalIndex()).eql(0); + expect(buffer.getLocalSize()).eql(1); + + expect(buffer.getGlobalStart()).eql(0); + expect(buffer.getGlobalEnd()).eql(0); + expect(buffer.getGlobalIndex()).eql(0); + expect(buffer.getGlobalSize()).eql(1); }); - it('When size is 2', () => { - when('set source', () => { - const array = createDefaultArray().slice(0, 2); - const dataList = new List(array); - return setBufferSource(buffer, dataList); - }); - - then('local variables has values', () => { - expect(buffer.getSourceStart()).eql(0); - expect(buffer.getSourceEnd()).eql(1); - expect(buffer.getSourceIndex()).eql(0); - expect(buffer.getSourceSize()).eql(2); - - expect(buffer.getLocalStart()).eql(0); - expect(buffer.getLocalEnd()).eql(1); - expect(buffer.getLocalIndex()).eql(0); - expect(buffer.getLocalSize()).eql(2); - - expect(buffer.getGlobalStart()).eql(0); - expect(buffer.getGlobalEnd()).eql(1); - expect(buffer.getGlobalIndex()).eql(0); - expect(buffer.getGlobalSize()).eql(2); - }); - - return then('done'); + it('When size is 2', async () => { + const array = createDefaultArray().slice(0, 2); + const dataList = new List(array); + await setBufferSource(buffer, dataList); + + expect(buffer.getSourceStart()).eql(0); + expect(buffer.getSourceEnd()).eql(1); + expect(buffer.getSourceIndex()).eql(0); + expect(buffer.getSourceSize()).eql(2); + + expect(buffer.getLocalStart()).eql(0); + expect(buffer.getLocalEnd()).eql(1); + expect(buffer.getLocalIndex()).eql(0); + expect(buffer.getLocalSize()).eql(2); + + expect(buffer.getGlobalStart()).eql(0); + expect(buffer.getGlobalEnd()).eql(1); + expect(buffer.getGlobalIndex()).eql(0); + expect(buffer.getGlobalSize()).eql(2); }); - it('When size is 3', () => { - when('set source', () => { - const array = createDefaultArray().slice(0, 3); - const dataList = new List(array); - return setBufferSource(buffer, dataList); - }); - - then('local variables has values', () => { - expect(buffer.getSourceStart()).eql(0); - expect(buffer.getSourceEnd()).eql(2); - expect(buffer.getSourceIndex()).eql(0); - expect(buffer.getSourceSize()).eql(3); - - expect(buffer.getLocalStart()).eql(0); - expect(buffer.getLocalEnd()).eql(2); - expect(buffer.getLocalIndex()).eql(0); - expect(buffer.getLocalSize()).eql(3); - - expect(buffer.getGlobalStart()).eql(0); - expect(buffer.getGlobalEnd()).eql(2); - expect(buffer.getGlobalIndex()).eql(0); - expect(buffer.getGlobalSize()).eql(3); - }); - - return then('done'); + it('When size is 3', async () => { + const array = createDefaultArray().slice(0, 3); + const dataList = new List(array); + await setBufferSource(buffer, dataList); + + expect(buffer.getSourceStart()).eql(0); + expect(buffer.getSourceEnd()).eql(2); + expect(buffer.getSourceIndex()).eql(0); + expect(buffer.getSourceSize()).eql(3); + + expect(buffer.getLocalStart()).eql(0); + expect(buffer.getLocalEnd()).eql(2); + expect(buffer.getLocalIndex()).eql(0); + expect(buffer.getLocalSize()).eql(3); + + expect(buffer.getGlobalStart()).eql(0); + expect(buffer.getGlobalEnd()).eql(2); + expect(buffer.getGlobalIndex()).eql(0); + expect(buffer.getGlobalSize()).eql(3); }); }); diff --git a/test/components/base-list/integration/with-data-list-remove-one.mocha.js b/test/components/base-list/integration/with-data-list-remove-one.mocha.js index 16c5c76..9b9bc5b 100644 --- a/test/components/base-list/integration/with-data-list-remove-one.mocha.js +++ b/test/components/base-list/integration/with-data-list-remove-one.mocha.js @@ -1,112 +1,70 @@ import {createBuffer, setBufferSource, changeSpy, selectSpy, createDefaultDataList} from '../helper'; +const expect = chai.expect; -describe('BaseListDataList: remove one item', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; +describe('BaseListDataList: remove one item', () => { let dataList; let buffer; - let bufferPromise; - - beforeEach(() => { - given('created baselist-datalist with source', () => { - buffer = createBuffer({ - padding: 1, - lineSize: 3, - loadOnLeft: 1 - }); - dataList = createDefaultDataList(); - bufferPromise = setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); - return bufferPromise; + beforeEach(async () => { + buffer = createBuffer({ + padding: 1, + lineSize: 3, + loadOnLeft: 1 }); + dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList) + .then(() => { + changeSpy.resetHistory(); + selectSpy.resetHistory(); + }); }); it('Check size on element removing', () => { - when('remove first element', () => { - dataList.removeAt(0); - }); + dataList.removeAt(0); - then('size should decreased by one', () => { - expect(buffer.getGlobalSize()).eql(25); - expect(buffer.getSourceSize()).eql(25); - expect(buffer.getLocalSize()).eql(6); - }); - - return then('done'); + expect(buffer.getGlobalSize()).eql(25); + expect(buffer.getSourceSize()).eql(25); + expect(buffer.getLocalSize()).eql(6); }); it('Remove selected element', () => { - when('remove first element', () => { - dataList.removeAt(0); - }); - - then('items should be updated before select', () => { - expect(changeSpy).calledBefore(selectSpy); - }); - - then('changeCallback should be called', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'B', 'C', 'D', - 'E', 'F', 'G' - ]); - }); - - then('selectCallback should be called with next element on same index', () => { - expect(selectSpy) - .callCount(1) - .calledWith('B', 0, null, NaN); - }); - - return then('done'); + dataList.removeAt(0); + expect(changeSpy).calledBefore(selectSpy); + + expect(changeSpy) + .callCount(1) + .calledWith([ + 'B', 'C', 'D', + 'E', 'F', 'G' + ]); + + expect(selectSpy) + .callCount(1) + .calledWith('B', 0, null, NaN); }); it('Remove not selected element', () => { - when('remove first element', () => { - dataList.removeAt(1); - }); - - then('changeCallback should be called', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'A', 'C', 'D', - 'E', 'F', 'G' - ]); - }); - - then('selectCallback should not be called', () => { - expect(selectSpy) - .callCount(0); - }); - - return then('done'); + dataList.removeAt(1); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'A', 'C', 'D', + 'E', 'F', 'G' + ]); + + expect(selectSpy) + .callCount(0); }); it('Remove element out of buffer', () => { - when('remove first element', () => { - dataList.removeAt(6); - }); + dataList.removeAt(6); - then('changeCallback should not be called', () => { - expect(changeSpy) - .callCount(0); - }); - - then('selectCallback should not be called', () => { - expect(selectSpy) - .callCount(0); - }); + expect(changeSpy) + .callCount(0); - return then('done'); + expect(selectSpy) + .callCount(0); }); }); diff --git a/test/components/base-list/integration/with-data-list-select-next-line.mocha.js b/test/components/base-list/integration/with-data-list-select-next-line.mocha.js index 84bd5ed..243b297 100644 --- a/test/components/base-list/integration/with-data-list-select-next-line.mocha.js +++ b/test/components/base-list/integration/with-data-list-select-next-line.mocha.js @@ -1,11 +1,8 @@ import {createBuffer, setBufferSource, changeSpy, selectSpy, createDataList} from '../helper'; -describe('BaseListDataList: select next line', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; +const expect = chai.expect; +describe('BaseListDataList: select next line', () => { let buffer; let dataList; @@ -38,65 +35,50 @@ describe('BaseListDataList: select next line', () => { // '84', '85', '86', '87', '88', '89', // '90', '91', '92', '93' - it('Selecting 71-th item', () => { - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + it('Selecting 71-th item', async () => { + await setBufferSource(buffer, dataList); - when('select 71-th item', () => { - dataList.selectAt(71); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - '48', '49', '50', '51', '52', '53', - '54', '55', '56', '57', '58', '59', - '60', '61', '62', '63', '64', '65', - '66', '67', '68', '69', '70', '71', - '72', '73', '74', '75', '76', '77', - '78', '79', '80', '81', '82', '83', - '84', '85', '86', '87', '88', '89' - ]); - }); + dataList.selectAt(71); - return then('done'); + expect(changeSpy) + .callCount(1) + .calledWith([ + '48', '49', '50', '51', '52', '53', + '54', '55', '56', '57', '58', '59', + '60', '61', '62', '63', '64', '65', + '66', '67', '68', '69', '70', '71', + '72', '73', '74', '75', '76', '77', + '78', '79', '80', '81', '82', '83', + '84', '85', '86', '87', '88', '89' + ]); }); - it('Selecting next lines after 71-th item', () => { - given('created baselist-datalist', () => setBufferSource(buffer, dataList) - .then(() => { - dataList.selectAt(71); - }) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + it('Selecting next lines after 71-th item', async () => { + await setBufferSource(buffer, dataList); - when('select next line five times', () => { - buffer.selectNextLine(); // 77-th item - buffer.selectNextLine(); // 83-th item - buffer.selectNextLine(); // 89-th item - buffer.selectNextLine(); // 89-th item - buffer.selectNextLine(); // 89-th item - }); + dataList.selectAt(71); - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - '60', '61', '62', '63', '64', '65', - '66', '67', '68', '69', '70', '71', - '72', '73', '74', '75', '76', '77', - '78', '79', '80', '81', '82', '83', - '84', '85', '86', '87', '88', '89', - '90', '91', '92', '93' - ]); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); + + buffer.selectNextLine(); // 77-th item + buffer.selectNextLine(); // 83-th item + buffer.selectNextLine(); // 89-th item + buffer.selectNextLine(); // 89-th item + buffer.selectNextLine(); // 89-th item - return then('done'); + expect(changeSpy) + .callCount(1) + .calledWith([ + '60', '61', '62', '63', '64', '65', + '66', '67', '68', '69', '70', '71', + '72', '73', '74', '75', '76', '77', + '78', '79', '80', '81', '82', '83', + '84', '85', '86', '87', '88', '89', + '90', '91', '92', '93' + ]); }); }); diff --git a/test/components/base-list/integration/with-data-list-select-next.mocha.js b/test/components/base-list/integration/with-data-list-select-next.mocha.js index 3426868..dc29a45 100644 --- a/test/components/base-list/integration/with-data-list-select-next.mocha.js +++ b/test/components/base-list/integration/with-data-list-select-next.mocha.js @@ -1,16 +1,13 @@ import {createBuffer, setBufferSource, changeSpy, selectSpy, createDefaultDataList} from '../helper'; -describe('BaseListDataList: select next', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; +const expect = chai.expect; +describe('BaseListDataList: select next', () => { let dataList; let buffer; let bufferPromise; - beforeEach(() => { + beforeEach(async () => { buffer = createBuffer(); dataList = createDefaultDataList(); bufferPromise = setBufferSource(buffer, dataList) @@ -18,310 +15,192 @@ describe('BaseListDataList: select next', () => { changeSpy.resetHistory(); selectSpy.resetHistory(); }); - }); - - it('Selecting next item', () => { - given('created baselist-datalist', () => bufferPromise); - when('select next item', () => { - dataList.selectNextItem(); - }); + await bufferPromise; + }); - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('B', 1, 'A', 0) - .callCount(1); - }); + it('Selecting next item', async () => { + dataList.selectNextItem(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy) + .calledWith('B', 1, 'A', 0) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting next next item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next next item', () => { - dataList.selectNextItem(); - dataList.selectNextItem(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('C', 2, 'B', 1)) - .callCount(1); - }); + it('Selecting next next item', async () => { + dataList.selectNextItem(); + dataList.selectNextItem(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('C', 2, 'B', 1)) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting last but one and last item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last but one and next item', () => { - dataList.selectAt(dataList.size() - 2); - dataList.selectNextItem(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Y', 6, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('Z', 7, 'Y', 6)) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting last but one and last item', async () => { + dataList.selectAt(dataList.size() - 2); + dataList.selectNextItem(); + + expect(selectSpy.withArgs('Y', 6, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('Z', 7, 'Y', 6)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting next after last item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last and next item', () => { - dataList.selectLast(); - dataList.selectNextItem(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('Z', 7, null, NaN) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting next after last item', async () => { + dataList.selectLast(); + dataList.selectNextItem(); + + expect(selectSpy) + .calledWith('Z', 7, null, NaN) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting next index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); + it('Selecting next index via buffer', async () => { + buffer.selectNextIndex(); - when('select next index', () => { - buffer.selectNextIndex(); - }); + expect(selectSpy) + .calledWith('B', 1, 'A', 0) + .callCount(1); - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('B', 1, 'A', 0) - .callCount(1); - }); - - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting next next index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next next index', () => { - buffer.selectNextIndex(); - buffer.selectNextIndex(); - }); + it('Selecting next next index via buffer', async () => { + buffer.selectNextIndex(); + buffer.selectNextIndex(); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('C', 2, 'B', 1)) - .callCount(1); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('C', 2, 'B', 1)) + .callCount(1); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting last but one item and next index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last item and next index', () => { - dataList.selectAt(dataList.size() - 2); - buffer.selectNextIndex(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('Y', 6, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('Z', 7, 'Y', 6)) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting last but one item and next index via buffer', async () => { + dataList.selectAt(dataList.size() - 2); + buffer.selectNextIndex(); + + expect(selectSpy.withArgs('Y', 6, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('Z', 7, 'Y', 6)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting last item and next index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last item and next line', () => { - dataList.selectLast(); - buffer.selectNextIndex(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('Z', 7, null, NaN) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting last item and next index via buffer', async () => { + dataList.selectLast(); + buffer.selectNextIndex(); + + expect(selectSpy) + .calledWith('Z', 7, null, NaN) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next line', () => { - buffer.selectNextLine(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('D', 3, 'A', 0) - .callCount(1); - }); + it('Selecting next line via buffer', async () => { + buffer.selectNextLine(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy) + .calledWith('D', 3, 'A', 0) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting next next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select next next line', () => { - buffer.selectNextLine(); - buffer.selectNextLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('D', 3, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('G', 6, 'D', 3)) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I', - 'J', 'K', 'L', - 'M', 'N', 'O' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting next next line via buffer', async () => { + buffer.selectNextLine(); + buffer.selectNextLine(); + + expect(selectSpy.withArgs('D', 3, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('G', 6, 'D', 3)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I', + 'J', 'K', 'L', + 'M', 'N', 'O' + ]) + .callCount(1); }); - it('Selecting last but one line and next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last but one item and next line', () => { - dataList.selectAt(dataList.size() - 5); - buffer.selectNextLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('V', 6, null, NaN)) - .callCount(1); - expect(selectSpy.withArgs('Y', 9, 'V', 6)) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'P', 'Q', 'R', - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting last but one line and next line via buffer', async () => { + dataList.selectAt(dataList.size() - 5); + buffer.selectNextLine(); + + expect(selectSpy.withArgs('V', 6, null, NaN)) + .callCount(1); + expect(selectSpy.withArgs('Y', 9, 'V', 6)) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'P', 'Q', 'R', + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); - it('Selecting last item and next line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select last item and next line', () => { - dataList.selectLast(); - buffer.selectNextLine(); - }); - - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .calledWith('Z', 7, null, NaN) - .callCount(1); - }); - - then('changeCallback is called once with new buffer contents', () => { - expect(changeSpy) - .calledWith([ - 'S', 'T', 'U', - 'V', 'W', 'X', - 'Y', 'Z' - ]) - .callCount(1); - }); - - return then('done'); + it('Selecting last item and next line via buffer', async () => { + dataList.selectLast(); + buffer.selectNextLine(); + + expect(selectSpy) + .calledWith('Z', 7, null, NaN) + .callCount(1); + + expect(changeSpy) + .calledWith([ + 'S', 'T', 'U', + 'V', 'W', 'X', + 'Y', 'Z' + ]) + .callCount(1); }); }); diff --git a/test/components/base-list/integration/with-data-list-select-prev.mocha.js b/test/components/base-list/integration/with-data-list-select-prev.mocha.js index 0bb60e9..f6666d1 100644 --- a/test/components/base-list/integration/with-data-list-select-prev.mocha.js +++ b/test/components/base-list/integration/with-data-list-select-prev.mocha.js @@ -1,17 +1,13 @@ import {createBuffer, setBufferSource, changeSpy, selectSpy, createDefaultDataList} from '../helper'; +const expect = chai.expect; describe('BaseListDataList: select prev', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; - let dataList; let buffer; let bufferPromise; - beforeEach(() => { + beforeEach(async () => { buffer = createBuffer(); dataList = createDefaultDataList(); bufferPromise = setBufferSource(buffer, dataList) @@ -19,197 +15,109 @@ describe('BaseListDataList: select prev', () => { changeSpy.resetHistory(); selectSpy.resetHistory(); }); - }); - - it('Selecting prev item', () => { - given('created baselist-datalist', () => bufferPromise); - when('select prev item', () => { - dataList.selectPrevItem(); - }); + await bufferPromise; + }); - then('selectCallback is not called', () => { - expect(selectSpy) - .callCount(0); - }); + it('Selecting prev item', async () => { + dataList.selectPrevItem(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy) + .callCount(0); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting prev prev item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev prev item', () => { - dataList.selectPrevItem(); - dataList.selectPrevItem(); - }); + it('Selecting prev prev item', async () => { + dataList.selectPrevItem(); + dataList.selectPrevItem(); - then('selectCallback is not called', () => { - expect(selectSpy) - .callCount(0); - }); + expect(selectSpy) + .callCount(0); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting second and prev item', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select second and prev item', () => { - dataList.selectAt(1); - dataList.selectPrevItem(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, 'B', 1)) - .callCount(1); - }); + it('Selecting second and prev item', async () => { + dataList.selectAt(1); + dataList.selectPrevItem(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, 'B', 1)) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting prev index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev index', () => { - buffer.selectPrevIndex(); - }); - - then('selectCallback is not called', () => { - expect(selectSpy) - .callCount(0); - }); + it('Selecting prev index via buffer', async () => { + buffer.selectPrevIndex(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy) + .callCount(0); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting prev prev index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); + it('Selecting prev prev index via buffer', async () => { + buffer.selectPrevIndex(); + buffer.selectPrevIndex(); - when('select prev prev index', () => { - buffer.selectPrevIndex(); - buffer.selectPrevIndex(); - }); + expect(selectSpy) + .callCount(0); - then('selectCallback is not called', () => { - expect(selectSpy) - .callCount(0); - }); - - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting second item and prev index via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select second item and prev index', () => { - dataList.selectAt(1); - buffer.selectPrevIndex(); - }); + it('Selecting second item and prev index via buffer', async () => { + dataList.selectAt(1); + buffer.selectPrevIndex(); - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('B', 1, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, 'B', 1)) - .callCount(1); - }); + expect(selectSpy.withArgs('B', 1, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, 'B', 1)) + .callCount(1); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting prev line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev index', () => { - buffer.selectPrevLine(); - }); + it('Selecting prev line via buffer', async () => { + buffer.selectPrevLine(); - then('selectCallback is not called', () => { - expect(selectSpy) - .callCount(0); - }); + expect(selectSpy) + .callCount(0); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting prev prev line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select prev prev line', () => { - buffer.selectPrevLine(); - buffer.selectPrevLine(); - }); - - then('selectCallback is not called', () => { - expect(selectSpy) - .callCount(0); - }); + it('Selecting prev prev line via buffer', async () => { + buffer.selectPrevLine(); + buffer.selectPrevLine(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy) + .callCount(0); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('Selecting second line and prev line via buffer', () => { - given('created baselist-datalist', () => bufferPromise); - - when('select second line and prev line', () => { - buffer.selectNextLine(); - buffer.selectPrevLine(); - }); - - then('selectCallback is called twice with new item and old item', () => { - expect(selectSpy.withArgs('D', 3, 'A', 0)) - .callCount(1); - expect(selectSpy.withArgs('A', 0, 'D', 3)) - .callCount(1); - }); + it('Selecting second line and prev line via buffer', async () => { + buffer.selectNextLine(); + buffer.selectPrevLine(); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy.withArgs('D', 3, 'A', 0)) + .callCount(1); + expect(selectSpy.withArgs('A', 0, 'D', 3)) + .callCount(1); - return then('done'); + expect(changeSpy) + .callCount(0); }); }); diff --git a/test/components/base-list/integration/with-data-list-select.mocha.js b/test/components/base-list/integration/with-data-list-select.mocha.js index a1fd5f1..75c7626 100644 --- a/test/components/base-list/integration/with-data-list-select.mocha.js +++ b/test/components/base-list/integration/with-data-list-select.mocha.js @@ -1,13 +1,10 @@ import {createBuffer, setBufferSource, changeSpy, selectSpy, createDefaultDataList} from '../helper'; +const expect = chai.expect; -describe('BaseListDataList: select', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; - it('inside passive zone', () => { +describe('BaseListDataList: select', async () => { + it('inside passive zone', async () => { const buffer = createBuffer({ padding: 1, lineSize: 3, @@ -15,31 +12,22 @@ describe('BaseListDataList: select', () => { }); const dataList = createDefaultDataList(); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + await setBufferSource(buffer, dataList); - when('select element in passive zone', () => { - dataList.select('B'); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('B', 1, 'A', 0); - }); + dataList.select('B'); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); + expect(selectSpy) + .callCount(1) + .calledWith('B', 1, 'A', 0); - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('inside passive zone with shifted index', () => { + it('inside passive zone with shifted index', async () => { const buffer = createBuffer({ padding: 1, lineSize: 3, @@ -47,36 +35,25 @@ describe('BaseListDataList: select', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); - - given('frame is moved from source beginning', () => { - dataList.select('H'); - buffer._changeItems(); + dataList.select('H'); + buffer._changeItems(); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - when('select element in passive zone', () => { - dataList.select('I'); - }); + dataList.select('I'); - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('I', 5, 'H', 4); - }); + expect(selectSpy) + .callCount(1) + .calledWith('I', 5, 'H', 4); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('on border of loadOnLeft zone', () => { + it('on border of loadOnLeft zone', async () => { const buffer = createBuffer({ padding: 2, lineSize: 3, @@ -84,32 +61,21 @@ describe('BaseListDataList: select', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('select element on border of loadOnLeft zone', () => { - dataList.select('D'); - }); + dataList.select('D'); - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('D', 3, 'A', 0); - }); + expect(selectSpy) + .callCount(1) + .calledWith('D', 3, 'A', 0); - then('changeCallback is not called', () => { - expect(changeSpy) - .callCount(0); - }); - - return then('done'); + expect(changeSpy) + .callCount(0); }); - it('on border of buffer (inside loadOnLeft zone)', () => { + it('on border of buffer (inside loadOnLeft zone)', async () => { const buffer = createBuffer({ padding: 1, lineSize: 3, @@ -117,37 +83,27 @@ describe('BaseListDataList: select', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - when('select element in on border of buffer zone', () => { - dataList.select('D'); - }); + dataList.select('D'); - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('D', 3, 'A', 0); - }); - - then('changeCallback called once with new buffer contents', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'A', 'B', 'C', - 'D', 'E', 'F', - 'G', 'H', 'I' - ]); - }); + expect(selectSpy) + .callCount(1) + .calledWith('D', 3, 'A', 0); - return then('done'); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'A', 'B', 'C', + 'D', 'E', 'F', + 'G', 'H', 'I' + ]); }); - it('out of buffer', () => { + it('out of buffer', async () => { const buffer = createBuffer({ padding: 2, lineSize: 3, @@ -155,44 +111,33 @@ describe('BaseListDataList: select', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList)); - - given('selected element is close to frame border', () => { - dataList.select('B'); - buffer._changeItems(); - dataList.select('E'); + dataList.select('B'); + buffer._changeItems(); + dataList.select('E'); - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); - - when('select element out of buffer zone', () => { - dataList.select('K'); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('selectCallback is called once with new item and old item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('K', 7, 'E', 1); - }); + dataList.select('K'); - then('changeCallback called once with new buffer contents', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'D', 'E', 'F', - 'G', 'H', 'I', - 'J', 'K', 'L', - 'M', 'N', 'O', - 'P', 'Q', 'R' - ]); - }); + expect(selectSpy) + .callCount(1) + .calledWith('K', 7, 'E', 1); - return then('done'); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'D', 'E', 'F', + 'G', 'H', 'I', + 'J', 'K', 'L', + 'M', 'N', 'O', + 'P', 'Q', 'R' + ]); }); - it('old element outside new frame', () => { + it('old element outside new frame', async () => { const buffer = createBuffer({ padding: 1, lineSize: 3, @@ -200,33 +145,22 @@ describe('BaseListDataList: select', () => { }); const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('created baselist-datalist with source', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('select element far outside current frame', () => { - dataList.select('Q'); - }); + dataList.select('Q'); - then('selectCallback is called once with null-NaN for old item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('Q', 4, null, NaN); - }); - - then('changeCallback called once with new frame contents', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'M', 'N', 'O', - 'P', 'Q', 'R', - 'S', 'T', 'U' - ]); - }); + expect(selectSpy) + .callCount(1) + .calledWith('Q', 4, null, NaN); - return then('done'); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'M', 'N', 'O', + 'P', 'Q', 'R', + 'S', 'T', 'U' + ]); }); }); diff --git a/test/components/base-list/integration/with-data-list-set-source.mocha.js b/test/components/base-list/integration/with-data-list-set-source.mocha.js index 9a5544f..12a1c6f 100644 --- a/test/components/base-list/integration/with-data-list-set-source.mocha.js +++ b/test/components/base-list/integration/with-data-list-set-source.mocha.js @@ -5,17 +5,12 @@ import { selectSpy, createDefaultDataList, createEmptyDataList, - noop, createOtherDataList } from '../helper'; +const expect = chai.expect; describe('BaseListDataList: set source', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; - let buffer; beforeEach(() => { @@ -29,268 +24,171 @@ describe('BaseListDataList: set source', () => { selectSpy.resetHistory(); }); - it('Setting empty List', () => { - given('empty given to fix mocha-test-steps bug', noop); - - when('set empty data-list', () => { - const dataList = createEmptyDataList(); - return setBufferSource(buffer, dataList); - }); - - then('changeCallback not called', () => { - expect(changeSpy) - .callCount(0); - }); + it('Setting empty List', async () => { + const dataList = createEmptyDataList(); + await setBufferSource(buffer, dataList); - then('selectCallback not called', () => { - expect(selectSpy) - .callCount(0); - }); + expect(changeSpy) + .callCount(0); - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('Setting not empty List', () => { - given('empty given to fix mocha-test-steps bug', noop); - - when('set default data-list', () => { - const dataList = createDefaultDataList(); - return setBufferSource(buffer, dataList); - }); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'A', 'B', 'C', - 'D', 'E', 'F' - ]); - }); - - then('selectCallback called once with first item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('A', 0, null, NaN); - }); - - return then('done'); + it('Setting not empty List', async () => { + const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + + expect(changeSpy) + .callCount(1) + .calledWith([ + 'A', 'B', 'C', + 'D', 'E', 'F' + ]); + + expect(selectSpy) + .callCount(1) + .calledWith('A', 0, null, NaN); }); // Repeated setting - it('Setting other List', () => { - given('set default data-list', () => { - const dataList = createDefaultDataList(); - return setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); - }); + it('Setting other List', async () => { + const firstList = createDefaultDataList(); + await setBufferSource(buffer, firstList); - when('set other data-list', () => { - const dataList = createOtherDataList(); - return setBufferSource(buffer, dataList); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'alpha', 'beta', 'gamma', - 'delta', 'epsilon', 'zeta' - ]); - }); + const secondList = createOtherDataList(); + await setBufferSource(buffer, secondList); - then('selectCallback called once with first item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('alpha', 0, null, NaN); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'alpha', 'beta', 'gamma', + 'delta', 'epsilon', 'zeta' + ]); - return then('done'); + expect(selectSpy) + .callCount(1) + .calledWith('alpha', 0, null, NaN); }); - it('Re-setting same List', () => { + it('Re-setting same List', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - given('set default data-list', () => setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set same data-list', () => setBufferSource(buffer, dataList)); + expect(changeSpy) + .callCount(0); - then('changeCallback not called', () => { - expect(changeSpy) - .callCount(0); - }); - then('selectCallback not called', () => { - expect(selectSpy) - .callCount(0); - }); - - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('Re-setting almost same List', () => { - given('set default data-list', () => { - const dataList = createDefaultDataList(); - return setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); - }); + it('Re-setting almost same List', async () => { + const firstList = createDefaultDataList(); + await setBufferSource(buffer, firstList); - when('set almost same data-list', () => { - const dataList = createDefaultDataList(); - return setBufferSource(buffer, dataList); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('changeCallback not called', () => { - expect(changeSpy) - .callCount(0); - }); + const secondList = createDefaultDataList(); + await setBufferSource(buffer, secondList); - then('selectCallback not called', () => { - expect(selectSpy) - .callCount(0); - }); + expect(changeSpy) + .callCount(0); - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('Re-setting same List after null', () => { + it('Re-setting same List after null', async () => { const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + await setBufferSource(buffer, null); - given('set default data-list', () => setBufferSource(buffer, dataList)); - - given('set null', () => setBufferSource(buffer, null) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('set same data-list', () => setBufferSource(buffer, dataList)); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'A', 'B', 'C', - 'D', 'E', 'F' - ]); - }); + await setBufferSource(buffer, dataList); - then('selectCallback called once with first item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('A', 0, null, NaN); - }); + expect(changeSpy) + .callCount(1) + .calledWith([ + 'A', 'B', 'C', + 'D', 'E', 'F' + ]); - return then('done'); + expect(selectSpy) + .callCount(1) + .calledWith('A', 0, null, NaN); }); - // null - it('Setting null', () => { - given('empty given to fix mocha-test-steps bug', noop); + it('Setting null', async () => { + await setBufferSource(buffer, null); - when('set null', () => setBufferSource(buffer, null)); + expect(changeSpy) + .callCount(0); - then('changeCallback not called', () => { - expect(changeSpy) - .callCount(0); - }); - - then('selectCallback not called', () => { - expect(selectSpy) - .callCount(0); - }); - - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('Re-setting null', () => { - given('set null', () => setBufferSource(buffer, null) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); - - when('re-set null', () => setBufferSource(buffer, null)); + it('Re-setting null', async () => { + await setBufferSource(buffer, null); - then('changeCallback not called', () => { - expect(changeSpy) - .callCount(0); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('selectCallback not called', () => { - expect(selectSpy) - .callCount(0); - }); + expect(changeSpy) + .callCount(0); - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('Setting null after List', () => { - given('set default data-list', () => { - const dataList = createDefaultDataList(); - return setBufferSource(buffer, dataList) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - }); - }); + it('Setting null after List', async () => { + const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); - when('set null', () => setBufferSource(buffer, null)); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([]); - }); + await setBufferSource(buffer, null); - then('selectCallback not called', () => { - expect(selectSpy) - .callCount(0); - }); + expect(changeSpy) + .callCount(1) + .calledWith([]); - return then('done'); + expect(selectSpy) + .callCount(0); }); - it('Setting List after null', () => { - given('set null', () => setBufferSource(buffer, null) - .then(() => { - changeSpy.resetHistory(); - selectSpy.resetHistory(); - })); + it('Setting List after null', async () => { + await setBufferSource(buffer, null); - when('set default data-list', () => { - const dataList = createDefaultDataList(); - return setBufferSource(buffer, dataList); - }); - - then('changeCallback called once with corresponding set', () => { - expect(changeSpy) - .callCount(1) - .calledWith([ - 'A', 'B', 'C', - 'D', 'E', 'F' - ]); - }); - - then('selectCallback called once with first item', () => { - expect(selectSpy) - .callCount(1) - .calledWith('A', 0, null, NaN); - }); + changeSpy.resetHistory(); + selectSpy.resetHistory(); - return then('done'); + const dataList = createDefaultDataList(); + await setBufferSource(buffer, dataList); + + expect(changeSpy) + .callCount(1) + .calledWith([ + 'A', 'B', 'C', + 'D', 'E', 'F' + ]); + + expect(selectSpy) + .callCount(1) + .calledWith('A', 0, null, NaN); }); }); diff --git a/test/components/button.js b/test/components/button.js index 0b07842..52917c9 100644 --- a/test/components/button.js +++ b/test/components/button.js @@ -1,5 +1,5 @@ +import Key from 'zb/device/input/key'; import Button from 'ui/widgets/button/button'; -import Keys from 'zb/device/input/keys'; describe('Button', () => { @@ -97,7 +97,7 @@ describe('Button', () => { }); button.onClick(eventClickSpy); - button.processKey(Keys.ENTER); + button.processKey(Key.ENTER); expect(eventClickSpy) .callCount(1) @@ -110,7 +110,7 @@ describe('Button', () => { it('event not firing', () => { button.onClick(eventClickSpy); - button.processKey(Keys.BACK); + button.processKey(Key.BACK); expect(eventClickSpy).callCount(0); }); diff --git a/test/components/dynamic-list/helper.js b/test/components/dynamic-list/helper.js index 7ef73bb..366c033 100644 --- a/test/components/dynamic-list/helper.js +++ b/test/components/dynamic-list/helper.js @@ -42,7 +42,7 @@ export const loadLater = (from, to) => new Promise((resolve) => { setTimeout(() => { const array = createDefaultArray(); resolve(array.slice(from, to + 1)); - }, 500); + }, 100); }); @@ -54,9 +54,8 @@ export const loadLater = (from, to) => new Promise((resolve) => { export const loadRandom = (from, to) => { if (Math.random() > 0.5) { return loadNow(from, to); - } else { - return loadLater(from, to); } + return loadLater(from, to); }; diff --git a/test/components/dynamic-list/step-by-step.mocha.js b/test/components/dynamic-list/step-by-step.mocha.js index 877958e..8aa7b44 100644 --- a/test/components/dynamic-list/step-by-step.mocha.js +++ b/test/components/dynamic-list/step-by-step.mocha.js @@ -4,8 +4,6 @@ import {loadRandom, waitForLoad} from './helper'; describe('DynamicList step-by-step', () => { const expect = chai.expect; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; const expectState = (instance, predicates) => { expect(instance.current()).equal(predicates.current); @@ -19,588 +17,515 @@ describe('DynamicList step-by-step', () => { let instance; - it('Step by step', () => { - when('creating dynamic list', () => { - instance = new DynamicList((from, to) => loadRandom(from, to), { - startFrom: 0, - startLoadingOnItemsLeft: 2, - frameSize: 5, - initialBufferSize: 5, - bufferSize: 20 - }); - }); - - then('state should be initial', () => { - expectState(instance, { - current: null, - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: NaN, - getSize: 0, - toArray: [] - }); - }); - - then('state should be loading', () => { - const promise = instance.preload(); - - expectState(instance, { - current: null, - isLoading: true, - isStartReached: true, - isEndReached: false, - getBufferStart: NaN, - getSize: 0, - toArray: [] - }); - - return promise; - }); - - then('frame should be first', () => { - expectState(instance, { - current: 'A', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 5, - toArray: ['A', 'B', 'C', 'D', 'E'] - }); - }); - - then('item should be second', () => { - const promise = waitForLoad(instance); - - instance.selectNextItem(); - - expectState(instance, { - current: 'B', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 5, - toArray: ['A', 'B', 'C', 'D', 'E'] - }); - - return promise; - }); - - then('item should be second after wait for load', () => { - expectState(instance, { - current: 'B', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 5, - toArray: ['A', 'B', 'C', 'D', 'E'] - }); - }); - - then('item should be third after call', () => { - const promise = waitForLoad(instance); - - instance.selectNextItem(); - - expectState(instance, { - current: 'C', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 5, - toArray: ['A', 'B', 'C', 'D', 'E'] - }); - - return promise; - }); - - then('item should be third after wait for load', () => { - expectState(instance, { - current: 'C', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 5, - toArray: ['A', 'B', 'C', 'D', 'E'] - }); - }); - - then('item should be fourth after call', () => { - const promise = waitForLoad(instance); - - instance.selectNextItem(); - - expectState(instance, { - current: 'D', - isLoading: true, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 5, - toArray: ['A', 'B', 'C', 'D', 'E'] - }); - - return promise; - }); - - then('item should be fourth after wait for load', () => { - expectState(instance, { - current: 'D', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 10, - toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] - }); - }); - - then('item should be J after call', () => { - const promise = waitForLoad(instance); - - instance.select('J'); - - expectState(instance, { - current: 'J', - isLoading: true, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 10, - toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] - }); - - return promise; - }); - - then('item should be J after wait for load', () => { - expectState(instance, { - current: 'J', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 15, - toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] - }); - }); - - then('item should be K after call', () => { - const promise = waitForLoad(instance); - - instance.select('K'); - - expectState(instance, { - current: 'K', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 15, - toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] - }); - - return promise; - }); - - then('item should be K after wait for load', () => { - expectState(instance, { - current: 'K', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 15, - toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] - }); - }); - - then('item should be N after call', () => { - const promise = waitForLoad(instance); - - instance.selectNextItem(); - instance.selectNextItem(); - instance.selectNextItem(); - - expectState(instance, { - current: 'N', - isLoading: true, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 15, - toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] - }); - - return promise; - }); - - then('item should be N after wait for load', () => { - expectState(instance, { - current: 'N', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - }); - - then('item should be T after call', () => { - const promise = waitForLoad(instance); - - instance.select('T'); - - expectState(instance, { - current: 'T', - isLoading: true, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - - return promise; - }); - - then('item should be T after wait for load', () => { - expectState(instance, { - current: 'T', - isLoading: false, - isStartReached: false, - isEndReached: false, - getBufferStart: 5, - getSize: 25, - toArray: [ - 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y' - ] - }); - }); - - then('item should be Y after call', () => { - const promise = waitForLoad(instance); - - instance.select('Y'); - - expectState(instance, { - current: 'Y', - isLoading: true, - isStartReached: false, - isEndReached: false, - getBufferStart: 5, - getSize: 25, - toArray: [ - 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y' - ] - }); - - return promise; - }); - - then('item should be Y after wait for load', () => { - expectState(instance, { - current: 'Y', - isLoading: false, - isStartReached: false, - isEndReached: true, - getBufferStart: 6, - getSize: 26, - toArray: [ - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ] - }); - }); - - then('item should be Z after call', () => { - const promise = waitForLoad(instance); - - instance.selectNextItem(); - instance.selectNextItem(); - instance.selectNextItem(); - - expectState(instance, { - current: 'Z', - isLoading: false, - isStartReached: false, - isEndReached: true, - getBufferStart: 6, - getSize: 26, - toArray: [ - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ] - }); - - return promise; - }); - - then('item should be Z after wait for load', () => { - expectState(instance, { - current: 'Z', - isLoading: false, - isStartReached: false, - isEndReached: true, - getBufferStart: 6, - getSize: 26, - toArray: [ - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ] - }); - }); - - then('item should be Z after call', () => { - const promise = waitForLoad(instance); - - instance.select('Q'); - - expectState(instance, { - current: 'Q', - isLoading: false, - isStartReached: false, - isEndReached: true, - getBufferStart: 6, - getSize: 26, - toArray: [ - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ] - }); - - return promise; - }); - - then('item should be Q after wait for load', () => { - expectState(instance, { - current: 'Q', - isLoading: false, - isStartReached: false, - isEndReached: true, - getBufferStart: 6, - getSize: 26, - toArray: [ - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ] - }); - }); - - then('item should be G after call', () => { - const promise = waitForLoad(instance); - - instance.select('G'); - - expectState(instance, { - current: 'G', - isLoading: true, - isStartReached: false, - isEndReached: true, - getBufferStart: 6, - getSize: 26, - toArray: [ - 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' - ] - }); - - return promise; - }); - - then('item should be G after wait for load', () => { - expectState(instance, { - current: 'G', - isLoading: false, - isStartReached: false, - isEndReached: false, - getBufferStart: 1, - getSize: 21, - toArray: [ - 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U' - ] - }); - }); - - then('item should be D after call', () => { - const promise = waitForLoad(instance); - - instance.selectPrevItem(); - instance.selectPrevItem(); - instance.selectPrevItem(); - - expectState(instance, { - current: 'D', - isLoading: false, - isStartReached: false, - isEndReached: false, - getBufferStart: 1, - getSize: 21, - toArray: [ - 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U' - ] - }); - - return promise; - }); - - then('item should be D after wait for load', () => { - expectState(instance, { - current: 'D', - isLoading: false, - isStartReached: false, - isEndReached: false, - getBufferStart: 1, - getSize: 21, - toArray: [ - 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U' - ] - }); - }); - - then('item should be C after call', () => { - const promise = waitForLoad(instance); - - instance.selectPrevItem(); - - expectState(instance, { - current: 'C', - isLoading: true, - isStartReached: false, - isEndReached: false, - getBufferStart: 1, - getSize: 21, - toArray: [ - 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U' - ] - }); - - return promise; - }); - - then('item should be C after wait for load', () => { - expectState(instance, { - current: 'C', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - }); - - then('item should be B after call', () => { - const promise = waitForLoad(instance); - - instance.selectPrevItem(); - - expectState(instance, { - current: 'B', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - - return promise; - }); - - then('item should be B after wait for load', () => { - expectState(instance, { - current: 'B', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - }); - - then('item should be A after call', () => { - const promise = waitForLoad(instance); - - instance.selectPrevItem(); - - expectState(instance, { - current: 'A', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - - return promise; - }); - - then('item should be A after wait for load', () => { - expectState(instance, { - current: 'A', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - }); - - then('item should be A after call', () => { - const promise = waitForLoad(instance); - - instance.selectPrevItem(); - instance.selectPrevItem(); - instance.selectPrevItem(); - - expectState(instance, { - current: 'A', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - - return promise; - }); - - then('item should be A after wait for load', () => { - expectState(instance, { - current: 'A', - isLoading: false, - isStartReached: true, - isEndReached: false, - getBufferStart: 0, - getSize: 20, - toArray: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' - ] - }); - }); - - return then('done'); + it('Step by step', async () => { + let promise; + instance = new DynamicList((from, to) => loadRandom(from, to), { + startFrom: 0, + startLoadingOnItemsLeft: 2, + frameSize: 5, + initialBufferSize: 5, + bufferSize: 20 + }); + + expectState(instance, { + current: null, + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: NaN, + getSize: 0, + toArray: [] + }); + + promise = instance.preload(); + + expectState(instance, { + current: null, + isLoading: true, + isStartReached: true, + isEndReached: false, + getBufferStart: NaN, + getSize: 0, + toArray: [] + }); + + await promise; + + expectState(instance, { + current: 'A', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 5, + toArray: ['A', 'B', 'C', 'D', 'E'] + }); + + promise = waitForLoad(instance); + + instance.selectNextItem(); + + expectState(instance, { + current: 'B', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 5, + toArray: ['A', 'B', 'C', 'D', 'E'] + }); + + await promise; + + expectState(instance, { + current: 'B', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 5, + toArray: ['A', 'B', 'C', 'D', 'E'] + }); + + promise = waitForLoad(instance); + + instance.selectNextItem(); + + expectState(instance, { + current: 'C', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 5, + toArray: ['A', 'B', 'C', 'D', 'E'] + }); + + await promise; + + expectState(instance, { + current: 'C', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 5, + toArray: ['A', 'B', 'C', 'D', 'E'] + }); + + promise = waitForLoad(instance); + + instance.selectNextItem(); + + expectState(instance, { + current: 'D', + isLoading: true, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 5, + toArray: ['A', 'B', 'C', 'D', 'E'] + }); + + await promise; + + expectState(instance, { + current: 'D', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 10, + toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] + }); + + promise = waitForLoad(instance); + + instance.select('J'); + + expectState(instance, { + current: 'J', + isLoading: true, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 10, + toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] + }); + + await promise; + + expectState(instance, { + current: 'J', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 15, + toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] + }); + + promise = waitForLoad(instance); + + instance.select('K'); + + expectState(instance, { + current: 'K', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 15, + toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] + }); + + await promise; + + expectState(instance, { + current: 'K', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 15, + toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] + }); + + promise = waitForLoad(instance); + + instance.selectNextItem(); + instance.selectNextItem(); + instance.selectNextItem(); + + expectState(instance, { + current: 'N', + isLoading: true, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 15, + toArray: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'] + }); + + await promise; + + expectState(instance, { + current: 'N', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); + + promise = waitForLoad(instance); + + instance.select('T'); + + expectState(instance, { + current: 'T', + isLoading: true, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); + + await promise; + + expectState(instance, { + current: 'T', + isLoading: false, + isStartReached: false, + isEndReached: false, + getBufferStart: 5, + getSize: 25, + toArray: [ + 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y' + ] + }); + + promise = waitForLoad(instance); + + instance.select('Y'); + + expectState(instance, { + current: 'Y', + isLoading: true, + isStartReached: false, + isEndReached: false, + getBufferStart: 5, + getSize: 25, + toArray: [ + 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y' + ] + }); + + await promise; + + expectState(instance, { + current: 'Y', + isLoading: false, + isStartReached: false, + isEndReached: true, + getBufferStart: 6, + getSize: 26, + toArray: [ + 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' + ] + }); + + promise = waitForLoad(instance); + + instance.selectNextItem(); + instance.selectNextItem(); + instance.selectNextItem(); + + expectState(instance, { + current: 'Z', + isLoading: false, + isStartReached: false, + isEndReached: true, + getBufferStart: 6, + getSize: 26, + toArray: [ + 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' + ] + }); + + await promise; + + expectState(instance, { + current: 'Z', + isLoading: false, + isStartReached: false, + isEndReached: true, + getBufferStart: 6, + getSize: 26, + toArray: [ + 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' + ] + }); + + promise = waitForLoad(instance); + + instance.select('Q'); + + expectState(instance, { + current: 'Q', + isLoading: false, + isStartReached: false, + isEndReached: true, + getBufferStart: 6, + getSize: 26, + toArray: [ + 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' + ] + }); + + await promise; + + expectState(instance, { + current: 'Q', + isLoading: false, + isStartReached: false, + isEndReached: true, + getBufferStart: 6, + getSize: 26, + toArray: [ + 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' + ] + }); + + promise = waitForLoad(instance); + + instance.select('G'); + + expectState(instance, { + current: 'G', + isLoading: true, + isStartReached: false, + isEndReached: true, + getBufferStart: 6, + getSize: 26, + toArray: [ + 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' + ] + }); + + await promise; + + expectState(instance, { + current: 'G', + isLoading: false, + isStartReached: false, + isEndReached: false, + getBufferStart: 1, + getSize: 21, + toArray: [ + 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U' + ] + }); + + promise = waitForLoad(instance); + + instance.selectPrevItem(); + instance.selectPrevItem(); + instance.selectPrevItem(); + + expectState(instance, { + current: 'D', + isLoading: false, + isStartReached: false, + isEndReached: false, + getBufferStart: 1, + getSize: 21, + toArray: [ + 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U' + ] + }); + + await promise; + + expectState(instance, { + current: 'D', + isLoading: false, + isStartReached: false, + isEndReached: false, + getBufferStart: 1, + getSize: 21, + toArray: [ + 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U' + ] + }); + + promise = waitForLoad(instance); + + instance.selectPrevItem(); + + expectState(instance, { + current: 'C', + isLoading: true, + isStartReached: false, + isEndReached: false, + getBufferStart: 1, + getSize: 21, + toArray: [ + 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U' + ] + }); + + await promise; + + expectState(instance, { + current: 'C', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); + + promise = waitForLoad(instance); + + instance.selectPrevItem(); + + expectState(instance, { + current: 'B', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); + + await promise; + + expectState(instance, { + current: 'B', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); + + promise = waitForLoad(instance); + + instance.selectPrevItem(); + + expectState(instance, { + current: 'A', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); + + await promise; + + expectState(instance, { + current: 'A', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); + + promise = waitForLoad(instance); + + instance.selectPrevItem(); + instance.selectPrevItem(); + instance.selectPrevItem(); + + expectState(instance, { + current: 'A', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); + + await promise; + + expectState(instance, { + current: 'A', + isLoading: false, + isStartReached: true, + isEndReached: false, + getBufferStart: 0, + getSize: 20, + toArray: [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' + ] + }); }) .timeout(20000); }); diff --git a/test/components/throbber.js b/test/components/throbber.js index 48f37b7..3e76b13 100644 --- a/test/components/throbber.js +++ b/test/components/throbber.js @@ -1,14 +1,11 @@ import EventPublisher from 'zb/events/event-publisher'; -import Throbber from 'ui/widgets/throbber/throbber'; import {number} from 'zb/stub'; +import Throbber from 'ui/widgets/throbber/throbber'; +const expect = chai.expect; -describe('Throbber', () => { - const expect = chai.expect; - const given = mochaTestSteps.given; - const when = mochaTestSteps.when; - const then = mochaTestSteps.then; +describe('Throbber', () => { describe('Class', () => { it('class: Throbber', () => { expect(Throbber).is.a('function'); @@ -119,52 +116,30 @@ describe('Throbber', () => { setTimeout(resolve.bind(null), number(0, 2000)); }); - it('Events fired for single promise', () => { - given('added handlers for events', () => { - throbber.on(throbber.EVENT_START, eventStartSpy); - throbber.on(throbber.EVENT_STOP, eventStopSpy); - }); - - when('set promise', () => { - const promise = createDelayedPromise(); - throbber.wait(promise); - return promise; - }); - - then('EVENT_START called once', () => { - expect(eventStartSpy).callCount(1); - }); + it('Events fired for single promise', async () => { + throbber.on(throbber.EVENT_START, eventStartSpy); + throbber.on(throbber.EVENT_STOP, eventStopSpy); - then('EVENT_STOP called once', () => { - expect(eventStopSpy).callCount(1); - }); + const promise = createDelayedPromise(); + throbber.wait(promise); + await promise; - return then('done'); + expect(eventStartSpy).callCount(1); + expect(eventStopSpy).callCount(1); }); - it('Events fired for miltiple promises', () => { - given('added handlers for events', () => { - throbber.on(throbber.EVENT_START, eventStartSpy); - throbber.on(throbber.EVENT_STOP, eventStopSpy); - }); - - when('set promise', () => { - const promise1 = createDelayedPromise(); - const promise2 = createDelayedPromise(); - throbber.wait(promise1); - throbber.wait(promise2); - return Promise.all([promise1, promise2]); - }); - - then('EVENT_START called once', () => { - expect(eventStartSpy).callCount(1); - }); + it('Events fired for miltiple promises', async () => { + throbber.on(throbber.EVENT_START, eventStartSpy); + throbber.on(throbber.EVENT_STOP, eventStopSpy); - then('EVENT_STOP called once', () => { - expect(eventStopSpy).callCount(1); - }); + const promise1 = createDelayedPromise(); + const promise2 = createDelayedPromise(); + throbber.wait(promise1); + throbber.wait(promise2); + await Promise.all([promise1, promise2]); - return then('done'); + expect(eventStartSpy).callCount(1); + expect(eventStopSpy).callCount(1); }); }) .timeout(5000); diff --git a/test/generated/define.js b/test/generated/define.js index 0efea1d..8620287 100644 --- a/test/generated/define.js +++ b/test/generated/define.js @@ -1 +1,9 @@ +/** + * @const {boolean} + */ export const ENABLE_CONSOLE = true; + +/** + * @const {string} + */ +export const NPM_PACKAGE_NAME = 'placeholder'; diff --git a/test/generated/package-info.js b/test/generated/package-info.js deleted file mode 100644 index ff8b4c5..0000000 --- a/test/generated/package-info.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; diff --git a/test/karma.components.conf.js b/test/karma.components.conf.js index f1ccc50..d83d4bc 100644 --- a/test/karma.components.conf.js +++ b/test/karma.components.conf.js @@ -8,12 +8,13 @@ function resolveZbModule(name) { const zbPath = resolveZbModule('zombiebox'); const cutejsPath = resolveZbModule('zombiebox-extension-cutejs'); +const cuteLibPath = resolveZbModule('cutejs'); const generatedPath = path.resolve(__dirname, 'generated'); const uiPath = path.resolve(__dirname, '..', 'lib'); const testsPath = path.resolve(__dirname, 'components'); -const [zbJsFiles, cutejsJsFiles, generatedJsFiles, uiJsFiles, testsJsFiles] = - [zbPath, cutejsPath, generatedPath, uiPath, testsPath].map((root) => root + '/**/*.js'); +const [zbJsFiles, cutejsJsFiles, generatedJsFiles, uiJsFiles, cuteLibFiles, testsJsFiles] = + [zbPath, cutejsPath, generatedPath, uiPath, cuteLibPath, testsPath].map((root) => root + '/**/*.js'); module.exports = (config) => { config.set({ @@ -21,16 +22,16 @@ module.exports = (config) => { singleRun: true, frameworks: ['sinon-chai', 'mocha', 'chai', 'dirty-chai'], - reporters: ['progress'], + reporters: ['mocha'], browsers: ['ChromeHeadless'], files: [ - require.resolve('mocha-test-steps'), {type: 'module', pattern: zbJsFiles}, {type: 'module', pattern: cutejsJsFiles}, {type: 'module', pattern: generatedJsFiles}, {type: 'module', pattern: uiJsFiles}, - {type: 'module', pattern: testsJsFiles} + {type: 'module', pattern: testsJsFiles}, + {type: 'module', pattern: cuteLibFiles} ], preprocessors: { @@ -45,9 +46,11 @@ module.exports = (config) => { aliases: { 'zb': zbPath, 'cutejs': cutejsPath, + 'cutejs-lib': cuteLibPath, 'generated': generatedPath, 'ui': uiPath - } + }, + ecmaVersion: 10 } }); };