From ff91466b148eb58f935c4449bf700a627a785d79 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Wed, 24 Nov 2021 21:14:24 +0300 Subject: [PATCH] feat(toolbar): toolbar refactored and ui improved (#1815) * chore(block-tune-toggler): toggler moved to the left (draft) * toolbox ui updated * fixd caret jumpling, improved some styles * toolbar moving by block-hover - UI module triggers 'block-hovered' event - Toolbar uses 'block-hovered' for appearing - `currentBlock` setter added to the BlockManager - (reactangle-selection): the throttling added to the mousemove and scroll handlers - `getBlockIndex` method added to the Api - (api-blocks): toolbar moving logic removed from `blocks.move()` and `blocks.swap()` methods. Instead, MoveUp and MoveDown tunes uses Toolbar API * the dark-theme to the example-dev.html * positioning improved * fix(rectangle-selection): first click after RS does not clears selection state * toolbox position fixed * the toolbox module became a standalone class - Toolbox became a standalone class from the editor module. It can be accessed only via the owner (the Toolbar module) - (api.blocks) the insert() method now has the `replace` param. Also, it returns inserted Block API now. * new(api.listeners): `on()` now returns the listener id. The new `offById()` method added * fix bug with Tab pressing on hovered but not focused block * mobile version improved * upd example dev * small updaets * add nested-list * linting * (api.toolbar): `toggleBlockSettings` now fires toggling event with the same state * EventDispatcher used instead of callbacks for the Toolbox * UIApi added * fix ci * git submodules removed from the ci flow * add paragraph submodule to the ci flow * Update CHANGELOG.md * Update package.json * use ubuntu-latest for chrome ci --- .github/workflows/cypress.yml | 8 +- .gitmodules | 3 + README.md | 2 +- docs/CHANGELOG.md | 20 +- example/assets/demo.css | 229 ++++++++-- example/example-dev.html | 96 ++++- example/tools/header | 2 +- example/tools/image | 2 +- example/tools/nested-list | 1 + package.json | 9 +- src/assets/dots.svg | 14 +- src/assets/plus.svg | 7 +- .../block-tunes/block-tune-move-down.ts | 2 + .../block-tunes/block-tune-move-up.ts | 2 + src/components/core.ts | 2 +- src/components/dom.ts | 22 + src/components/modules/api/blocks.ts | 44 +- src/components/modules/api/index.ts | 1 + src/components/modules/api/listeners.ts | 18 +- src/components/modules/api/toolbar.ts | 12 +- src/components/modules/api/tooltip.ts | 10 +- src/components/modules/api/ui.ts | 36 ++ src/components/modules/blockEvents.ts | 38 +- src/components/modules/blockManager.ts | 17 +- src/components/modules/rectangleSelection.ts | 19 +- .../modules/toolbar/blockSettings.ts | 25 +- src/components/modules/toolbar/conversion.ts | 2 + src/components/modules/toolbar/index.ts | 249 ++++++++--- src/components/modules/toolbar/inline.ts | 8 +- src/components/modules/ui.ts | 139 ++++-- .../{modules/toolbar => ui}/toolbox.ts | 231 ++++++---- src/components/utils.ts | 62 +++ src/components/utils/events.ts | 12 +- src/components/utils/tooltip.ts | 17 +- src/styles/export.css | 6 +- src/styles/settings.css | 2 +- src/styles/toolbar.css | 40 +- src/styles/toolbox.css | 1 + src/styles/variables.css | 30 +- src/types-internal/editor-modules.d.ts | 4 +- test/cypress/tests/block-ids.spec.ts | 2 +- test/cypress/tests/copy-paste.spec.ts | 4 +- test/cypress/tests/modules/Tools.spec.ts | 5 +- test/cypress/tests/onchange.spec.ts | 2 +- types/api/blocks.d.ts | 11 +- types/api/index.d.ts | 1 + types/api/listeners.d.ts | 12 +- types/api/ui.d.ts | 24 ++ types/index.d.ts | 2 + yarn.lock | 406 +----------------- 50 files changed, 1123 insertions(+), 790 deletions(-) create mode 160000 example/tools/nested-list create mode 100644 src/components/modules/api/ui.ts rename src/components/{modules/toolbar => ui}/toolbox.ts (59%) create mode 100644 types/api/ui.d.ts diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 7ceaec452..c384afd88 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -8,17 +8,17 @@ jobs: options: --user 1001 steps: - uses: actions/checkout@v2 - - run: yarn pull_tools && yarn tools:update + - run: yarn ci:pull_paragraph - uses: cypress-io/github-action@v2 with: config: video=false browser: firefox build: yarn build chrome: - runs-on: ubuntu-16.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - run: yarn pull_tools && yarn tools:update + - run: yarn ci:pull_paragraph - uses: cypress-io/github-action@v2 with: config: video=false @@ -28,7 +28,7 @@ jobs: runs-on: windows-latest steps: - uses: actions/checkout@v2 - - run: yarn pull_tools && yarn tools:update + - run: yarn ci:pull_paragraph - uses: cypress-io/github-action@v2 with: config: video=false diff --git a/.gitmodules b/.gitmodules index cd7ec4ee6..7dc8f02cb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -49,3 +49,6 @@ [submodule "example/tools/underline"] path = example/tools/underline url = https://github.com/editor-js/underline +[submodule "example/tools/nested-list"] + path = example/tools/nested-list + url = https://github.com/editor-js/nested-list diff --git a/README.md b/README.md index e873c1e47..dcc4fa393 100644 --- a/README.md +++ b/README.md @@ -251,4 +251,4 @@ CodeX is a team of digital specialists around the world interested in building h | 🌐 | Join πŸ‘‹ | Twitter | Instagram | | -- | -- | -- | -- | -| [codex.so](https://codex.so) | [codex.so/join](https://codex.so/join) |[@codex_team](http://twitter.com/codex_team) | [@codex_team](http://instagram.com/codex_team) | +| [codex.so](https://codex.so) | [codex.so/join](https://codex.so/join) |[@codex_team](http://twitter.com/codex_team) | [@codex_team](http://instagram.com/codex_team/) | diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 573ca444a..52adf8fcb 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,8 +2,24 @@ ### 2.23.0 -- `Improvement` β€” The `onChange` callback now accepts two arguments: EditorJS API and the CustomEvent with `type` and `detail` allowing to determine what happened with a Block -- `New` *Block API* β€” The new `dispatchChange()` method allows to manually trigger the 'onChange' callback. Useful when Tool made a state mutation that is invisible for editor core. +- `Improvement` β€” *EditorConfig* β€” The `onChange` callback now accepts two arguments: EditorJS API and the CustomEvent with `type` and `detail` allowing to determine what happened with a Block +- `New` β€” *Block API* β€” The new `dispatchChange()` method allows to manually trigger the 'onChange' callback. Useful when Tool made a state mutation that is invisible for editor core. +- `Improvement` β€” *UI* β€” Block Tunes toggler moved to the left +- `Improvement` β€” *UI* β€” Block Actions (BT toggler + Plus Button) will appear on block hovering instead of click +- `Improvement` β€” *UI* β€” Block Tunes toggler icon and Plus button icon updated +- `Improvement` β€” *Dev Example Page* β€” The menu with helpful buttons added to the bottom of the screen +- `Improvement` β€” *Dev Example Page* β€” The 'dark' theme added. Now we can code at night more comfortably. +- `Improvement` β€” *Rectangle Selection* β€” paint optimized +- `Fix` β€” *Rectangle Selection* β€” the first click after RS was not clear selection state. Now does. +- `Improvement` β€” *Blocks API* β€” toolbar moving logic removed from `blocks.move()` and `blocks.swap()` methods. Instead, you should use Toolbar API (it was used by MoveUp and MoveDown tunes, they were updated). +- `New` β€” *Blocks API* β€” The `getBlockIndex()` method added +- `New` β€” *Blocks API* β€” the `insert()` method now has the `replace: boolean` parameter +- `New` β€” *Blocks API* β€” the `insert()` method now returns the inserted `Block API` +- `New` β€” *Listeners API* β€” the `on()` method now returns the listener id. +- `New` β€” *Listeners API* β€” the new `offById()` method added +- `New` β€” `API` β€” The new `UiApi` section was added. It allows accessing some editor UI nodes and methods. +- `Refactoring` β€” Toolbox became a standalone class instead of a Module. It can be accessed only through the Toolbar module. +- `Refactoring` β€” CI flow optimized. ### 2.22.3 diff --git a/example/assets/demo.css b/example/assets/demo.css index 60ed8b7f4..cffebcd9a 100644 --- a/example/assets/demo.css +++ b/example/assets/demo.css @@ -1,11 +1,27 @@ /** * Styles for the example page */ + +:root { + --color-bg-main: #fff; + --color-border-light: #E8E8EB; + --color-text-main: #000; +} + +.dark-mode { + --color-border-light: rgba(255, 255, 255,.08); + --color-bg-main: #1c1e24; + --color-text-main: #737886; +} + + body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-size: 14px; line-height: 1.5em; margin: 0; + background: var(--color-bg-main); + color: var(--color-text-main); } .ce-example { @@ -13,7 +29,7 @@ body { } .ce-example__header { - border-bottom: 1px solid #E8E8EB; + border-bottom: 1px solid var(--color-border-light); height: 50px; line-height: 50px; display: flex; @@ -62,23 +78,17 @@ body { -moz-osx-font-smoothing: grayscale; } -.ce-example__content--small { +.thin-mode .ce-example__content { max-width: 500px; border-left: 1px solid #eee; border-right: 1px solid #eee; padding: 0 15px; } -.ce-example__content--with-bg { - background: #f4f4f4; - max-width: none; - margin-top: -30px; -} - .ce-example__output { background: #1B202B; overflow-x: auto; - padding: 0 30px; + padding: 0 30px 80px; } .ce-example__output-content { @@ -127,29 +137,94 @@ body { } .ce-example__statusbar { + display: flex; + align-items: center; position: fixed; - bottom: 10px; - right: 10px; - background: #fff; - border-radius: 8px; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18); - font-size: 12px; + bottom: 0; + right: 0; + left: 0; + background: var(--color-bg-main); + border-radius: 8px 8px 0 0; + border-top: 1px solid var(--color-border-light); + box-shadow: 0 2px 6px var(--color-border-light); + font-size: 13px; padding: 8px 15px; z-index: 1; + user-select: none; +} + +@media (max-width: 768px) { + .ce-example__statusbar { + display: none; + } +} + +.ce-example__statusbar-item:not(:last-of-type)::after { + content: '|'; + color: #ddd; + margin: 0 15px 0 12px; +} + +.ce-example__statusbar-item--right { + margin-left: auto; } .ce-example__statusbar-button { - display: inline-flex; - margin-left: 10px; - background: #4A9DF8; - padding: 6px 12px; - box-shadow: 0 7px 8px -4px rgba(137, 207, 255, 0.77); + display: inline-block; + padding: 3px 12px; transition: all 150ms ease; cursor: pointer; border-radius: 31px; + background: #eff1f4; + text-align: center; + user-select: none; +} + +.ce-example__statusbar-button:hover { + background: #e0e4eb; +} + +.ce-example__statusbar-button-primary { + background: #4A9DF8; color: #fff; + box-shadow: 0 7px 8px -4px rgba(137, 207, 255, 0.77); font-family: 'PT Mono', Menlo, Monaco, Consolas, Courier New, monospace; - text-align: center; +} + +.ce-example__statusbar { + --toggler-size: 20px; +} + +.ce-example__statusbar-toggler { + position: relative; + background: #7b8799; + border-radius: 20px; + padding: 2px; + width: calc(var(--toggler-size) * 2.2); + cursor: pointer; + user-select: none; +} + +.ce-example__statusbar-toggler::before { + display: block; + content: ''; + width: var(--toggler-size); + height: var(--toggler-size); + background: #fff; + border-radius: 50%; + transition: transform 100ms ease-in; +} + +.ce-example__statusbar-toggler::after { + --moon-size: calc(var(--toggler-size) * 0.5); + content: ''; + position: absolute; + top: 5px; + right: 5px; + height: var(--moon-size); + width: var(--moon-size); + box-shadow: calc(var(--moon-size) * 0.25 * -1) calc(var(--moon-size) * 0.18) 0 calc(var(--moon-size) * 0.05) white; + border-radius: 50%; } @media all and (max-width: 730px){ @@ -178,22 +253,10 @@ body { color: rgb(247, 60, 173); } -.ce-example .ce-block:first-of-type h2.ce-header{ +.ce-example .ce-block:first-of-type h1.ce-header{ font-size: 50px; } -.ce-example h2.ce-header{ - font-size: 30px; -} - -.ce-example h3.ce-header { - font-size: 24px; -} - -.ce-example h4.ce-header { - font-size: 18px; -} - .ce-example-multiple { display: grid; grid-template-columns: calc(50% - 15px) calc(50% - 15px); @@ -206,3 +269,101 @@ body { border-radius: 7px; padding: 30px; } + +.show-block-boundaries .ce-block { + box-shadow: inset 0 0 0 1px #eff2f5; +} + +.show-block-boundaries .ce-block__content { + box-shadow: 0 0 0 1px rgba(224, 231, 241, 0.61) inset; +} +.show-block-boundaries #showBlocksBoundariesButton span, +.thin-mode #enableThinModeButton span { + font-size: 0; + vertical-align: bottom; +} + +.show-block-boundaries #showBlocksBoundariesButton span::before, +.thin-mode #enableThinModeButton span::before { + content: attr(data-toggled-text); + display: inline; + font-size: 13px; +} + + + +/** + * Dark theme overrides + */ +.dark-mode img { + opacity: 0.5; +} + +.dark-mode .cdx-simple-image__picture--with-border, +.dark-mode .cdx-input { + border-color: var(--color-border-light); +} + +.dark-mode .ce-example__button { + box-shadow: 0 24px 18px -14px rgba(4, 154, 255, 0.24); +} + +.dark-mode .ce-example__output { + background-color: #17191f; +} + +.dark-mode .inline-code { + background-color: rgba(53, 56, 68, 0.62); + color: #727683; +} + +.dark-mode a { + color: #959ba8; +} + +.dark-mode .ce-example__statusbar-toggler, +.dark-mode .ce-example__statusbar-button { + background-color: #343842; +} + +.dark-mode .ce-example__statusbar-toggler::before { + transform: translateX(calc(var(--toggler-size) * 2.2 - var(--toggler-size))); +} + +.dark-mode .ce-example__statusbar-toggler::after { + content: '*'; + right: auto; + left: 6px; + top: 7px; + color: #fff; + box-shadow: none; + font-size: 32px; +} + +.dark-mode.show-block-boundaries .ce-block, +.dark-mode.show-block-boundaries .ce-block__content { + box-shadow: 0 0 0 1px rgba(128, 144, 159, 0.09) inset; +} + +.dark-mode.thin-mode .ce-example__content{ + border-color: var(--color-border-light); +} + +.dark-mode .ce-example__statusbar-item:not(:last-of-type)::after { + color: var(--color-border-light); +} + +.dark-mode .ce-block--selected .ce-block__content, +.dark-mode ::selection{ + background-color: rgba(57, 68, 84, 0.57); +} + +.dark-mode .ce-toolbox__button, +.dark-mode .ce-toolbar__settings-btn, +.dark-mode .ce-toolbar__plus { + color: inherit; +} + +.dark-mode .ce-stub { + opacity: 0.3; +} diff --git a/example/example-dev.html b/example/example-dev.html index 8064cb07e..cb7e90897 100644 --- a/example/example-dev.html +++ b/example/example-dev.html @@ -1,5 +1,5 @@ - + @@ -88,10 +112,10 @@ diff --git a/example/tools/header b/example/tools/header index f511dc066..491ada2f1 160000 --- a/example/tools/header +++ b/example/tools/header @@ -1 +1 @@ -Subproject commit f511dc066aab6bf82b4ffcd4cdee35ad71db8d36 +Subproject commit 491ada2f1653de52cfaac6130244736f57f7afde diff --git a/example/tools/image b/example/tools/image index e26b3e7c1..e3df500fc 160000 --- a/example/tools/image +++ b/example/tools/image @@ -1 +1 @@ -Subproject commit e26b3e7c106486d2d776219e18cd125469991a25 +Subproject commit e3df500fc62a88d3490fa4ba4030c07f0cd79d64 diff --git a/example/tools/nested-list b/example/tools/nested-list new file mode 160000 index 000000000..8375ae177 --- /dev/null +++ b/example/tools/nested-list @@ -0,0 +1 @@ +Subproject commit 8375ae17756fa2677d57e716e12096437d01e8f8 diff --git a/package.json b/package.json index f96813aa3..886cc9fc8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@editorjs/editorjs", - "version": "2.23.0-rc.0", + "version": "2.23.0-rc.1", "description": "Editor.js β€” Native JS, based on API and Open Source", "main": "dist/editor.js", "types": "./types/index.d.ts", @@ -22,8 +22,9 @@ "lint:fix": "eslint src/ --ext .ts --fix", "lint:tests": "eslint test/ --ext .ts", "svg": "svg-sprite-generate -d src/assets/ -o dist/sprite.svg", + "ci:pull_paragraph": "git submodule update --init ./src/tools/paragraph", "pull_tools": "git submodule update --init --recursive", - "_tools:checkout": "git submodule foreach git checkout master", + "_tools:checkout": "git submodule foreach 'git checkout master || git checkout main'", "_tools:pull": "git submodule foreach git pull", "_tools:yarn": "git submodule foreach yarn", "_tools:build": "git submodule foreach yarn build", @@ -49,6 +50,8 @@ "@codexteam/shortcuts": "^1.1.1", "@cypress/code-coverage": "^3.9.2", "@cypress/webpack-preprocessor": "^5.6.0", + "@editorjs/header": "^2.6.1", + "@editorjs/simple-image": "^1.4.1", "@types/node": "^14.14.35", "@types/webpack": "^4.41.12", "@types/webpack-env": "^1.15.2", @@ -93,7 +96,7 @@ }, "dependencies": { "codex-notifier": "^1.1.2", - "codex-tooltip": "^1.0.2", + "codex-tooltip": "^1.0.4", "nanoid": "^3.1.22" } } diff --git a/src/assets/dots.svg b/src/assets/dots.svg index 926bbd806..57967964d 100644 --- a/src/assets/dots.svg +++ b/src/assets/dots.svg @@ -1,6 +1,10 @@ - - - - - + + + + + + + + + diff --git a/src/assets/plus.svg b/src/assets/plus.svg index 5f2fe1b4f..8ab786f5f 100644 --- a/src/assets/plus.svg +++ b/src/assets/plus.svg @@ -1,3 +1,6 @@ - - + + + + + diff --git a/src/components/block-tunes/block-tune-move-down.ts b/src/components/block-tunes/block-tune-move-down.ts index 3f5f4867a..2eadbf8e1 100644 --- a/src/components/block-tunes/block-tune-move-down.ts +++ b/src/components/block-tunes/block-tune-move-down.ts @@ -109,6 +109,8 @@ export default class MoveDownTune implements BlockTune { /** Change blocks positions */ this.api.blocks.move(currentBlockIndex + 1); + this.api.toolbar.toggleBlockSettings(true); + /** Hide the Tooltip */ this.api.tooltip.hide(); } diff --git a/src/components/block-tunes/block-tune-move-up.ts b/src/components/block-tunes/block-tune-move-up.ts index 940d3da4d..b29ba6c3e 100644 --- a/src/components/block-tunes/block-tune-move-up.ts +++ b/src/components/block-tunes/block-tune-move-up.ts @@ -117,6 +117,8 @@ export default class MoveUpTune implements BlockTune { /** Change blocks positions */ this.api.blocks.move(currentBlockIndex - 1); + this.api.toolbar.toggleBlockSettings(true); + /** Hide the Tooltip */ this.api.tooltip.hide(); } diff --git a/src/components/core.ts b/src/components/core.ts index 8ecd12c01..471bf7ff7 100644 --- a/src/components/core.ts +++ b/src/components/core.ts @@ -347,7 +347,7 @@ export default class Core { eventsDispatcher: this.eventsDispatcher, }); } catch (e) { - _.log(`Module ${Module.displayName} skipped because`, 'warn', e); + _.log(`Module ${Module.displayName} skipped because`, 'error', e); } }); } diff --git a/src/components/dom.ts b/src/components/dom.ts index 7e45cd6ec..75628ea2a 100644 --- a/src/components/dom.ts +++ b/src/components/dom.ts @@ -612,4 +612,26 @@ export default class Dom { public static isAnchor(element: Element): element is HTMLAnchorElement { return element.tagName.toLowerCase() === 'a'; } + + /** + * Return element's offset related to the document + * + * @todo handle case when editor initialized in scrollable popup + * @param el - element to compute offset + */ + public static offset(el): {top: number; left: number; right: number; bottom: number} { + const rect = el.getBoundingClientRect(); + const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft; + const scrollTop = window.pageYOffset || document.documentElement.scrollTop; + + const top = rect.top + scrollTop; + const left = rect.left + scrollLeft; + + return { + top, + left, + bottom: top + rect.height, + right: left + rect.width, + }; + } } diff --git a/src/components/modules/api/blocks.ts b/src/components/modules/api/blocks.ts index d5a64ad90..994f72adc 100644 --- a/src/components/modules/api/blocks.ts +++ b/src/components/modules/api/blocks.ts @@ -25,6 +25,7 @@ export default class BlocksAPI extends Module { getBlockByIndex: (index: number): BlockAPIInterface | void => this.getBlockByIndex(index), getById: (id: string): BlockAPIInterface | null => this.getById(id), getCurrentBlockIndex: (): number => this.getCurrentBlockIndex(), + getBlockIndex: (id: string): number => this.getBlockIndex(id), getBlocksCount: (): number => this.getBlocksCount(), stretchBlock: (index: number, status = true): void => this.stretchBlock(index, status), insertNewBlock: (): void => this.insertNewBlock(), @@ -51,6 +52,24 @@ export default class BlocksAPI extends Module { return this.Editor.BlockManager.currentBlockIndex; } + /** + * Returns the index of Block by id; + * + * @param id - block id + * @returns {number} + */ + public getBlockIndex(id: string): number | undefined { + const block = this.Editor.BlockManager.getBlockById(id); + + if (!block) { + _.logLabeled('There is no block with id `' + id + '`', 'warn'); + + return; + } + + return this.Editor.BlockManager.getBlockIndex(block); + } + /** * Returns BlockAPI object by Block index * @@ -100,12 +119,6 @@ export default class BlocksAPI extends Module { ); this.Editor.BlockManager.swap(fromIndex, toIndex); - - /** - * Move toolbar - * DO not close the settings - */ - this.Editor.Toolbar.move(false); } /** @@ -116,12 +129,6 @@ export default class BlocksAPI extends Module { */ public move(toIndex: number, fromIndex?: number): void { this.Editor.BlockManager.move(toIndex, fromIndex); - - /** - * Move toolbar - * DO not close the settings - */ - this.Editor.Toolbar.move(false); } /** @@ -212,27 +219,32 @@ export default class BlocksAPI extends Module { } /** - * Insert new Block + * Insert new Block and returns it's API * * @param {string} type β€” Tool name * @param {BlockToolData} data β€” Tool data to insert * @param {ToolConfig} config β€” Tool config * @param {number?} index β€” index where to insert new Block * @param {boolean?} needToFocus - flag to focus inserted Block + * @param replace - pass true to replace the Block existed under passed index */ public insert = ( type: string = this.config.defaultBlock, data: BlockToolData = {}, config: ToolConfig = {}, index?: number, - needToFocus?: boolean - ): void => { - this.Editor.BlockManager.insert({ + needToFocus?: boolean, + replace?: boolean + ): BlockAPIInterface => { + const insertedBlock = this.Editor.BlockManager.insert({ tool: type, data, index, needToFocus, + replace, }); + + return new BlockAPI(insertedBlock); } /** diff --git a/src/components/modules/api/index.ts b/src/components/modules/api/index.ts index db875771a..0f3562230 100644 --- a/src/components/modules/api/index.ts +++ b/src/components/modules/api/index.ts @@ -32,6 +32,7 @@ export default class API extends Module { tooltip: this.Editor.TooltipAPI.methods, i18n: this.Editor.I18nAPI.methods, readOnly: this.Editor.ReadOnlyAPI.methods, + ui: this.Editor.UiAPI.methods, }; } diff --git a/src/components/modules/api/listeners.ts b/src/components/modules/api/listeners.ts index a3b403a3a..ec87e1bc4 100644 --- a/src/components/modules/api/listeners.ts +++ b/src/components/modules/api/listeners.ts @@ -13,21 +13,22 @@ export default class ListenersAPI extends Module { */ public get methods(): Listeners { return { - on: (element: HTMLElement, eventType, handler, useCapture): void => this.on(element, eventType, handler, useCapture), + on: (element: HTMLElement, eventType, handler, useCapture): string => this.on(element, eventType, handler, useCapture), off: (element, eventType, handler, useCapture): void => this.off(element, eventType, handler, useCapture), + offById: (id): void => this.offById(id), }; } /** - * adds DOM event listener + * Ads a DOM event listener. Return it's id. * * @param {HTMLElement} element - Element to set handler to * @param {string} eventType - event type * @param {() => void} handler - event handler * @param {boolean} useCapture - capture event or not */ - public on(element: HTMLElement, eventType: string, handler: () => void, useCapture?: boolean): void { - this.listeners.on(element, eventType, handler, useCapture); + public on(element: HTMLElement, eventType: string, handler: () => void, useCapture?: boolean): string { + return this.listeners.on(element, eventType, handler, useCapture); } /** @@ -41,4 +42,13 @@ export default class ListenersAPI extends Module { public off(element: Element, eventType: string, handler: () => void, useCapture?: boolean): void { this.listeners.off(element, eventType, handler, useCapture); } + + /** + * Removes DOM listener by the listener id + * + * @param id - id of the listener to remove + */ + public offById(id: string): void { + this.listeners.offById(id); + } } diff --git a/src/components/modules/api/toolbar.ts b/src/components/modules/api/toolbar.ts index 9cbb8de6e..2c01407de 100644 --- a/src/components/modules/api/toolbar.ts +++ b/src/components/modules/api/toolbar.ts @@ -23,7 +23,7 @@ export default class ToolbarAPI extends Module { * Open toolbar */ public open(): void { - this.Editor.Toolbar.open(); + this.Editor.Toolbar.moveAndOpen(); } /** @@ -48,16 +48,8 @@ export default class ToolbarAPI extends Module { /** Check that opening state is set or not */ const canOpenBlockSettings = openingState ?? !this.Editor.BlockSettings.opened; - /** Check if state same as current state */ - if (openingState === this.Editor.BlockSettings.opened) { - return; - } - if (canOpenBlockSettings) { - if (!this.Editor.Toolbar.opened) { - this.Editor.Toolbar.open(true, false); - this.Editor.Toolbar.plusButton.hide(); - } + this.Editor.Toolbar.moveAndOpen(); this.Editor.BlockSettings.open(); } else { this.Editor.BlockSettings.close(); diff --git a/src/components/modules/api/tooltip.ts b/src/components/modules/api/tooltip.ts index 30bb6585e..54327a5d6 100644 --- a/src/components/modules/api/tooltip.ts +++ b/src/components/modules/api/tooltip.ts @@ -1,10 +1,8 @@ import { Tooltip as ITooltip } from '../../../../types/api'; -import { TooltipContent, TooltipOptions } from 'codex-tooltip'; +import type { TooltipOptions, TooltipContent } from 'codex-tooltip/types'; import Module from '../../__module'; import { ModuleConfig } from '../../../types-internal/module-config'; import Tooltip from '../../utils/tooltip'; -import EventsDispatcher from '../../utils/events'; -import { EditorConfig } from '../../../../types'; /** * @class TooltipAPI * @classdesc Tooltip API @@ -16,9 +14,9 @@ export default class TooltipAPI extends Module { private tooltip: Tooltip; /** * @class - * @param {object} moduleConfiguration - Module Configuration - * @param {EditorConfig} moduleConfiguration.config - Editor's config - * @param {EventsDispatcher} moduleConfiguration.eventsDispatcher - Editor's event dispatcher + * @param moduleConfiguration - Module Configuration + * @param moduleConfiguration.config - Editor's config + * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher */ constructor({ config, eventsDispatcher }: ModuleConfig) { super({ diff --git a/src/components/modules/api/ui.ts b/src/components/modules/api/ui.ts new file mode 100644 index 000000000..b1e42d18b --- /dev/null +++ b/src/components/modules/api/ui.ts @@ -0,0 +1,36 @@ +import Module from '../../__module'; +import { Ui, UiNodes } from '../../../../types/api'; + +/** + * API module allowing to access some Editor UI elements + */ +export default class UiAPI extends Module { + /** + * Available methods / getters + */ + public get methods(): Ui { + return { + nodes: this.editorNodes, + /** + * There can be added some UI methods, like toggleThinMode() etc + */ + }; + } + + /** + * Exported classes + */ + private get editorNodes(): UiNodes { + return { + /** + * Top-level editor instance wrapper + */ + wrapper: this.Editor.UI.nodes.wrapper, + + /** + * Element that holds all the Blocks + */ + redactor: this.Editor.UI.nodes.redactor, + }; + } +} diff --git a/src/components/modules/blockEvents.ts b/src/components/modules/blockEvents.ts index e7f9336c0..7fece2f49 100644 --- a/src/components/modules/blockEvents.ts +++ b/src/components/modules/blockEvents.ts @@ -125,9 +125,10 @@ export default class BlockEvents extends Module { return; } - const canOpenToolbox = currentBlock.tool.isDefault && currentBlock.isEmpty; - const conversionToolbarOpened = !currentBlock.isEmpty && ConversionToolbar.opened; - const inlineToolbarOpened = !currentBlock.isEmpty && !SelectionUtils.isCollapsed && InlineToolbar.opened; + const isEmptyBlock = currentBlock.isEmpty; + const canOpenToolbox = currentBlock.tool.isDefault && isEmptyBlock; + const conversionToolbarOpened = !isEmptyBlock && ConversionToolbar.opened; + const inlineToolbarOpened = !isEmptyBlock && !SelectionUtils.isCollapsed && InlineToolbar.opened; /** * For empty Blocks we show Plus button via Toolbox only for default Blocks @@ -255,19 +256,9 @@ export default class BlockEvents extends Module { this.Editor.Caret.setToBlock(newCurrent); /** - * If new Block is empty + * Show Toolbar */ - if (newCurrent.tool.isDefault && newCurrent.isEmpty) { - /** - * Show Toolbar - */ - this.Editor.Toolbar.open(false); - - /** - * Show Plus Button - */ - this.Editor.Toolbar.plusButton.show(); - } + this.Editor.Toolbar.moveAndOpen(newCurrent); event.preventDefault(); } @@ -505,7 +496,7 @@ export default class BlockEvents extends Module { * @param {KeyboardEvent} event - keyboard event */ private needToolbarClosing(event: KeyboardEvent): boolean { - const toolboxItemSelected = (event.keyCode === _.keyCodes.ENTER && this.Editor.Toolbox.opened), + const toolboxItemSelected = (event.keyCode === _.keyCodes.ENTER && this.Editor.Toolbar.toolbox.opened), blockSettingsItemSelected = (event.keyCode === _.keyCodes.ENTER && this.Editor.BlockSettings.opened), inlineToolbarItemSelected = (event.keyCode === _.keyCodes.ENTER && this.Editor.InlineToolbar.opened), conversionToolbarItemSelected = (event.keyCode === _.keyCodes.ENTER && this.Editor.ConversionToolbar.opened), @@ -531,11 +522,10 @@ export default class BlockEvents extends Module { */ private activateToolbox(): void { if (!this.Editor.Toolbar.opened) { - this.Editor.Toolbar.open(false, false); - this.Editor.Toolbar.plusButton.show(); - } + this.Editor.Toolbar.moveAndOpen(); + } // else Flipper will leaf through it - this.Editor.Toolbox.open(); + this.Editor.Toolbar.toolbox.open(); } /** @@ -544,8 +534,7 @@ export default class BlockEvents extends Module { private activateBlockSettings(): void { if (!this.Editor.Toolbar.opened) { this.Editor.BlockManager.currentBlock.focused = true; - this.Editor.Toolbar.open(true, false); - this.Editor.Toolbar.plusButton.hide(); + this.Editor.Toolbar.moveAndOpen(); } /** @@ -553,6 +542,11 @@ export default class BlockEvents extends Module { * Next Tab press will leaf Settings Buttons */ if (!this.Editor.BlockSettings.opened) { + /** + * @todo Debug the case when we set caret to some block, hovering another block + * β€” wrong settings will be opened. + * To fix it, we should refactor the Block Settings module β€” make it a standalone class, like the Toolbox + */ this.Editor.BlockSettings.open(); } } diff --git a/src/components/modules/blockManager.ts b/src/components/modules/blockManager.ts index 10da5ef29..9ac893bca 100644 --- a/src/components/modules/blockManager.ts +++ b/src/components/modules/blockManager.ts @@ -75,6 +75,15 @@ export default class BlockManager extends Module { return this._blocks[this.currentBlockIndex]; } + /** + * Set passed Block as a current + * + * @param block - block to set as a current + */ + public set currentBlock(block: Block) { + this.currentBlockIndex = this.getBlockIndex(block); + } + /** * Returns next Block instance * @@ -549,11 +558,15 @@ export default class BlockManager extends Module { /** * Returns Block by passed index * - * @param {number} index - index to get + * @param {number} index - index to get. -1 to get last * * @returns {Block} */ public getBlockByIndex(index): Block { + if (index === -1) { + index = this._blocks.length - 1; + } + return this._blocks[index]; } @@ -746,7 +759,7 @@ export default class BlockManager extends Module { /** * Sets current Block Index -1 which means unknown - * and clear highlightings + * and clear highlights */ public dropPointer(): void { this.currentBlockIndex = -1; diff --git a/src/components/modules/rectangleSelection.ts b/src/components/modules/rectangleSelection.ts index 706578973..f01248150 100644 --- a/src/components/modules/rectangleSelection.ts +++ b/src/components/modules/rectangleSelection.ts @@ -10,6 +10,7 @@ import $ from '../dom'; import SelectionUtils from '../selection'; import Block from '../block'; +import * as _ from '../utils'; /** * @@ -185,17 +186,21 @@ export default class RectangleSelection extends Module { this.processMouseDown(mouseEvent); }, false); - this.listeners.on(document.body, 'mousemove', (mouseEvent: MouseEvent) => { + this.listeners.on(document.body, 'mousemove', _.throttle((mouseEvent: MouseEvent) => { this.processMouseMove(mouseEvent); - }, false); + }, 10), { + passive: true, + }); this.listeners.on(document.body, 'mouseleave', () => { this.processMouseLeave(); }); - this.listeners.on(window, 'scroll', (mouseEvent: MouseEvent) => { + this.listeners.on(window, 'scroll', _.throttle((mouseEvent: MouseEvent) => { this.processScroll(mouseEvent); - }, false); + }, 10), { + passive: true, + }); this.listeners.on(document.body, 'mouseup', () => { this.processMouseUp(); @@ -252,6 +257,7 @@ export default class RectangleSelection extends Module { * Handle mouse up */ private processMouseUp(): void { + this.clearSelection(); this.endSelection(); } @@ -356,6 +362,11 @@ export default class RectangleSelection extends Module { this.updateRectangleSize(); + /** + * Hide Block Settings Toggler (along with the Toolbar) (if showed) when the Rectangle Selection is activated + */ + this.Editor.Toolbar.close(); + if (index === undefined) { return; } diff --git a/src/components/modules/toolbar/blockSettings.ts b/src/components/modules/toolbar/blockSettings.ts index b6ad7922c..30f84633c 100644 --- a/src/components/modules/toolbar/blockSettings.ts +++ b/src/components/modules/toolbar/blockSettings.ts @@ -3,6 +3,7 @@ import $ from '../../dom'; import Flipper, { FlipperOptions } from '../../flipper'; import * as _ from '../../utils'; import SelectionUtils from '../../selection'; +import Block from '../../block'; /** * HTML Elements that used for BlockSettings @@ -23,6 +24,8 @@ interface BlockSettingsNodes { * | . Default Settings . | * | ...................... | * |________________________| + * + * @todo Make Block Settings no-module but a standalone class, like Toolbox */ export default class BlockSettings extends Module { /** @@ -120,8 +123,10 @@ export default class BlockSettings extends Module { /** * Open Block Settings pane + * + * @param targetBlock - near which Block we should open BlockSettings */ - public open(): void { + public open(targetBlock: Block = this.Editor.BlockManager.currentBlock): void { this.nodes.wrapper.classList.add(this.CSS.wrapperOpened); /** @@ -133,18 +138,18 @@ export default class BlockSettings extends Module { /** * Highlight content of a Block we are working with */ - this.Editor.BlockManager.currentBlock.selected = true; + targetBlock.selected = true; this.Editor.BlockSelection.clearCache(); /** * Fill Tool's settings */ - this.addToolSettings(); + this.addToolSettings(targetBlock); /** * Add default settings that presents for all Blocks */ - this.addTunes(); + this.addTunes(targetBlock); /** Tell to subscribers that block settings is opened */ this.eventsDispatcher.emit(this.events.opened); @@ -227,9 +232,11 @@ export default class BlockSettings extends Module { /** * Add Tool's settings + * + * @param targetBlock - Block to render settings */ - private addToolSettings(): void { - const settingsElement = this.Editor.BlockManager.currentBlock.renderSettings(); + private addToolSettings(targetBlock): void { + const settingsElement = targetBlock.renderSettings(); if (settingsElement) { $.append(this.nodes.toolSettings, settingsElement); @@ -238,9 +245,11 @@ export default class BlockSettings extends Module { /** * Add tunes: provided by user and default ones + * + * @param targetBlock - Block to render its Tunes set */ - private addTunes(): void { - const [toolTunes, defaultTunes] = this.Editor.BlockManager.currentBlock.renderTunes(); + private addTunes(targetBlock): void { + const [toolTunes, defaultTunes] = targetBlock.renderTunes(); $.append(this.nodes.toolSettings, toolTunes); $.append(this.nodes.defaultSettings, defaultTunes); diff --git a/src/components/modules/toolbar/conversion.ts b/src/components/modules/toolbar/conversion.ts index c40aed184..f53d0ec5b 100644 --- a/src/components/modules/toolbar/conversion.ts +++ b/src/components/modules/toolbar/conversion.ts @@ -17,6 +17,8 @@ interface ConversionToolbarNodes { /** * Block Converter + * + * @todo Make the Conversion Toolbar no-module but a standalone class, like Toolbox */ export default class ConversionToolbar extends Module { /** diff --git a/src/components/modules/toolbar/index.ts b/src/components/modules/toolbar/index.ts index 7f0e319dc..d60ffea1b 100644 --- a/src/components/modules/toolbar/index.ts +++ b/src/components/modules/toolbar/index.ts @@ -5,8 +5,25 @@ import I18n from '../../i18n'; import { I18nInternalNS } from '../../i18n/namespace-internal'; import Tooltip from '../../utils/tooltip'; import { ModuleConfig } from '../../../types-internal/module-config'; -import { EditorConfig } from '../../../../types'; -import SelectionUtils from '../../selection'; +import { BlockAPI } from '../../../../types'; +import Block from '../../block'; +import Toolbox, { ToolboxEvent } from '../../ui/toolbox'; + +/** + * @todo Tab on non-empty block should open Block Settings of the hoveredBlock (not where caret is set) + * - make Block Settings a standalone module + * + * @todo TESTCASE - show toggler after opening and closing the Inline Toolbar + * @todo TESTCASE - Click outside Editor holder should close Toolbar and Clear Focused blocks + * @todo TESTCASE - Click inside Editor holder should close Toolbar and Clear Focused blocks + * @todo TESTCASE - Click inside Redactor zone when Block Settings are opened: + * - should close Block Settings + * - should not close Toolbar + * - should move Toolbar to the clicked Block + * @todo TESTCASE - Toolbar should be closed on the Cross Block Selection + * @todo TESTCASE - Toolbar should be closed on the Rectangle Selection + * @todo TESTCASE - If Block Settings or Toolbox are opened, the Toolbar should not be moved by Bocks hovering + */ /** * HTML Elements used for Toolbar UI @@ -80,11 +97,22 @@ export default class Toolbar extends Module { * Tooltip utility Instance */ private tooltip: Tooltip; + + /** + * Block near which we display the Toolbox + */ + private hoveredBlock: Block; + + /** + * Toolbox class instance + */ + private toolboxInstance: Toolbox; + /** * @class - * @param {object} moduleConfiguration - Module Configuration - * @param {EditorConfig} moduleConfiguration.config - Editor's config - * @param {EventsDispatcher} moduleConfiguration.eventsDispatcher - Editor's event dispatcher + * @param moduleConfiguration - Module Configuration + * @param moduleConfiguration.config - Editor's config + * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher */ constructor({ config, eventsDispatcher }: ModuleConfig) { super({ @@ -107,6 +135,7 @@ export default class Toolbar extends Module { actionsOpened: 'ce-toolbar__actions--opened', toolbarOpened: 'ce-toolbar--opened', + openedToolboxHolderModifier: 'codex-editor--toolbox-opened', // Content Zone plusButton: 'ce-toolbar__plus', @@ -137,7 +166,7 @@ export default class Toolbar extends Module { return { hide: (): void => this.nodes.plusButton.classList.add(this.CSS.plusButtonHidden), show: (): void => { - if (this.Editor.Toolbox.isEmpty) { + if (this.toolboxInstance.isEmpty) { return; } this.nodes.plusButton.classList.remove(this.CSS.plusButtonHidden); @@ -145,6 +174,32 @@ export default class Toolbar extends Module { }; } + /** + * Public interface for accessing the Toolbox + */ + public get toolbox(): { + opened: boolean; + close: () => void; + open: () => void; + toggle: () => void; + flipperHasFocus: boolean; + } { + return { + opened: this.toolboxInstance.opened, + close: (): void => this.toolboxInstance.close(), + open: (): void => { + /** + * Set current block to cover the case when the Toolbar showed near hovered Block but caret is set to another Block. + */ + this.Editor.BlockManager.currentBlock = this.hoveredBlock; + + this.toolboxInstance.open(); + }, + toggle: (): void => this.toolboxInstance.toggle(), + flipperHasFocus: this.toolboxInstance.flipperHasFocus, + }; + } + /** * Block actions appearance manipulations * @@ -172,54 +227,80 @@ export default class Toolbar extends Module { this.enableModuleBindings(); } else { this.destroy(); - this.Editor.Toolbox.destroy(); + this.toolboxInstance.destroy(); this.Editor.BlockSettings.destroy(); this.disableModuleBindings(); } } /** - * Move Toolbar to the Current Block + * Move Toolbar to the passed (or current) Block * - * @param {boolean} forceClose - force close Toolbar Settings and Toolbar + * @param block - block to move Toolbar near it */ - public move(forceClose = true): void { - if (forceClose) { - /** Close Toolbox when we move toolbar */ - this.Editor.Toolbox.close(); - this.Editor.BlockSettings.close(); - } - - const currentBlock = this.Editor.BlockManager.currentBlock.holder; + public moveAndOpen(block: Block = this.Editor.BlockManager.currentBlock): void { + /** + * Close Toolbox when we move toolbar + */ + this.toolboxInstance.close(); + this.Editor.BlockSettings.close(); /** * If no one Block selected as a Current */ - if (!currentBlock) { + if (!block) { return; } + this.hoveredBlock = block; + + const targetBlockHolder = block.holder; const { isMobile } = this.Editor.UI; - const blockHeight = currentBlock.offsetHeight; - let toolbarY = currentBlock.offsetTop; + const renderedContent = block.pluginsContent; + const renderedContentStyle = window.getComputedStyle(renderedContent); + const blockRenderedElementPaddingTop = parseInt(renderedContentStyle.paddingTop, 10); + const blockHeight = targetBlockHolder.offsetHeight; + + let toolbarY; /** - * 1) On desktop β€” Toolbar at the top of Block, Plus/Toolbox moved the center of Block - * 2) On mobile β€” Toolbar at the bottom of Block + * On mobile β€” Toolbar at the bottom of Block + * On Desktop β€” Toolbar should be moved to the first line of block text + * To do that, we compute the block offset and the padding-top of the plugin content */ - if (!isMobile) { - const contentOffset = Math.floor(blockHeight / 2); - - this.nodes.plusButton.style.transform = `translate3d(0, calc(${contentOffset}px - 50%), 0)`; - this.Editor.Toolbox.nodes.toolbox.style.transform = `translate3d(0, calc(${contentOffset}px - 50%), 0)`; + if (isMobile) { + toolbarY = targetBlockHolder.offsetTop + blockHeight; } else { - toolbarY += blockHeight; + toolbarY = targetBlockHolder.offsetTop + blockRenderedElementPaddingTop; } /** * Move Toolbar to the Top coordinate of Block */ this.nodes.wrapper.style.transform = `translate3D(0, ${Math.floor(toolbarY)}px, 0)`; + + /** + * Plus Button should be shown only for __empty__ __default__ block + */ + if (block.tool.isDefault && block.isEmpty) { + this.plusButton.show(); + } else { + this.plusButton.hide(); + } + + this.open(); + } + + /** + * Close the Toolbar + */ + public close(): void { + this.nodes.wrapper.classList.remove(this.CSS.toolbarOpened); + + /** Close components */ + this.blockActions.hide(); + this.toolboxInstance.close(); + this.Editor.BlockSettings.close(); } /** @@ -232,9 +313,8 @@ export default class Toolbar extends Module { * with closing Toolbox and Block Settings * This flag allows to open Toolbar with Toolbox */ - public open(withBlockActions = true, needToCloseToolbox = true): void { + private open(withBlockActions = true, needToCloseToolbox = true): void { _.delay(() => { - this.move(needToCloseToolbox); this.nodes.wrapper.classList.add(this.CSS.toolbarOpened); if (withBlockActions) { @@ -245,18 +325,6 @@ export default class Toolbar extends Module { }, 50)(); } - /** - * Close the Toolbar - */ - public close(): void { - this.nodes.wrapper.classList.remove(this.CSS.toolbarOpened); - - /** Close components */ - this.blockActions.hide(); - this.Editor.Toolbox.close(); - this.Editor.BlockSettings.close(); - } - /** * Draws Toolbar elements */ @@ -282,10 +350,11 @@ export default class Toolbar extends Module { * - Toolbox */ this.nodes.plusButton = $.make('div', this.CSS.plusButton); - $.append(this.nodes.plusButton, $.svg('plus', 14, 14)); - $.append(this.nodes.content, this.nodes.plusButton); + $.append(this.nodes.plusButton, $.svg('plus', 16, 16)); + $.append(this.nodes.actions, this.nodes.plusButton); this.readOnlyMutableListeners.on(this.nodes.plusButton, 'click', () => { + this.tooltip.hide(true); this.plusButtonClicked(); }, false); @@ -299,7 +368,9 @@ export default class Toolbar extends Module { textContent: 'β‡₯ Tab', })); - this.tooltip.onHover(this.nodes.plusButton, tooltipContent); + this.tooltip.onHover(this.nodes.plusButton, tooltipContent, { + hidingDelay: 400, + }); /** * Fill Actions Zone: @@ -309,7 +380,7 @@ export default class Toolbar extends Module { */ this.nodes.blockActionsButtons = $.make('div', this.CSS.blockActionsButtons); this.nodes.settingsToggler = $.make('span', this.CSS.settingsToggler); - const settingsIcon = $.svg('dots', 8, 8); + const settingsIcon = $.svg('dots', 16, 16); $.append(this.nodes.settingsToggler, settingsIcon); $.append(this.nodes.blockActionsButtons, this.nodes.settingsToggler); @@ -319,14 +390,14 @@ export default class Toolbar extends Module { this.nodes.settingsToggler, I18n.ui(I18nInternalNS.ui.blockTunes.toggler, 'Click to tune'), { - placement: 'top', + hidingDelay: 400, } ); /** * Appending Toolbar components to itself */ - $.append(this.nodes.content, this.Editor.Toolbox.nodes.toolbox); + $.append(this.nodes.content, this.makeToolbox()); $.append(this.nodes.actions, this.Editor.BlockSettings.nodes.wrapper); /** @@ -335,11 +406,57 @@ export default class Toolbar extends Module { $.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper); } + /** + * Creates the Toolbox instance and return it's rendered element + */ + private makeToolbox(): Element { + /** + * Make the Toolbox + */ + this.toolboxInstance = new Toolbox({ + api: this.Editor.API.methods, + tools: this.Editor.Tools.blockTools, + }); + + this.toolboxInstance.on(ToolboxEvent.Opened, () => { + this.Editor.UI.nodes.wrapper.classList.add(this.CSS.openedToolboxHolderModifier); + }); + + this.toolboxInstance.on(ToolboxEvent.Closed, () => { + this.Editor.UI.nodes.wrapper.classList.remove(this.CSS.openedToolboxHolderModifier); + }); + + this.toolboxInstance.on(ToolboxEvent.BlockAdded, ({ block }: {block: BlockAPI }) => { + const { BlockManager, Caret } = this.Editor; + const newBlock = BlockManager.getBlockById(block.id); + + /** + * If the new block doesn't contain inputs, insert the new paragraph below + */ + if (newBlock.inputs.length === 0) { + if (newBlock === BlockManager.lastBlock) { + BlockManager.insertAtEnd(); + Caret.setToBlock(BlockManager.lastBlock); + } else { + Caret.setToBlock(BlockManager.nextBlock); + } + } + }); + + return this.toolboxInstance.make(); + } + /** * Handler for Plus Button */ private plusButtonClicked(): void { - this.Editor.Toolbox.toggle(); + /** + * We need to update Current Block because user can click on the Plus Button (thanks to appearing by hover) without any clicks on editor + * In this case currentBlock will point last block + */ + this.Editor.BlockManager.currentBlock = this.hoveredBlock; + + this.toolboxInstance.toggle(); } /** @@ -360,7 +477,25 @@ export default class Toolbar extends Module { e.stopPropagation(); this.settingsTogglerClicked(); + + this.toolboxInstance.close(); + + this.tooltip.hide(true); }, true); + + /** + * Subscribe to the 'block-hovered' event + */ + this.eventsDispatcher.on(this.Editor.UI.events.blockHovered, (data: {block: Block}) => { + /** + * Do not move toolbar if Block Settings or Toolbox opened + */ + if (this.Editor.BlockSettings.opened || this.toolboxInstance.opened) { + return; + } + + this.moveAndOpen(data.block); + }); } /** @@ -374,10 +509,16 @@ export default class Toolbar extends Module { * Clicks on the Block Settings toggler */ private settingsTogglerClicked(): void { + /** + * We need to update Current Block because user can click on toggler (thanks to appearing by hover) without any clicks on editor + * In this case currentBlock will point last block + */ + this.Editor.BlockManager.currentBlock = this.hoveredBlock; + if (this.Editor.BlockSettings.opened) { this.Editor.BlockSettings.close(); } else { - this.Editor.BlockSettings.open(); + this.Editor.BlockSettings.open(this.hoveredBlock); } } @@ -385,7 +526,7 @@ export default class Toolbar extends Module { * Draws Toolbar UI * * Toolbar contains BlockSettings and Toolbox. - * Thats why at first we draw its components and then Toolbar itself + * That's why at first we draw its components and then Toolbar itself * * Steps: * - Make Toolbar dependent components like BlockSettings, Toolbox and so on @@ -398,11 +539,6 @@ export default class Toolbar extends Module { */ this.Editor.BlockSettings.make(); - /** - * Make Toolbox - */ - this.Editor.Toolbox.make(); - /** * Make Toolbar */ @@ -415,6 +551,7 @@ export default class Toolbar extends Module { */ private destroy(): void { this.removeAllNodes(); + this.toolboxInstance.destroy(); this.tooltip.destroy(); } } diff --git a/src/components/modules/toolbar/inline.ts b/src/components/modules/toolbar/inline.ts index 41ca2ddfe..91ded10dd 100644 --- a/src/components/modules/toolbar/inline.ts +++ b/src/components/modules/toolbar/inline.ts @@ -2,7 +2,7 @@ import Module from '../../__module'; import $ from '../../dom'; import SelectionUtils from '../../selection'; import * as _ from '../../utils'; -import { InlineTool as IInlineTool, EditorConfig } from '../../../../types'; +import { InlineTool as IInlineTool } from '../../../../types'; import Flipper from '../../flipper'; import I18n from '../../i18n'; import { I18nInternalNS } from '../../i18n/namespace-internal'; @@ -100,9 +100,9 @@ export default class InlineToolbar extends Module { private tooltip: Tooltip; /** * @class - * @param {object} moduleConfiguration - Module Configuration - * @param {EditorConfig} moduleConfiguration.config - Editor's config - * @param {EventsDispatcher} moduleConfiguration.eventsDispatcher - Editor's event dispatcher + * @param moduleConfiguration - Module Configuration + * @param moduleConfiguration.config - Editor's config + * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher */ constructor({ config, eventsDispatcher }: ModuleConfig) { super({ diff --git a/src/components/modules/ui.ts b/src/components/modules/ui.ts index c697e47a6..aecd6de57 100644 --- a/src/components/modules/ui.ts +++ b/src/components/modules/ui.ts @@ -46,6 +46,15 @@ interface UINodes { * @property {Element} nodes.redactor - */ export default class UI extends Module { + /** + * Events could be emitted by this module. + */ + public get events(): { blockHovered: string } { + return { + blockHovered: 'block-hovered', + }; + } + /** * Editor.js UI CSS class names * @@ -209,15 +218,23 @@ export default class UI extends Module { * @returns {boolean} */ public get someToolbarOpened(): boolean { - const { Toolbox, BlockSettings, InlineToolbar, ConversionToolbar } = this.Editor; + const { Toolbar, BlockSettings, InlineToolbar, ConversionToolbar } = this.Editor; - return BlockSettings.opened || InlineToolbar.opened || ConversionToolbar.opened || Toolbox.opened; + return BlockSettings.opened || InlineToolbar.opened || ConversionToolbar.opened || Toolbar.toolbox.opened; } /** * Check for some Flipper-buttons is under focus */ public get someFlipperButtonFocused(): boolean { + /** + * Toolbar has internal module (Toolbox) that has own Flipper, + * so we check it manually + */ + if (this.Editor.Toolbar.toolbox.flipperHasFocus) { + return true; + } + return Object.entries(this.Editor).filter(([moduleName, moduleClass]) => { return moduleClass.flipper instanceof Flipper; }) @@ -237,12 +254,12 @@ export default class UI extends Module { * Close all Editor's toolbars */ public closeAllToolbars(): void { - const { Toolbox, BlockSettings, InlineToolbar, ConversionToolbar } = this.Editor; + const { Toolbar, BlockSettings, InlineToolbar, ConversionToolbar } = this.Editor; BlockSettings.close(); InlineToolbar.close(); ConversionToolbar.close(); - Toolbox.close(); + Toolbar.toolbox.close(); } /** @@ -356,6 +373,48 @@ export default class UI extends Module { }, { passive: true, }); + + /** + * Start watching 'block-hovered' events that is used by Toolbar for moving + */ + this.watchBlockHoveredEvents(); + } + + /** + * Listen redactor mousemove to emit 'block-hovered' event + */ + private watchBlockHoveredEvents(): void { + /** + * Used to not to emit the same block multiple times to the 'block-hovered' event on every mousemove + */ + let blockHoveredEmitted; + + this.readOnlyMutableListeners.on(this.nodes.redactor, 'mousemove', _.throttle((event: MouseEvent | TouchEvent) => { + const hoveredBlock = (event.target as Element).closest('.ce-block'); + + /** + * Do not trigger 'block-hovered' for cross-block selection + */ + if (this.Editor.BlockSelection.anyBlockSelected) { + return; + } + + if (!hoveredBlock) { + return; + } + + if (blockHoveredEmitted === hoveredBlock) { + return; + } + + blockHoveredEmitted = hoveredBlock; + + this.eventsDispatcher.emit(this.events.blockHovered, { + block: this.Editor.BlockManager.getBlockByChildNode(hoveredBlock), + }); + }, 20), { + passive: true, + }); } /** @@ -483,8 +542,8 @@ export default class UI extends Module { */ this.Editor.BlockSelection.clearSelection(event); - if (this.Editor.Toolbox.opened) { - this.Editor.Toolbox.close(); + if (this.Editor.Toolbar.toolbox.opened) { + this.Editor.Toolbar.toolbox.close(); } else if (this.Editor.BlockSettings.opened) { this.Editor.BlockSettings.close(); } else if (this.Editor.ConversionToolbar.opened) { @@ -548,8 +607,7 @@ export default class UI extends Module { /** * Move toolbar and show plus button because new Block is empty */ - this.Editor.Toolbar.move(); - this.Editor.Toolbar.plusButton.show(); + this.Editor.Toolbar.moveAndOpen(newBlock); } this.Editor.BlockSelection.clearSelection(event); @@ -577,15 +635,31 @@ export default class UI extends Module { if (!clickedInsideOfEditor) { /** - * Clear highlightings and pointer on BlockManager + * Clear highlights and pointer on BlockManager * * Current page might contain several instances * Click between instances MUST clear focus, pointers and close toolbars */ this.Editor.BlockManager.dropPointer(); - this.Editor.InlineToolbar.close(); this.Editor.Toolbar.close(); - this.Editor.ConversionToolbar.close(); + } + + /** + * If Block Settings opened, close them by click on document. + * + * But allow clicking inside Block Settings. + * Also, do not process clicks on the Block Settings Toggler, because it has own click listener + */ + const isClickedInsideBlockSettings = this.Editor.BlockSettings.nodes.wrapper.contains(target); + const isClickedInsideBlockSettingsToggler = this.Editor.Toolbar.nodes.settingsToggler.contains(target); + const doNotProcess = isClickedInsideBlockSettings || isClickedInsideBlockSettingsToggler; + + if (this.Editor.BlockSettings.opened && !doNotProcess) { + this.Editor.BlockSettings.close(); + + const clickedBlock = this.Editor.BlockManager.getBlockByChildNode(target); + + this.Editor.Toolbar.moveAndOpen(clickedBlock); } /** @@ -609,7 +683,7 @@ export default class UI extends Module { let clickedNode = event.target as HTMLElement; /** - * If click was fired is on Editor`s wrapper, try to get clicked node by elementFromPoint method + * If click was fired on Editor`s wrapper, try to get clicked node by elementFromPoint method */ if (clickedNode === this.nodes.redactor) { const clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX; @@ -642,13 +716,9 @@ export default class UI extends Module { /** * Move and open toolbar + * (used for showing Block Settings toggler after opening and closing Inline Toolbar) */ - this.Editor.Toolbar.open(); - - /** - * Hide the Plus Button - */ - this.Editor.Toolbar.plusButton.hide(); + this.Editor.Toolbar.moveAndOpen(); } /** @@ -691,12 +761,21 @@ export default class UI extends Module { return; } + const lastBlock = this.Editor.BlockManager.getBlockByIndex(-1); + const lastBlockBottomCoord = $.offset(lastBlock.holder).bottom; + const clickedCoord = event.pageY; + const isClickedBottom = event.target instanceof Element && event.target.isEqualNode(this.nodes.redactor) && /** * If there is cross block selection started, target will be equal to redactor so we need additional check */ - !BlockSelection.anyBlockSelected; + !BlockSelection.anyBlockSelected && + + /** + * Prevent caret jumping (to last block) when clicking between blocks + */ + lastBlockBottomCoord < clickedCoord; if (isClickedBottom) { stopPropagation(); @@ -717,27 +796,7 @@ export default class UI extends Module { * Set the caret and toolbar to empty Block */ Caret.setToTheLastBlock(); - Toolbar.move(); - } - - /** - * Show the Plus Button if: - * - Block is an default-block (Text) - * - Block is empty - */ - const isDefaultBlock = this.Editor.BlockManager.currentBlock.tool.isDefault; - - if (isDefaultBlock) { - stopPropagation(); - - /** - * Check isEmpty only for paragraphs to prevent unnecessary tree-walking on Tools with many nodes (for ex. Table) - */ - const isEmptyBlock = this.Editor.BlockManager.currentBlock.isEmpty; - - if (isEmptyBlock) { - this.Editor.Toolbar.plusButton.show(); - } + Toolbar.moveAndOpen(BlockManager.lastBlock); } } diff --git a/src/components/modules/toolbar/toolbox.ts b/src/components/ui/toolbox.ts similarity index 59% rename from src/components/modules/toolbar/toolbox.ts rename to src/components/ui/toolbox.ts index 4c9eb1757..2c813caf1 100644 --- a/src/components/modules/toolbar/toolbox.ts +++ b/src/components/ui/toolbox.ts @@ -1,39 +1,77 @@ -import Module from '../../__module'; -import $ from '../../dom'; -import * as _ from '../../utils'; -import Flipper from '../../flipper'; -import { BlockToolAPI } from '../../block'; -import I18n from '../../i18n'; -import { I18nInternalNS } from '../../i18n/namespace-internal'; -import Shortcuts from '../../utils/shortcuts'; -import Tooltip from '../../utils/tooltip'; -import { ModuleConfig } from '../../../types-internal/module-config'; -import EventsDispatcher from '../../utils/events'; -import BlockTool from '../../tools/block'; +import $ from '../dom'; +import * as _ from '../utils'; +import Flipper from '../flipper'; +import { BlockToolAPI } from '../block'; +import I18n from '../i18n'; +import { I18nInternalNS } from '../i18n/namespace-internal'; +import Shortcuts from '../utils/shortcuts'; +import Tooltip from '../utils/tooltip'; +import BlockTool from '../tools/block'; +import ToolsCollection from '../tools/collection'; +import { API } from '../../../types'; +import EventsDispatcher from '../utils/events'; /** - * HTMLElements used for Toolbox UI + * Event that can be triggered by the Toolbox */ -interface ToolboxNodes { - toolbox: HTMLElement; - buttons: HTMLElement[]; +export enum ToolboxEvent { + /** + * When the Toolbox is opened + */ + Opened = 'toolbox-opened', + + /** + * When the Toolbox is closed + */ + Closed = 'toolbox-closed', + + /** + * When the new Block added by Toolbox + */ + BlockAdded = 'toolbox-block-added', } /** - * @class Toolbox - * @classdesc Holder for Tools - * - * @typedef {Toolbox} Toolbox - * @property {boolean} opened - opening state - * @property {object} nodes - Toolbox nodes - * @property {object} CSS - CSS class names + * Toolbox + * This UI element contains list of Block Tools available to be inserted + * It appears after click on the Plus Button * + * @implements {EventsDispatcher} with some events, see {@link ToolboxEvent} */ -export default class Toolbox extends Module { +export default class Toolbox extends EventsDispatcher { + /** + * Returns True if Toolbox is Empty and nothing to show + * + * @returns {boolean} + */ + public get isEmpty(): boolean { + return this.displayedToolsCount === 0; + } + + /** + * Opening state + * + * @type {boolean} + */ + public opened = false; + + /** + * Editor API + */ + private api: API; + + /** + * List of Tools available. Some of them will be shown in the Toolbox + */ + private tools: ToolsCollection; + /** * Current module HTML Elements */ - public nodes = { + private nodes: { + toolbox: HTMLElement; + buttons: HTMLElement[]; + } = { toolbox: null, buttons: [], } @@ -43,35 +81,18 @@ export default class Toolbox extends Module { * * @returns {object.} */ - public get CSS(): { [name: string]: string } { + private static get CSS(): { [name: string]: string } { return { toolbox: 'ce-toolbox', toolboxButton: 'ce-toolbox__button', toolboxButtonActive: 'ce-toolbox__button--active', toolboxOpened: 'ce-toolbox--opened', - openedToolbarHolderModifier: 'codex-editor--toolbox-opened', buttonTooltip: 'ce-toolbox-button-tooltip', buttonShortcut: 'ce-toolbox-button-tooltip__shortcut', }; } - /** - * Returns True if Toolbox is Empty and nothing to show - * - * @returns {boolean} - */ - public get isEmpty(): boolean { - return this.displayedToolsCount === 0; - } - - /** - * Opening state - * - * @type {boolean} - */ - public opened = false; - /** * How many tools displayed in Toolbox * @@ -90,34 +111,53 @@ export default class Toolbox extends Module { * Tooltip utility Instance */ private tooltip: Tooltip; + /** - * @class - * @param {object} moduleConfiguration - Module Configuration - * @param {EditorConfig} moduleConfiguration.config - Editor's config - * @param {EventsDispatcher} moduleConfiguration.eventsDispatcher - Editor's event dispatcher + * Id of listener added used to remove it on destroy() */ - constructor({ config, eventsDispatcher }: ModuleConfig) { - super({ - config, - eventsDispatcher, - }); + private clickListenerId: string = null; + + /** + * Toolbox constructor + * + * @param options - available parameters + * @param options.api - Editor API methods + * @param options.tools - Tools available to check whether some of them should be displayed at the Toolbox or not + */ + constructor({ api, tools }) { + super(); + + this.api = api; + this.tools = tools; + this.tooltip = new Tooltip(); } + /** + * Returns true if the Toolbox has the Flipper activated and the Flipper has selected button + */ + public get flipperHasFocus(): boolean { + return this.flipper && this.flipper.currentItem !== null; + } + /** * Makes the Toolbox */ - public make(): void { - this.nodes.toolbox = $.make('div', this.CSS.toolbox); + public make(): Element { + this.nodes.toolbox = $.make('div', Toolbox.CSS.toolbox); this.addTools(); this.enableFlipper(); + + return this.nodes.toolbox; } /** * Destroy Module */ public destroy(): void { + super.destroy(); + /** * Sometimes (in read-only mode) there is no Flipper */ @@ -126,7 +166,14 @@ export default class Toolbox extends Module { this.flipper = null; } - this.removeAllNodes(); + if (this.nodes && this.nodes.toolbox) { + this.nodes.toolbox.remove(); + this.nodes.toolbox = null; + this.nodes.buttons = []; + } + + this.api.listeners.offById(this.clickListenerId); + this.removeAllShortcuts(); this.tooltip.destroy(); } @@ -149,8 +196,9 @@ export default class Toolbox extends Module { return; } - this.Editor.UI.nodes.wrapper.classList.add(this.CSS.openedToolbarHolderModifier); - this.nodes.toolbox.classList.add(this.CSS.toolboxOpened); + this.emit(ToolboxEvent.Opened); + + this.nodes.toolbox.classList.add(Toolbox.CSS.toolboxOpened); this.opened = true; this.flipper.activate(); @@ -160,8 +208,9 @@ export default class Toolbox extends Module { * Close Toolbox */ public close(): void { - this.nodes.toolbox.classList.remove(this.CSS.toolboxOpened); - this.Editor.UI.nodes.wrapper.classList.remove(this.CSS.openedToolbarHolderModifier); + this.emit(ToolboxEvent.Closed); + + this.nodes.toolbox.classList.remove(Toolbox.CSS.toolboxOpened); this.opened = false; this.flipper.deactivate(); @@ -182,10 +231,8 @@ export default class Toolbox extends Module { * Iterates available tools and appends them to the Toolbox */ private addTools(): void { - const tools = this.Editor.Tools.blockTools; - Array - .from(tools.values()) + .from(this.tools.values()) .forEach((tool) => this.addTool(tool)); } @@ -218,7 +265,7 @@ export default class Toolbox extends Module { // return; // } - const button = $.make('li', [ this.CSS.toolboxButton ]); + const button = $.make('li', [ Toolbox.CSS.toolboxButton ]); button.dataset.tool = tool.name; button.innerHTML = toolToolboxSettings.icon; @@ -231,7 +278,7 @@ export default class Toolbox extends Module { /** * Add click listener */ - this.listeners.on(button, 'click', (event: KeyboardEvent|MouseEvent) => { + this.clickListenerId = this.api.listeners.on(button, 'click', (event: KeyboardEvent|MouseEvent) => { this.toolButtonActivate(event, tool.name); }); @@ -267,7 +314,7 @@ export default class Toolbox extends Module { let shortcut = tool.shortcut; - const tooltip = $.make('div', this.CSS.buttonTooltip); + const tooltip = $.make('div', Toolbox.CSS.buttonTooltip); const hint = document.createTextNode(_.capitalize(name)); tooltip.appendChild(hint); @@ -275,7 +322,7 @@ export default class Toolbox extends Module { if (shortcut) { shortcut = _.beautifyShortcut(shortcut); - tooltip.appendChild($.make('div', this.CSS.buttonShortcut, { + tooltip.appendChild($.make('div', Toolbox.CSS.buttonShortcut, { textContent: shortcut, })); } @@ -292,11 +339,11 @@ export default class Toolbox extends Module { private enableShortcut(toolName: string, shortcut: string): void { Shortcuts.add({ name: shortcut, + on: this.api.ui.nodes.redactor, handler: (event: KeyboardEvent) => { event.preventDefault(); this.insertNewBlock(toolName); }, - on: this.Editor.UI.nodes.redactor, }); } @@ -305,15 +352,13 @@ export default class Toolbox extends Module { * Fired when the Read-Only mode is activated */ private removeAllShortcuts(): void { - const tools = this.Editor.Tools.blockTools; - Array - .from(tools.values()) + .from(this.tools.values()) .forEach((tool) => { const shortcut = tool.shortcut; if (shortcut) { - Shortcuts.remove(this.Editor.UI.nodes.redactor, shortcut); + Shortcuts.remove(this.api.ui.nodes.redactor, shortcut); } }); } @@ -326,7 +371,7 @@ export default class Toolbox extends Module { this.flipper = new Flipper({ items: tools, - focusedItemClass: this.CSS.toolboxButtonActive, + focusedItemClass: Toolbox.CSS.toolboxButtonActive, }); } @@ -337,34 +382,42 @@ export default class Toolbox extends Module { * @param {string} toolName - Tool name */ private insertNewBlock(toolName: string): void { - const { BlockManager, Caret } = this.Editor; - const { currentBlock } = BlockManager; + const currentBlockIndex = this.api.blocks.getCurrentBlockIndex(); + const currentBlock = this.api.blocks.getBlockByIndex(currentBlockIndex); - const newBlock = BlockManager.insert({ - tool: toolName, - replace: currentBlock.isEmpty, - }); + if (!currentBlock) { + return; + } + + /** + * On mobile version, we see the Plus Button even near non-empty blocks, + * so if current block is not empty, add the new block below the current + */ + const index = currentBlock.isEmpty ? currentBlockIndex : currentBlockIndex + 1; + + const newBlock = this.api.blocks.insert( + toolName, + undefined, + undefined, + index, + undefined, + currentBlock.isEmpty + ); /** * Apply callback before inserting html */ newBlock.call(BlockToolAPI.APPEND_CALLBACK); - this.Editor.Caret.setToBlock(newBlock); + this.api.caret.setToBlock(index); - /** If new block doesn't contain inpus, insert new paragraph above */ - if (newBlock.inputs.length === 0) { - if (newBlock === BlockManager.lastBlock) { - BlockManager.insertAtEnd(); - Caret.setToBlock(BlockManager.lastBlock); - } else { - Caret.setToBlock(BlockManager.nextBlock); - } - } + this.emit(ToolboxEvent.BlockAdded, { + block: newBlock, + }); /** * close toolbar when node is changed */ - this.Editor.Toolbar.close(); + this.api.toolbar.close(); } } diff --git a/src/components/utils.ts b/src/components/utils.ts index 90c3c32f9..8b402bbfe 100644 --- a/src/components/utils.ts +++ b/src/components/utils.ts @@ -454,6 +454,68 @@ export function debounce(func: (...args: unknown[]) => void, wait?: number, imme }; } +/** + * Returns a function, that, when invoked, will only be triggered at most once during a given window of time. + * + * @param func - function to throttle + * @param wait - function will be called only once for that period + * @param options - Normally, the throttled function will run as much as it can + * without ever going more than once per `wait` duration; + * but if you'd like to disable the execution on the leading edge, pass + * `{leading: false}`. To disable execution on the trailing edge, ditto. + */ +export function throttle(func, wait, options: {leading?: boolean; trailing?: boolean} = undefined): () => void { + let context, args, result; + let timeout = null; + let previous = 0; + + if (!options) { + options = {}; + } + + const later = function (): void { + previous = options.leading === false ? 0 : Date.now(); + timeout = null; + result = func.apply(context, args); + + if (!timeout) { + context = args = null; + } + }; + + return function (): unknown { + const now = Date.now(); + + if (!previous && options.leading === false) { + previous = now; + } + + const remaining = wait - (now - previous); + + context = this; + + // eslint-disable-next-line prefer-rest-params + args = arguments; + + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + + if (!timeout) { + context = args = null; + } + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + + return result; + }; +} + /** * Copies passed text to the clipboard * diff --git a/src/components/utils/events.ts b/src/components/utils/events.ts index 638122823..3f886fe70 100644 --- a/src/components/utils/events.ts +++ b/src/components/utils/events.ts @@ -19,7 +19,7 @@ export default class EventsDispatcher { * * @type {{}} */ - private subscribers: {[name: string]: Array<(data?: object) => object>} = {}; + private subscribers: {[name: string]: Array<(data?: object) => unknown>} = {}; /** * Subscribe any event on callback @@ -27,7 +27,7 @@ export default class EventsDispatcher { * @param {string} eventName - event name * @param {Function} callback - subscriber */ - public on(eventName: Events, callback: (data: object) => object): void { + public on(eventName: Events, callback: (data: object) => unknown): void { if (!(eventName in this.subscribers)) { this.subscribers[eventName] = []; } @@ -42,12 +42,12 @@ export default class EventsDispatcher { * @param {string} eventName - event name * @param {Function} callback - subscriber */ - public once(eventName: Events, callback: (data: object) => object): void { + public once(eventName: Events, callback: (data: object) => unknown): void { if (!(eventName in this.subscribers)) { this.subscribers[eventName] = []; } - const wrappedCallback = (data: object): object => { + const wrappedCallback = (data: object): unknown => { const result = callback(data); const indexOfHandler = this.subscribers[eventName].indexOf(wrappedCallback); @@ -87,7 +87,7 @@ export default class EventsDispatcher { * @param {string} eventName - event name * @param {Function} callback - event handler */ - public off(eventName: Events, callback: (data: object) => object): void { + public off(eventName: Events, callback: (data: object) => unknown): void { for (let i = 0; i < this.subscribers[eventName].length; i++) { if (this.subscribers[eventName][i] === callback) { delete this.subscribers[eventName][i]; @@ -98,7 +98,7 @@ export default class EventsDispatcher { /** * Destroyer - * clears subsribers list + * clears subscribers list */ public destroy(): void { this.subscribers = null; diff --git a/src/components/utils/tooltip.ts b/src/components/utils/tooltip.ts index a0ace016e..6213bb9a0 100644 --- a/src/components/utils/tooltip.ts +++ b/src/components/utils/tooltip.ts @@ -2,7 +2,8 @@ /** * Use external module CodeX Tooltip */ -import CodeXTooltips, { TooltipContent, TooltipOptions } from 'codex-tooltip'; +import CodeXTooltips from 'codex-tooltip'; +import type { TooltipOptions, TooltipContent } from 'codex-tooltip/types'; /** * Tooltip @@ -28,8 +29,8 @@ export default class Tooltip { * Shows tooltip on element with passed HTML content * * @param {HTMLElement} element - any HTML element in DOM - * @param {TooltipContent} content - tooltip's content - * @param {TooltipOptions} options - showing settings + * @param content - tooltip's content + * @param options - showing settings */ public show(element: HTMLElement, content: TooltipContent, options?: TooltipOptions): void { this.lib.show(element, content, options); @@ -37,17 +38,19 @@ export default class Tooltip { /** * Hides tooltip + * + * @param skipHidingDelay β€” pass true to immediately hide the tooltip */ - public hide(): void { - this.lib.hide(); + public hide(skipHidingDelay = false): void { + this.lib.hide(skipHidingDelay); } /** * Binds 'mouseenter' and 'mouseleave' events that shows/hides the Tooltip * * @param {HTMLElement} element - any HTML element in DOM - * @param {TooltipContent} content - tooltip's content - * @param {TooltipOptions} options - showing settings + * @param content - tooltip's content + * @param options - showing settings */ public onHover(element: HTMLElement, content: TooltipContent, options?: TooltipOptions): void { this.lib.onHover(element, content, options); diff --git a/src/styles/export.css b/src/styles/export.css index 582e900bf..977b2e44a 100644 --- a/src/styles/export.css +++ b/src/styles/export.css @@ -2,7 +2,11 @@ * Block Tool wrapper */ .cdx-block { - padding: 0.4em 0; + padding: var(--block-padding-vertical) 0; + + &::-webkit-input-placeholder { + line-height:normal!important; + } } /** diff --git a/src/styles/settings.css b/src/styles/settings.css index e7171c246..c6693e852 100644 --- a/src/styles/settings.css +++ b/src/styles/settings.css @@ -7,7 +7,7 @@ @media (--mobile){ bottom: 40px; - right: -11px; + right: auto; top: auto; } diff --git a/src/styles/toolbar.css b/src/styles/toolbar.css index 955ca7d73..ceceacb79 100644 --- a/src/styles/toolbar.css +++ b/src/styles/toolbar.css @@ -3,8 +3,6 @@ left: 0; right: 0; top: 0; - /*opacity: 0;*/ - /*visibility: hidden;*/ transition: opacity 100ms ease; will-change: opacity, transform; display: none; @@ -32,15 +30,12 @@ display: flex; align-content: center; margin: 0; - max-width: calc(100% - 35px); + max-width: 100%; } } &__plus { @apply --toolbox-button; - - position: absolute; - left: calc(var(--toolbox-buttons-size) * -1); flex-shrink: 0; &-shortcut { @@ -60,25 +55,19 @@ } } - &__plus, - .ce-toolbox { - top: 50%; - transform: translateY(-50%); - } - /** * Block actions Zone * ------------------------- */ &__actions { position: absolute; - right: -30px; - top: 5px; + right: 100%; opacity: 0; + display: flex; @media (--mobile){ position: absolute; - right: -28px; + right: auto; top: 50%; transform: translateY(-50%); display: flex; @@ -95,26 +84,19 @@ } &__settings-btn { - display: flex; - align-items: center; - justify-content: center; + @apply --toolbox-button; width: 18px; - height: 18px; - color: var(--grayText); + margin: 0 5px; + cursor: pointer; - background: var(--bg-light); user-select: none; - - &:hover { - color: var(--color-dark); - } - - @media (--mobile){ - background: transparent; - } } } +.codex-editor--toolbox-opened .ce-toolbar__actions { + display: none; +} + /** * Styles for Narrow mode */ diff --git a/src/styles/toolbox.css b/src/styles/toolbox.css index ab4c11915..c02c59379 100644 --- a/src/styles/toolbox.css +++ b/src/styles/toolbox.css @@ -21,6 +21,7 @@ &__button { @apply --toolbox-button; flex-shrink: 0; + margin-left: 5px; } } diff --git a/src/styles/variables.css b/src/styles/variables.css index 42e749cbb..d8528ea6e 100644 --- a/src/styles/variables.css +++ b/src/styles/variables.css @@ -21,7 +21,7 @@ /** * Gray icons hover */ - --color-dark: #1D202B; + --color-dark: #1D202B; /** * Blue icons @@ -52,7 +52,14 @@ /** * Toolbar Plus Button and Toolbox buttons height and width */ - --toolbox-buttons-size: 34px; + --toolbox-buttons-size: 26px; + --toolbox-buttons-size--mobile: 36px; + + /** + * The main `.cdx-block` wrapper has such vertical paddings + * And the Block Actions toggler too + */ + --block-padding-vertical: 0.4em; /** * Confirm deletion bg @@ -62,14 +69,14 @@ --overlay-pane: { position: absolute; background-color: #FFFFFF; - border: 1px solid #EAEAEA; + border: 1px solid #E8E8EB; box-shadow: 0 3px 15px -3px rgba(13,20,33,0.13); - border-radius: 4px; + border-radius: 6px; z-index: 2; @media (--mobile){ - box-shadow: 0 13px 7px -5px rgba(26, 38, 49, 0.09),6px 15px 34px -6px rgba(33, 48, 73, 0.29); - border-bottom-color: #d5d7db; + box-shadow: 0 8px 6px -6px rgb(33 48 73 / 19%); + border-bottom-color: #c7c7c7; } &--left-oriented { @@ -92,17 +99,23 @@ * Styles for Toolbox Buttons and Plus Button */ --toolbox-button: { - color: var(--grayText); + color: var(--color-dark); cursor: pointer; width: var(--toolbox-buttons-size); height: var(--toolbox-buttons-size); + border-radius: 3px; display: inline-flex; justify-content: center; align-items: center; + @media (--mobile){ + width: var(--toolbox-buttons-size--mobile); + height: var(--toolbox-buttons-size--mobile); + } + &:hover, &--active { - color: var(--color-active-icon); + background-color: var(--bg-light); } &--active{ @@ -152,3 +165,4 @@ } }; } + diff --git a/src/types-internal/editor-modules.d.ts b/src/types-internal/editor-modules.d.ts index 95a255cbe..5acfbee49 100644 --- a/src/types-internal/editor-modules.d.ts +++ b/src/types-internal/editor-modules.d.ts @@ -2,7 +2,6 @@ import UI from '../components/modules/ui'; import BlockEvents from '../components/modules/blockEvents'; import Toolbar from '../components/modules/toolbar/index'; import InlineToolbar from '../components/modules/toolbar/inline'; -import Toolbox from '../components/modules/toolbar/toolbox'; import BlockSettings from '../components/modules/toolbar/blockSettings'; import Paste from '../components/modules/paste'; import DragNDrop from '../components/modules/dragNDrop'; @@ -31,6 +30,7 @@ import TooltipAPI from '../components/modules/api/tooltip'; import ReadOnly from '../components/modules/readonly'; import ReadOnlyAPI from '../components/modules/api/readonly'; import I18nAPI from '../components/modules/api/i18n'; +import UiAPI from '../components/modules/api/ui'; import ModificationsObserver from '../components/modules/modificationsObserver'; export interface EditorModules { @@ -40,7 +40,6 @@ export interface EditorModules { RectangleSelection: RectangleSelection; Toolbar: Toolbar; InlineToolbar: InlineToolbar; - Toolbox: Toolbox; BlockSettings: BlockSettings; ConversionToolbar: ConversionToolbar; Paste: Paste; @@ -67,5 +66,6 @@ export interface EditorModules { ReadOnly: ReadOnly; ReadOnlyAPI: ReadOnlyAPI; I18nAPI: I18nAPI; + UiAPI: UiAPI; ModificationsObserver: ModificationsObserver; } diff --git a/test/cypress/tests/block-ids.spec.ts b/test/cypress/tests/block-ids.spec.ts index 4faccaeca..3fc1e2090 100644 --- a/test/cypress/tests/block-ids.spec.ts +++ b/test/cypress/tests/block-ids.spec.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import Header from '../../../example/tools/header'; +import Header from '@editorjs/header'; import { nanoid } from 'nanoid'; describe.only('Block ids', () => { diff --git a/test/cypress/tests/copy-paste.spec.ts b/test/cypress/tests/copy-paste.spec.ts index 5ec8e703a..5a337832b 100644 --- a/test/cypress/tests/copy-paste.spec.ts +++ b/test/cypress/tests/copy-paste.spec.ts @@ -1,5 +1,5 @@ -import Header from '../../../example/tools/header'; -import Image from '../../../example/tools/simple-image'; +import Header from '@editorjs/header'; +import Image from '@editorjs/simple-image'; import * as _ from '../../../src/components/utils'; describe('Copy pasting from Editor', () => { diff --git a/test/cypress/tests/modules/Tools.spec.ts b/test/cypress/tests/modules/Tools.spec.ts index 208916b59..82bdf5ae3 100644 --- a/test/cypress/tests/modules/Tools.spec.ts +++ b/test/cypress/tests/modules/Tools.spec.ts @@ -96,7 +96,10 @@ describe('Tools module', () => { await module.prepare(); - expect(WithSuccessfulPrepare.prepare).to.be.calledWithExactly({ toolName: 'withSuccessfulPrepare', config }); + expect(WithSuccessfulPrepare.prepare).to.be.calledWithExactly({ + toolName: 'withSuccessfulPrepare', + config, + }); }); }); diff --git a/test/cypress/tests/onchange.spec.ts b/test/cypress/tests/onchange.spec.ts index ba41574fa..8d410b96c 100644 --- a/test/cypress/tests/onchange.spec.ts +++ b/test/cypress/tests/onchange.spec.ts @@ -1,4 +1,4 @@ -import Header from '../../../example/tools/header'; +import Header from '@editorjs/header'; import { BlockMutationType } from '../../../types/events/block/mutation-type'; /** diff --git a/types/api/blocks.d.ts b/types/api/blocks.d.ts index f52931589..bd7ca41d9 100644 --- a/types/api/blocks.d.ts +++ b/types/api/blocks.d.ts @@ -66,6 +66,11 @@ export interface Blocks { */ getCurrentBlockIndex(): number; + /** + * Returns the index of Block by id; + */ + getBlockIndex(blockId: string): number; + /** * Mark Block as stretched * @param {number} index - Block to mark @@ -89,13 +94,14 @@ export interface Blocks { insertNewBlock(): void; /** - * Insert new Block + * Insert new Block and return inserted Block API * * @param {string} type β€” Tool name * @param {BlockToolData} data β€” Tool data to insert * @param {ToolConfig} config β€” Tool config * @param {number?} index β€” index where to insert new Block * @param {boolean?} needToFocus - flag to focus inserted Block + * @param {boolean?} replace - should the existed Block on that index be replaced or not */ insert( type?: string, @@ -103,7 +109,8 @@ export interface Blocks { config?: ToolConfig, index?: number, needToFocus?: boolean, - ): void; + replace?: boolean, + ): BlockAPI; /** diff --git a/types/api/index.d.ts b/types/api/index.d.ts index b1bfe6206..9df8461b7 100644 --- a/types/api/index.d.ts +++ b/types/api/index.d.ts @@ -13,3 +13,4 @@ export * from './inline-toolbar'; export * from './block'; export * from './readonly'; export * from './i18n'; +export * from './ui'; diff --git a/types/api/listeners.d.ts b/types/api/listeners.d.ts index a6c8d5e38..10a539e1d 100644 --- a/types/api/listeners.d.ts +++ b/types/api/listeners.d.ts @@ -3,14 +3,14 @@ */ export interface Listeners { /** - * Subscribe to event dispatched on passed element + * Subscribe to event dispatched on passed element. Returns listener id. * * @param {Element} element * @param {string} eventType * @param {(event: Event) => void}handler * @param {boolean} useCapture */ - on(element: Element, eventType: string, handler: (event?: Event) => void, useCapture?: boolean): void; + on(element: Element, eventType: string, handler: (event?: Event) => void, useCapture?: boolean): string; /** * Unsubscribe from event dispatched on passed element @@ -21,4 +21,12 @@ export interface Listeners { * @param {boolean} useCapture */ off(element: Element, eventType: string, handler: (event?: Event) => void, useCapture?: boolean): void; + + + /** + * Unsubscribe from event dispatched by the listener id + * + * @param id - id of the listener to remove + */ + offById(id: string): void; } diff --git a/types/api/ui.d.ts b/types/api/ui.d.ts new file mode 100644 index 000000000..165865ad4 --- /dev/null +++ b/types/api/ui.d.ts @@ -0,0 +1,24 @@ +/** + * Describes API module allowing to access some Editor UI elements and methods + */ +export interface Ui { + /** + * Allows accessing some Editor UI elements + */ + nodes: UiNodes, +} + +/** + * Allows accessing some Editor UI elements + */ +export interface UiNodes { + /** + * Top-level editor instance wrapper + */ + wrapper: HTMLElement, + + /** + * Element that holds all the Blocks + */ + redactor: HTMLElement, +} diff --git a/types/index.d.ts b/types/index.d.ts index 07fe5e0d7..a7be95d22 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -27,6 +27,7 @@ import { Toolbar, Tooltip, I18n, + Ui, } from './api'; import { OutputData } from './data-formats'; @@ -92,6 +93,7 @@ export interface API { tooltip: Tooltip; i18n: I18n; readOnly: ReadOnly; + ui: Ui; } /** diff --git a/yarn.lock b/yarn.lock index cbaba1524..5839f153a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11,14 +11,12 @@ "@babel/code-frame@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== dependencies: "@babel/highlight" "^7.12.13" "@babel/compat-data@^7.13.8": version "7.13.11" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.11.tgz#9c8fe523c206979c9a81b1e12fe50c1254f1aa35" - integrity sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg== "@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": version "7.9.0" @@ -31,7 +29,6 @@ "@babel/core@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" - integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.4.4" @@ -72,7 +69,6 @@ "@babel/core@^7.7.5": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" - integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== dependencies: "@babel/code-frame" "^7.12.13" "@babel/generator" "^7.13.9" @@ -94,7 +90,6 @@ "@babel/generator@^7.13.0", "@babel/generator@^7.13.9", "@babel/generator@^7.4.4": version "7.13.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== dependencies: "@babel/types" "^7.13.0" jsesc "^2.5.1" @@ -112,7 +107,6 @@ "@babel/helper-annotate-as-pure@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== dependencies: "@babel/types" "^7.12.13" @@ -125,7 +119,6 @@ "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" - integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== dependencies: "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" @@ -140,7 +133,6 @@ "@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.8": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" - integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== dependencies: "@babel/compat-data" "^7.13.8" "@babel/helper-validator-option" "^7.12.17" @@ -160,7 +152,6 @@ "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.3.0": version "7.13.11" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" - integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== dependencies: "@babel/helper-function-name" "^7.12.13" "@babel/helper-member-expression-to-functions" "^7.13.0" @@ -171,7 +162,6 @@ "@babel/helper-create-regexp-features-plugin@^7.12.13": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" - integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" @@ -195,7 +185,6 @@ "@babel/helper-explode-assignable-expression@^7.12.13": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" - integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== dependencies: "@babel/types" "^7.13.0" @@ -209,7 +198,6 @@ "@babel/helper-function-name@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== dependencies: "@babel/helper-get-function-arity" "^7.12.13" "@babel/template" "^7.12.13" @@ -226,7 +214,6 @@ "@babel/helper-get-function-arity@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== dependencies: "@babel/types" "^7.12.13" @@ -239,7 +226,6 @@ "@babel/helper-hoist-variables@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" - integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g== dependencies: "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" @@ -253,7 +239,6 @@ "@babel/helper-member-expression-to-functions@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" - integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== dependencies: "@babel/types" "^7.13.0" @@ -266,7 +251,6 @@ "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== dependencies: "@babel/types" "^7.12.13" @@ -279,7 +263,6 @@ "@babel/helper-module-transforms@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" - integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== dependencies: "@babel/helper-module-imports" "^7.12.13" "@babel/helper-replace-supers" "^7.13.0" @@ -306,7 +289,6 @@ "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== dependencies: "@babel/types" "^7.12.13" @@ -323,7 +305,6 @@ "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== "@babel/helper-regex@^7.8.3": version "7.8.3" @@ -334,7 +315,6 @@ "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" - integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" "@babel/helper-wrap-function" "^7.13.0" @@ -353,7 +333,6 @@ "@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" - integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== dependencies: "@babel/helper-member-expression-to-functions" "^7.13.0" "@babel/helper-optimise-call-expression" "^7.12.13" @@ -372,7 +351,6 @@ "@babel/helper-simple-access@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" - integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== dependencies: "@babel/types" "^7.12.13" @@ -386,14 +364,12 @@ "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== dependencies: "@babel/types" "^7.12.1" "@babel/helper-split-export-declaration@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== dependencies: "@babel/types" "^7.12.13" @@ -406,7 +382,6 @@ "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== "@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": version "7.9.5" @@ -415,12 +390,10 @@ "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== "@babel/helper-wrap-function@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" - integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== dependencies: "@babel/helper-function-name" "^7.12.13" "@babel/template" "^7.12.13" @@ -439,7 +412,6 @@ "@babel/helpers@^7.13.10", "@babel/helpers@^7.4.4": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" - integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== dependencies: "@babel/template" "^7.12.13" "@babel/traverse" "^7.13.0" @@ -456,7 +428,6 @@ "@babel/highlight@^7.12.13": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== dependencies: "@babel/helper-validator-identifier" "^7.12.11" chalk "^2.0.0" @@ -473,7 +444,6 @@ "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10", "@babel/parser@^7.4.5": version "7.13.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88" - integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q== "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": version "7.9.4" @@ -482,7 +452,6 @@ "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" - integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-remap-async-to-generator" "^7.13.0" @@ -499,7 +468,6 @@ "@babel/plugin-proposal-class-properties@7.3.0": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz#272636bc0fa19a0bc46e601ec78136a173ea36cd" - integrity sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg== dependencies: "@babel/helper-create-class-features-plugin" "^7.3.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -514,7 +482,6 @@ "@babel/plugin-proposal-json-strings@^7.2.0": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b" - integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -543,7 +510,6 @@ "@babel/plugin-proposal-object-rest-spread@7.3.2": version "7.3.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" - integrity sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" @@ -551,7 +517,6 @@ "@babel/plugin-proposal-object-rest-spread@^7.4.4": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" - integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== dependencies: "@babel/compat-data" "^7.13.8" "@babel/helper-compilation-targets" "^7.13.8" @@ -570,7 +535,6 @@ "@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107" - integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" @@ -617,7 +581,6 @@ "@babel/plugin-syntax-jsx@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" - integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -660,14 +623,12 @@ "@babel/plugin-syntax-typescript@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" - integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-arrow-functions@^7.2.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" - integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -680,7 +641,6 @@ "@babel/plugin-transform-async-to-generator@^7.4.4": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" - integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== dependencies: "@babel/helper-module-imports" "^7.12.13" "@babel/helper-plugin-utils" "^7.13.0" @@ -697,7 +657,6 @@ "@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -710,7 +669,6 @@ "@babel/plugin-transform-block-scoping@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -724,7 +682,6 @@ "@babel/plugin-transform-classes@^7.4.4": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" - integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" "@babel/helper-function-name" "^7.12.13" @@ -750,7 +707,6 @@ "@babel/plugin-transform-computed-properties@^7.2.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" - integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -763,7 +719,6 @@ "@babel/plugin-transform-destructuring@^7.4.4": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" - integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -783,7 +738,6 @@ "@babel/plugin-transform-duplicate-keys@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" - integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -796,7 +750,6 @@ "@babel/plugin-transform-exponentiation-operator@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" - integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" @@ -811,7 +764,6 @@ "@babel/plugin-transform-for-of@^7.4.4": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" - integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -824,7 +776,6 @@ "@babel/plugin-transform-function-name@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== dependencies: "@babel/helper-function-name" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" @@ -839,7 +790,6 @@ "@babel/plugin-transform-literals@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -852,7 +802,6 @@ "@babel/plugin-transform-member-expression-literals@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -865,7 +814,6 @@ "@babel/plugin-transform-modules-amd@^7.2.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" - integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== dependencies: "@babel/helper-module-transforms" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" @@ -882,7 +830,6 @@ "@babel/plugin-transform-modules-commonjs@^7.4.4": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== dependencies: "@babel/helper-module-transforms" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" @@ -901,7 +848,6 @@ "@babel/plugin-transform-modules-systemjs@^7.4.4": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" - integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== dependencies: "@babel/helper-hoist-variables" "^7.13.0" "@babel/helper-module-transforms" "^7.13.0" @@ -921,7 +867,6 @@ "@babel/plugin-transform-modules-umd@^7.2.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" - integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== dependencies: "@babel/helper-module-transforms" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" @@ -936,7 +881,6 @@ "@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" - integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.13" @@ -949,7 +893,6 @@ "@babel/plugin-transform-new-target@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" - integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -962,7 +905,6 @@ "@babel/plugin-transform-object-super@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-replace-supers" "^7.12.13" @@ -977,7 +919,6 @@ "@babel/plugin-transform-parameters@^7.13.0", "@babel/plugin-transform-parameters@^7.4.4": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" - integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -991,7 +932,6 @@ "@babel/plugin-transform-property-literals@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -1004,28 +944,24 @@ "@babel/plugin-transform-react-display-name@^7.0.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" - integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-react-jsx-self@^7.0.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" - integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-react-jsx-source@^7.0.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz#051d76126bee5c9a6aa3ba37be2f6c1698856bcb" - integrity sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-react-jsx@^7.0.0": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" - integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" "@babel/helper-module-imports" "^7.12.13" @@ -1036,7 +972,6 @@ "@babel/plugin-transform-regenerator@^7.4.5": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" - integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== dependencies: regenerator-transform "^0.14.2" @@ -1049,7 +984,6 @@ "@babel/plugin-transform-reserved-words@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" - integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -1062,7 +996,6 @@ "@babel/plugin-transform-runtime@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" - integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -1081,7 +1014,6 @@ "@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -1094,7 +1026,6 @@ "@babel/plugin-transform-spread@^7.2.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" - integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" @@ -1108,7 +1039,6 @@ "@babel/plugin-transform-sticky-regex@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" - integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -1122,7 +1052,6 @@ "@babel/plugin-transform-template-literals@^7.4.4": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" - integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -1136,7 +1065,6 @@ "@babel/plugin-transform-typeof-symbol@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" - integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== dependencies: "@babel/helper-plugin-utils" "^7.12.13" @@ -1149,7 +1077,6 @@ "@babel/plugin-transform-typescript@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" - integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" @@ -1158,7 +1085,6 @@ "@babel/plugin-transform-unicode-regex@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" - integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" @@ -1180,7 +1106,6 @@ "@babel/preset-env@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" - integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -1309,7 +1234,6 @@ "@babel/preset-react@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" - integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-react-display-name" "^7.0.0" @@ -1320,7 +1244,6 @@ "@babel/preset-typescript@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" - integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-validator-option" "^7.12.17" @@ -1339,7 +1262,6 @@ "@babel/runtime@7.3.1": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" - integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== dependencies: regenerator-runtime "^0.12.0" @@ -1352,7 +1274,6 @@ "@babel/template@^7.12.13", "@babel/template@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== dependencies: "@babel/code-frame" "^7.12.13" "@babel/parser" "^7.12.13" @@ -1369,7 +1290,6 @@ "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.5": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== dependencies: "@babel/code-frame" "^7.12.13" "@babel/generator" "^7.13.0" @@ -1398,7 +1318,6 @@ "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" @@ -1423,7 +1342,6 @@ "@cypress/browserify-preprocessor@3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.1.tgz#ab86335b0c061d11f5ad7df03f06b1877b836f71" - integrity sha512-sErmFSEr5287bLMRl0POGnyFtJCs/lSk5yxrUIJUIHZ8eDvtTEr0V93xRgLjJVG54gJU4MbpHy1mRPA9VZbtQA== dependencies: "@babel/core" "7.4.5" "@babel/plugin-proposal-class-properties" "7.3.0" @@ -1447,7 +1365,6 @@ "@cypress/code-coverage@^3.9.2": version "3.9.2" resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.9.2.tgz#582cdb3a7858b3ecf294933b043d0bc236ce0bd9" - integrity sha512-YnzkRBxdsY/Ek/68nr+MowqW59UJsd28j10mFOerW/wrSkuxGrWvOldMs8Y4tU70L4fgd4wDPqGGMer3+UzbwA== dependencies: "@cypress/browserify-preprocessor" "3.0.1" debug "4.3.1" @@ -1460,7 +1377,6 @@ "@cypress/listr-verbose-renderer@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" - integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= dependencies: chalk "^1.1.3" cli-cursor "^1.0.2" @@ -1470,7 +1386,6 @@ "@cypress/request@^2.88.5": version "2.88.5" resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7" - integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1496,7 +1411,6 @@ "@cypress/webpack-preprocessor@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.6.0.tgz#9648ae22d2e52f17a604e2a493af27a9c96568bd" - integrity sha512-kSelTDe6gs3Skp4vPP2vfTvAl+Ua+9rR/AMTir7bgJihDvzFESqnjWtF6N1TrPo+vCFVGx0VUA6JUvDkhvpwhA== dependencies: bluebird "^3.7.1" debug "4.3.2" @@ -1505,15 +1419,21 @@ "@cypress/xvfb@^1.2.4": version "1.2.4" resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" - integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== dependencies: debug "^3.1.0" lodash.once "^4.1.1" +"@editorjs/header@^2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@editorjs/header/-/header-2.6.1.tgz#454a46e4dbb32ae3aa1db4d22b0ddf2cc36c3134" + +"@editorjs/simple-image@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@editorjs/simple-image/-/simple-image-1.4.1.tgz#16a847e0f21041dfac0af8235d19b8a8a756c493" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" find-up "^4.1.0" @@ -1524,7 +1444,6 @@ "@istanbuljs/schema@^0.1.2": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@nodelib/fs.scandir@2.1.3": version "2.1.3" @@ -1547,7 +1466,6 @@ "@samverschueren/stream-to-observable@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" - integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== dependencies: any-observable "^0.3.0" @@ -1591,12 +1509,10 @@ "@types/node@12.12.50": version "12.12.50" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.50.tgz#e9b2e85fafc15f2a8aa8fdd41091b983da5fd6ee" - integrity sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w== "@types/node@^14.14.35": version "14.14.35" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" - integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1613,12 +1529,10 @@ "@types/sinonjs__fake-timers@^6.0.1": version "6.0.2" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" - integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" - integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== "@types/source-list-map@*": version "0.1.2" @@ -1703,7 +1617,6 @@ "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== "@webassemblyjs/ast@1.9.0": version "1.9.0" @@ -1843,7 +1756,6 @@ JSONStream@^1.0.3: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -1855,7 +1767,6 @@ acorn-jsx@^5.2.0: acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== dependencies: acorn "^7.0.0" acorn-walk "^7.0.0" @@ -1864,7 +1775,6 @@ acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: acorn-walk@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn@^6.4.1: version "6.4.1" @@ -1873,7 +1783,6 @@ acorn@^6.4.1: acorn@^7.0.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^7.1.1: version "7.1.1" @@ -1915,7 +1824,6 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0: ajv@^6.12.3: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -1929,12 +1837,10 @@ alphanum-sort@^1.0.0: ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1: version "4.3.1" @@ -1945,12 +1851,10 @@ ansi-escapes@^4.2.1: ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^4.1.0: version "4.1.0" @@ -1963,7 +1867,6 @@ ansi-regex@^5.0.0: ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" @@ -1974,7 +1877,6 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: ansi-styles@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" @@ -1988,7 +1890,6 @@ ansi-styles@^4.1.0: any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== anymatch@^2.0.0: version "2.0.0" @@ -2000,7 +1901,6 @@ anymatch@^2.0.0: anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -2008,7 +1908,6 @@ anymatch@~3.1.1: append-transform@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== dependencies: default-require-extensions "^3.0.0" @@ -2019,12 +1918,10 @@ aproba@^1.1.1: arch@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= argparse@^1.0.7: version "1.0.10" @@ -2035,7 +1932,6 @@ argparse@^1.0.7: argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== arr-diff@^4.0.0: version "4.0.0" @@ -2087,14 +1983,12 @@ asn1.js@^4.0.0: asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assert@^1.1.1, assert@^1.4.0: version "1.5.0" @@ -2128,17 +2022,14 @@ async@^2.4.1: async@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== atob@^2.1.2: version "2.1.2" @@ -2159,12 +2050,10 @@ autoprefixer@^9.6.1, autoprefixer@^9.7.6: aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: version "1.10.1" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== babel-loader@^8.1.0: version "8.1.0" @@ -2195,7 +2084,6 @@ babel-plugin-dynamic-import-node@^2.3.0, babel-plugin-dynamic-import-node@^2.3.3 babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" @@ -2206,7 +2094,6 @@ babel-plugin-istanbul@^6.0.0: babelify@10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5" - integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== bail@^1.0.0: version "1.0.5" @@ -2223,7 +2110,6 @@ base64-js@^1.0.2: base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" @@ -2240,7 +2126,6 @@ base@^0.11.1: bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" @@ -2255,7 +2140,6 @@ binary-extensions@^1.0.0: binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bindings@^1.5.0: version "1.5.0" @@ -2266,12 +2150,10 @@ bindings@^1.5.0: blob-util@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" - integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== bluebird@3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" - integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== bluebird@^3.5.5, bluebird@^3.7.1, bluebird@^3.7.2: version "3.7.2" @@ -2280,7 +2162,6 @@ bluebird@^3.5.5, bluebird@^3.7.1, bluebird@^3.7.2: bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" @@ -2317,12 +2198,10 @@ braces@^3.0.1, braces@~3.0.2: brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browser-pack@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" - integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== dependencies: JSONStream "^1.0.3" combine-source-map "~0.8.0" @@ -2334,21 +2213,18 @@ browser-pack@^6.0.1: browser-resolve@^1.11.0: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" browser-resolve@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b" - integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== dependencies: resolve "^1.17.0" browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" @@ -2406,7 +2282,6 @@ browserify-zlib@^0.2.0, browserify-zlib@~0.2.0: browserify@16.2.3: version "16.2.3" resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.3.tgz#7ee6e654ba4f92bce6ab3599c3485b1cc7a0ad0b" - integrity sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ== dependencies: JSONStream "^1.0.3" assert "^1.4.0" @@ -2460,7 +2335,6 @@ browserify@16.2.3: browserify@^16.1.0: version "16.5.2" resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.5.2.tgz#d926835e9280fa5fd57f5bc301f2ef24a972ddfe" - integrity sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g== dependencies: JSONStream "^1.0.3" assert "^1.4.0" @@ -2523,7 +2397,6 @@ browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.6.4, browserslist@^4. browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.0: version "4.16.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== dependencies: caniuse-lite "^1.0.30001181" colorette "^1.2.1" @@ -2534,7 +2407,6 @@ browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.0: buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= buffer-from@^1.0.0: version "1.1.1" @@ -2555,7 +2427,6 @@ buffer@^4.3.0: buffer@^5.0.2: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" @@ -2563,7 +2434,6 @@ buffer@^5.0.2: buffer@~5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" - integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -2636,17 +2506,14 @@ cache-base@^1.0.1: cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" - integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== cachedir@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" - integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== caching-transform@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== dependencies: hasha "^5.0.0" make-dir "^3.0.0" @@ -2688,7 +2555,6 @@ camelcase@^5.0.0, camelcase@^5.3.1: camelcase@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-api@^3.0.0: version "3.0.0" @@ -2706,12 +2572,10 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001039, can caniuse-lite@^1.0.30001181: version "1.0.30001202" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz#4cb3bd5e8a808e8cd89e4e66c549989bc8137201" - integrity sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= ccount@^1.0.0: version "1.0.5" @@ -2728,7 +2592,6 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4. chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -2753,7 +2616,6 @@ chalk@^4.0.0: chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -2781,7 +2643,6 @@ chardet@^0.7.0: check-more-types@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" - integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= cheerio@^0.19.0: version "0.19.0" @@ -2796,7 +2657,6 @@ cheerio@^0.19.0: chokidar@3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -2839,7 +2699,6 @@ chrome-trace-event@^1.0.2: ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2864,14 +2723,12 @@ clean-stack@^2.0.0: cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= dependencies: restore-cursor "^1.0.1" cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" @@ -2884,7 +2741,6 @@ cli-cursor@^3.1.0: cli-table3@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== dependencies: object-assign "^4.1.0" string-width "^4.2.0" @@ -2894,7 +2750,6 @@ cli-table3@~0.6.0: cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= dependencies: slice-ansi "0.0.4" string-width "^1.0.1" @@ -2914,7 +2769,6 @@ cliui@^5.0.0: cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" @@ -2923,7 +2777,6 @@ cliui@^6.0.0: cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" @@ -2950,21 +2803,18 @@ coa@^2.0.2: code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= codex-notifier@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/codex-notifier/-/codex-notifier-1.1.2.tgz#a733079185f4c927fa296f1d71eb8753fe080895" -codex-tooltip@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/codex-tooltip/-/codex-tooltip-1.0.2.tgz#81a9d3e2937658c6e5312106b47b9f094ff7be63" - integrity sha512-oC+Bu5X/zyhbPydgMSLWKoM/+vkJMqaLWu3Dt/jZgXS3MWK23INwC5DMBrVXZSufAFk0i0SUni38k9rLMyZn/w== +codex-tooltip@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/codex-tooltip/-/codex-tooltip-1.0.4.tgz#bb8c6e0fe7accc68ce79cdcb7c71bf7b4bf1317a" coffeeify@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/coffeeify/-/coffeeify-3.0.1.tgz#5e2753000c50bd24c693115f33864248dd11136c" - integrity sha512-Qjnr7UX6ldK1PHV7wCnv7AuCd4q19KTUtwJnu/6JRJB4rfm12zvcXtKdacUoePOKr1I4ka/ydKiwWpNAdsQb0g== dependencies: convert-source-map "^1.3.0" through2 "^2.0.0" @@ -2972,7 +2822,6 @@ coffeeify@3.0.1: coffeescript@1.12.7: version "1.12.7" resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz#e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27" - integrity sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA== collapse-white-space@^1.0.2: version "1.0.6" @@ -3022,17 +2871,14 @@ color@^3.0.0: colorette@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== colors@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== combine-source-map@^0.8.0, combine-source-map@~0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" - integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= dependencies: convert-source-map "~1.1.0" inline-source-map "~0.6.0" @@ -3042,7 +2888,6 @@ combine-source-map@^0.8.0, combine-source-map@~0.8.0: combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -3053,7 +2898,6 @@ commander@^2.12.1, commander@^2.20.0, commander@^2.8.1: commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== comment-parser@^0.7.2: version "0.7.2" @@ -3062,7 +2906,6 @@ comment-parser@^0.7.2: common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== commondir@^1.0.1: version "1.0.1" @@ -3106,7 +2949,6 @@ convert-source-map@^1.1.0, convert-source-map@^1.3.0, convert-source-map@^1.7.0: convert-source-map@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" - integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= copy-concurrently@^1.0.0: version "1.0.5" @@ -3126,7 +2968,6 @@ copy-descriptor@^0.1.0: core-js-compat@^3.1.1: version "3.9.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455" - integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA== dependencies: browserslist "^4.16.3" semver "7.0.0" @@ -3210,7 +3051,6 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: cross-spawn@^7.0.0: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -3411,14 +3251,12 @@ cyclist@^1.0.1: cypress-intellij-reporter@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/cypress-intellij-reporter/-/cypress-intellij-reporter-0.0.6.tgz#5c396b6fe0a6fcef3b380ec6e62b9c229d62781c" - integrity sha512-KDxeWKKAAGekhg1xmGToSsHDWgogM1hUYakAL4yjKQr9gSI2iyRxcrKlq1/jG4omCbUEY+AZGiiwyKOscY9+Gg== dependencies: mocha latest cypress@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/cypress/-/cypress-6.8.0.tgz#8338f39212a8f71e91ff8c017a1b6e22d823d8c1" - integrity sha512-W2e9Oqi7DmF48QtOD0LfsOLVq6ef2hcXZvJXI/E3PgFNmZXEVwBefhAxVCW9yTPortjYA2XkM20KyC4HRkOm9w== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" @@ -3464,24 +3302,20 @@ cypress@^6.8.0: dash-ast@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" - integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" date-fns@^1.27.2: version "1.30.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== dayjs@^1.9.3: version "1.10.4" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" - integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" @@ -3492,14 +3326,12 @@ debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: debug@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" debug@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" @@ -3512,7 +3344,6 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" @@ -3530,7 +3361,6 @@ decamelize@^1.1.0, decamelize@^1.2.0: decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== decode-uri-component@^0.2.0: version "0.2.0" @@ -3543,7 +3373,6 @@ deep-is@~0.1.3: default-require-extensions@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" - integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== dependencies: strip-bom "^4.0.0" @@ -3575,17 +3404,14 @@ define-property@^2.0.2: defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= deps-sort@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.1.tgz#9dfdc876d2bcec3386b6829ac52162cda9fa208d" - integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw== dependencies: JSONStream "^1.0.3" shasum-object "^1.0.0" @@ -3606,7 +3432,6 @@ detect-file@^1.0.0: detective@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== dependencies: acorn-node "^1.6.1" defined "^1.0.0" @@ -3615,7 +3440,6 @@ detective@^5.2.0: diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== diff@^4.0.1: version "4.0.2" @@ -3715,7 +3539,6 @@ dot-prop@^5.2.0: duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= dependencies: readable-stream "^2.0.2" @@ -3731,7 +3554,6 @@ duplexify@^3.4.2, duplexify@^3.6.0: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -3743,17 +3565,14 @@ electron-to-chromium@^1.3.413: electron-to-chromium@^1.3.649: version "1.3.690" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.690.tgz#54df63ec42fba6b8e9e05fe4be52caeeedb6e634" - integrity sha512-zPbaSv1c8LUKqQ+scNxJKv01RYFkVVF1xli+b+3Ty8ONujHjAMg+t/COmdZqrtnS1gT+g4hbSodHillymt1Lww== elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= elliptic@^6.0.0: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" brorand "^1.1.0" @@ -3852,7 +3671,6 @@ es-to-primitive@^1.2.1: es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== es6-promise@^2.3.0: version "2.3.0" @@ -3861,12 +3679,10 @@ es6-promise@^2.3.0: escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" @@ -3917,12 +3733,10 @@ eslint-module-utils@^2.4.1: eslint-plugin-chai-friendly@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.6.0.tgz#54052fab79302ed0cea76ab997351ea4809bfb77" - integrity sha512-Uvvv1gkbRGp/qfN15B0kQyQWg+oFA8buDSqrwmW3egNSk/FpqH2MjQqKOuKwmEL6w4QIQrIjDp+gg6kGGmD3oQ== eslint-plugin-cypress@^2.11.2: version "2.11.2" resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.2.tgz#a8f3fe7ec840f55e4cea37671f93293e6c3e76a0" - integrity sha512-1SergF1sGbVhsf7MYfOLiBhdOg6wqyeV9pXUAIDIffYTGMN3dTBQS9nFAzhLsHhO+Bn0GaVM1Ecm71XUidQ7VA== dependencies: globals "^11.12.0" @@ -4092,12 +3906,10 @@ esutils@^2.0.2: eventemitter2@^6.4.2: version "6.4.3" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== events@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" - integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== events@^3.0.0: version "3.1.0" @@ -4113,7 +3925,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: execa@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -4140,7 +3951,6 @@ execa@^1.0.0: execa@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -4161,14 +3971,12 @@ execall@^2.0.0: executable@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" - integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== dependencies: pify "^2.2.0" exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= expand-brackets@^2.1.4: version "2.1.4" @@ -4238,7 +4046,6 @@ extract-text-webpack-plugin@^3.0.2: extract-zip@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== dependencies: concat-stream "^1.6.2" debug "^2.6.9" @@ -4248,12 +4055,10 @@ extract-zip@^1.7.0: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^1.0.0: version "1.1.0" @@ -4285,7 +4090,6 @@ fast-levenshtein@~2.0.6: fast-safe-stringify@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== fastq@^1.6.0: version "1.7.0" @@ -4296,7 +4100,6 @@ fastq@^1.6.0: fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= dependencies: pend "~1.2.0" @@ -4307,7 +4110,6 @@ figgy-pudding@^3.5.1: figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= dependencies: escape-string-regexp "^1.0.5" object-assign "^4.1.0" @@ -4315,7 +4117,6 @@ figures@^1.7.0: figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" @@ -4369,7 +4170,6 @@ find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: find-up@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" @@ -4413,7 +4213,6 @@ flat-cache@^2.0.1: flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^2.0.0: version "2.0.2" @@ -4437,7 +4236,6 @@ for-in@^1.0.2: foreground-child@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== dependencies: cross-spawn "^7.0.0" signal-exit "^3.0.2" @@ -4445,12 +4243,10 @@ foreground-child@^2.0.0: forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.6" @@ -4472,12 +4268,10 @@ from2@^2.1.0: fromentries@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== fs-extra@9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" - integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" @@ -4495,7 +4289,6 @@ fs-extra@^8.1.0: fs-extra@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" @@ -4531,7 +4324,6 @@ fsevents@^1.2.7: fsevents@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" @@ -4548,12 +4340,10 @@ gensync@^1.0.0-beta.1: gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-assigned-identifiers@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" - integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" @@ -4562,7 +4352,6 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-stdin@^7.0.0: version "7.0.0" @@ -4577,7 +4366,6 @@ get-stream@^4.0.0: get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -4588,14 +4376,12 @@ get-value@^2.0.3, get-value@^2.0.6: getos@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" - integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== dependencies: async "^3.2.0" getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" @@ -4615,7 +4401,6 @@ glob-parent@^5.0.0, glob-parent@^5.1.0: glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" @@ -4633,7 +4418,6 @@ glob@7.1.6, glob@^7.1.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: global-dirs@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== dependencies: ini "^1.3.5" @@ -4682,7 +4466,6 @@ globals@^12.1.0: globby@11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" - integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" @@ -4719,17 +4502,14 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: version "5.1.5" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" har-schema "^2.0.0" @@ -4741,7 +4521,6 @@ hard-rejection@^2.0.0: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" @@ -4800,7 +4579,6 @@ hash-base@^3.0.0: hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -4808,7 +4586,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: hasha@^5.0.0: version "5.2.2" resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== dependencies: is-stream "^2.0.0" type-fest "^0.8.0" @@ -4816,7 +4593,6 @@ hasha@^5.0.0: he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hex-color-regex@^1.1.0: version "1.1.0" @@ -4825,7 +4601,6 @@ hex-color-regex@^1.1.0: hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -4856,7 +4631,6 @@ html-comment-regex@^1.1.0: html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-janitor@^2.0.4: version "2.0.4" @@ -4869,7 +4643,6 @@ html-tags@^3.1.0: htmlescape@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" - integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= htmlparser2@^3.10.0: version "3.10.1" @@ -4895,7 +4668,6 @@ htmlparser2@~3.8.1: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -4908,7 +4680,6 @@ https-browserify@^1.0.0: human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== iconv-lite@^0.4.24: version "0.4.24" @@ -4925,7 +4696,6 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ieee754@^1.1.4: version "1.1.13" @@ -4987,7 +4757,6 @@ imurmurhash@^0.1.4: indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= indent-string@^4.0.0: version "4.0.0" @@ -5011,7 +4780,6 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" @@ -5024,12 +4792,10 @@ inherits@2.0.3: ini@^1.3.4, ini@^1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== inline-source-map@~0.6.0: version "0.6.2" resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= dependencies: source-map "~0.5.3" @@ -5054,7 +4820,6 @@ inquirer@^7.0.0: insert-module-globals@^7.0.0: version "7.2.1" resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.1.tgz#d5e33185181a4e1f33b15f7bf100ee91890d5cb3" - integrity sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg== dependencies: JSONStream "^1.0.3" acorn-node "^1.5.2" @@ -5129,7 +4894,6 @@ is-binary-path@^1.0.0: is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" @@ -5148,7 +4912,6 @@ is-callable@^1.1.4, is-callable@^1.1.5: is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" @@ -5166,7 +4929,6 @@ is-color-stop@^1.0.0: is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== dependencies: has "^1.0.3" @@ -5227,7 +4989,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" @@ -5258,7 +5019,6 @@ is-hexadecimal@^1.0.0: is-installed-globally@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== dependencies: global-dirs "^2.0.1" is-path-inside "^3.0.1" @@ -5280,14 +5040,12 @@ is-obj@^2.0.0: is-observable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== dependencies: symbol-observable "^1.1.0" is-path-inside@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== is-plain-obj@^1.1.0: version "1.1.0" @@ -5328,7 +5086,6 @@ is-stream@^1.1.0: is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== is-string@^1.0.5: version "1.0.5" @@ -5391,24 +5148,20 @@ isobject@^3.0.0, isobject@^3.0.1: isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-lib-coverage@3.0.0, istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== istanbul-lib-hook@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== dependencies: append-transform "^2.0.0" istanbul-lib-instrument@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== dependencies: "@babel/core" "^7.7.5" "@istanbuljs/schema" "^0.1.2" @@ -5418,7 +5171,6 @@ istanbul-lib-instrument@^4.0.0: istanbul-lib-processinfo@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" - integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== dependencies: archy "^1.0.0" cross-spawn "^7.0.0" @@ -5431,7 +5183,6 @@ istanbul-lib-processinfo@^2.0.2: istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" make-dir "^3.0.0" @@ -5440,7 +5191,6 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" @@ -5449,7 +5199,6 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -5464,7 +5213,6 @@ jest-worker@^25.4.0: js-levenshtein@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -5473,7 +5221,6 @@ js-levenshtein@^1.1.3: js-yaml@3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -5481,7 +5228,6 @@ js-yaml@3.14.1: js-yaml@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== dependencies: argparse "^2.0.1" @@ -5495,7 +5241,6 @@ js-yaml@^3.13.1: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jsdoctypeparser@^6.1.0: version "6.1.0" @@ -5524,7 +5269,6 @@ json-schema-traverse@^0.4.1: json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" @@ -5533,14 +5277,12 @@ json-stable-stringify-without-jsonify@^1.0.1: json-stable-stringify@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" - integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= dependencies: jsonify "~0.0.0" json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@^1.0.1: version "1.0.1" @@ -5551,7 +5293,6 @@ json5@^1.0.1: json5@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== dependencies: minimist "^1.2.5" @@ -5570,7 +5311,6 @@ jsonfile@^4.0.0: jsonfile@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== dependencies: universalify "^1.0.0" optionalDependencies: @@ -5579,17 +5319,14 @@ jsonfile@^6.0.1: jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -5623,7 +5360,6 @@ known-css-properties@^0.18.0: labeled-stream-splicer@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" - integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== dependencies: inherits "^2.0.1" stream-splicer "^2.0.0" @@ -5631,7 +5367,6 @@ labeled-stream-splicer@^2.0.0: lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" - integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= lcid@^2.0.0: version "2.0.0" @@ -5670,12 +5405,10 @@ lines-and-columns@^1.1.6: listr-silent-renderer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= listr-update-renderer@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== dependencies: chalk "^1.1.3" cli-truncate "^0.2.1" @@ -5689,7 +5422,6 @@ listr-update-renderer@^0.5.0: listr-verbose-renderer@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== dependencies: chalk "^2.4.1" cli-cursor "^2.1.0" @@ -5699,7 +5431,6 @@ listr-verbose-renderer@^0.5.0: listr@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== dependencies: "@samverschueren/stream-to-observable" "^0.3.0" is-observable "^1.1.0" @@ -5771,7 +5502,6 @@ locate-path@^5.0.0: locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" @@ -5782,12 +5512,10 @@ lodash._reinterpolate@^3.0.0: lodash.clonedeep@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= lodash.memoize@^4.1.2: version "4.1.2" @@ -5796,12 +5524,10 @@ lodash.memoize@^4.1.2: lodash.memoize@~3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" - integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= lodash.template@^4.5.0: version "4.5.0" @@ -5831,24 +5557,20 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: lodash@^4.17.19: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== lodash@^4.17.20: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@4.0.0, log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: chalk "^4.0.0" log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= dependencies: chalk "^1.0.0" @@ -5867,7 +5589,6 @@ log-symbols@^3.0.0: log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= dependencies: ansi-escapes "^3.0.0" cli-cursor "^2.0.0" @@ -6043,19 +5764,16 @@ miller-rabin@^4.0.0: mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: mime-db "1.44.0" mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" @@ -6068,12 +5786,10 @@ min-indent@^1.0.0: minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" @@ -6141,7 +5857,6 @@ mixin-deep@^1.2.0: mkdirp-classic@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1: version "0.5.5" @@ -6152,12 +5867,10 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1: mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mocha@latest: version "8.3.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.3.2.tgz#53406f195fa86fbdebe71f8b1c6fb23221d69fcc" - integrity sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" @@ -6188,7 +5901,6 @@ mocha@latest: module-deps@^6.0.0, module-deps@^6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.3.tgz#15490bc02af4b56cf62299c7c17cba32d71a96ee" - integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA== dependencies: JSONStream "^1.0.3" browser-resolve "^2.0.0" @@ -6209,7 +5921,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: moment@^2.29.1: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== move-concurrently@^1.0.1: version "1.0.1" @@ -6233,7 +5944,6 @@ ms@2.1.2, ms@^2.1.1: ms@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== mute-stream@0.0.8: version "0.0.8" @@ -6246,12 +5956,10 @@ nan@^2.12.1: nanoid@3.1.20: version "3.1.20" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== nanoid@^3.1.22: version "3.1.22" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" - integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== nanomatch@^1.2.9: version "1.2.13" @@ -6316,7 +6024,6 @@ node-modules-regexp@^1.0.0: node-preload@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== dependencies: process-on-spawn "^1.0.0" @@ -6327,7 +6034,6 @@ node-releases@^1.1.53: node-releases@^1.1.70: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" @@ -6369,7 +6075,6 @@ npm-run-path@^2.0.0: npm-run-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" @@ -6386,12 +6091,10 @@ num2fraction@^1.2.2: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nyc@15.1.0: version "15.1.0" resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== dependencies: "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" @@ -6424,7 +6127,6 @@ nyc@15.1.0: oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -6496,12 +6198,10 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" @@ -6541,12 +6241,10 @@ os-tmpdir@~1.0.2: ospath@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" - integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= outpipe@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/outpipe/-/outpipe-1.1.1.tgz#50cf8616365e87e031e29a5ec9339a3da4725fa2" - integrity sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I= dependencies: shell-quote "^1.4.2" @@ -6577,7 +6275,6 @@ p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" @@ -6602,14 +6299,12 @@ p-locate@^4.1.0: p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-map@^3.0.0: version "3.0.0" @@ -6628,7 +6323,6 @@ p-try@^2.0.0: package-hash@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== dependencies: graceful-fs "^4.1.15" hasha "^5.0.0" @@ -6656,7 +6350,6 @@ parent-module@^1.0.0: parents@^1.0.0, parents@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" - integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= dependencies: path-platform "~0.11.15" @@ -6739,7 +6432,6 @@ path-key@^2.0.0, path-key@^2.0.1: path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: version "1.0.6" @@ -6748,7 +6440,6 @@ path-parse@^1.0.6: path-platform@~0.11.15: version "0.11.15" resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= path-type@^2.0.0: version "2.0.0" @@ -6773,12 +6464,10 @@ pbkdf2@^3.0.3: pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" @@ -7474,7 +7163,6 @@ prelude-ls@~1.1.2: pretty-bytes@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" - integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== private@^0.1.8: version "0.1.8" @@ -7487,7 +7175,6 @@ process-nextick-args@~2.0.0: process-on-spawn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" - integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== dependencies: fromentries "^1.2.0" @@ -7510,7 +7197,6 @@ prr@~1.0.1: psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== public-encrypt@^4.0.0: version "4.0.3" @@ -7564,7 +7250,6 @@ q@^1.1.2: qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== querystring-es3@^0.2.0, querystring-es3@~0.2.0: version "0.2.1" @@ -7581,7 +7266,6 @@ quick-lru@^4.0.1: ramda@~0.27.1: version "0.27.1" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" - integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -7612,7 +7296,6 @@ read-cache@^1.0.0: read-only-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" - integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= dependencies: readable-stream "^2.0.2" @@ -7688,7 +7371,6 @@ readdirp@^2.2.1: readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: picomatch "^2.2.1" @@ -7712,7 +7394,6 @@ regenerate@^1.4.0: regenerator-runtime@^0.12.0: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" - integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== regenerator-runtime@^0.13.4: version "0.13.5" @@ -7754,7 +7435,6 @@ regexpu-core@^4.7.0: regexpu-core@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.2.0" @@ -7780,7 +7460,6 @@ regjsparser@^0.6.4: release-zalgo@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= dependencies: es6-error "^4.0.1" @@ -7851,7 +7530,6 @@ replace-ext@1.0.0: request-progress@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4= dependencies: throttleit "^1.0.0" @@ -7895,12 +7573,10 @@ resolve-url@^0.2.1: resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: is-core-module "^2.2.0" path-parse "^1.0.6" @@ -7914,7 +7590,6 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13 restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= dependencies: exit-hook "^1.0.0" onetime "^1.0.0" @@ -7922,7 +7597,6 @@ restore-cursor@^1.0.1: restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -7994,7 +7668,6 @@ run-queue@^1.0.0, run-queue@^1.0.3: rxjs@^6.3.3: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" @@ -8062,7 +7735,6 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: serialize-javascript@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: randombytes "^2.1.0" @@ -8101,14 +7773,12 @@ sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: shasum-object@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e" - integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg== dependencies: fast-safe-stringify "^2.0.7" shasum@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" - integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= dependencies: json-stable-stringify "~0.0.0" sha.js "~2.4.4" @@ -8122,7 +7792,6 @@ shebang-command@^1.2.0: shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" @@ -8133,12 +7802,10 @@ shebang-regex@^1.0.0: shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.4.2, shell-quote@^1.6.1: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" @@ -8147,7 +7814,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-swizzle@^0.2.2: version "0.2.2" @@ -8162,7 +7828,6 @@ slash@^3.0.0: slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= slice-ansi@^2.1.0: version "2.1.0" @@ -8235,7 +7900,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: spawn-wrap@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== dependencies: foreground-child "^2.0.0" is-windows "^1.0.2" @@ -8283,7 +7947,6 @@ sprintf-js@~1.0.2: sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -8333,7 +7996,6 @@ stream-browserify@^2.0.0, stream-browserify@^2.0.1: stream-combiner2@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= dependencies: duplexer2 "~0.1.0" readable-stream "^2.0.2" @@ -8358,7 +8020,6 @@ stream-http@^2.0.0, stream-http@^2.7.2: stream-http@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564" - integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg== dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.4" @@ -8372,7 +8033,6 @@ stream-shift@^1.0.0: stream-splicer@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" - integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== dependencies: inherits "^2.0.1" readable-stream "^2.0.2" @@ -8380,7 +8040,6 @@ stream-splicer@^2.0.0: string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -8389,7 +8048,6 @@ string-width@^1.0.1: "string-width@^1.0.2 || 2", string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -8469,14 +8127,12 @@ stringify-entities@^3.0.0: strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" @@ -8499,7 +8155,6 @@ strip-bom@^3.0.0: strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-eof@^1.0.0: version "1.0.0" @@ -8508,7 +8163,6 @@ strip-eof@^1.0.0: strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-indent@^3.0.0: version "3.0.0" @@ -8519,7 +8173,6 @@ strip-indent@^3.0.0: strip-json-comments@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-json-comments@^3.0.1: version "3.1.0" @@ -8593,7 +8246,6 @@ stylelint@^13.3.3: subarg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= dependencies: minimist "^1.1.0" @@ -8612,14 +8264,12 @@ supports-color@6.1.0, supports-color@^6.1.0: supports-color@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" @@ -8636,7 +8286,6 @@ supports-color@^7.0.0, supports-color@^7.1.0: supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" @@ -8674,12 +8323,10 @@ svgo@^1.0.0: symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== syntax-error@^1.1.1: version "1.4.0" resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" - integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== dependencies: acorn-node "^1.2.0" @@ -8735,7 +8382,6 @@ terser@^4.1.2, terser@^4.6.12: test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" glob "^7.1.4" @@ -8748,7 +8394,6 @@ text-table@^0.2.0: throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= through2@^2.0.0: version "2.0.5" @@ -8764,7 +8409,6 @@ through2@^2.0.0: timers-browserify@^1.0.1: version "1.4.2" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" - integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= dependencies: process "~0.11.0" @@ -8787,7 +8431,6 @@ tmp@^0.0.33: tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: rimraf "^3.0.0" @@ -8830,7 +8473,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" punycode "^2.1.1" @@ -8902,19 +8544,16 @@ tty-browserify@0.0.0: tty-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" - integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@~0.3.2: version "0.3.2" @@ -8951,12 +8590,10 @@ typescript@3.8.3, typescript@^3.7.3: umd@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" - integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== undeclared-identifiers@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" - integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== dependencies: acorn-node "^1.3.0" dash-ast "^1.0.0" @@ -9074,7 +8711,6 @@ universalify@^0.1.0: universalify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== unquote@~1.1.1: version "1.1.1" @@ -9090,7 +8726,6 @@ unset-value@^1.0.0: untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== upath@^1.1.1: version "1.2.0" @@ -9145,14 +8780,12 @@ util@^0.11.0: util@~0.10.1: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache@2.0.3: version "2.0.3" @@ -9176,7 +8809,6 @@ vendors@^1.0.0: verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -9210,7 +8842,6 @@ vm-browserify@^1.0.0, vm-browserify@^1.0.1: watchify@3.11.1: version "3.11.1" resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.11.1.tgz#8e4665871fff1ef64c0430d1a2c9d084d9721881" - integrity sha512-WwnUClyFNRMB2NIiHgJU9RQPQNqVeFk7OmZaWf5dC5EnNa0Mgr7imBydbaJ7tGTuPM2hz1Cb4uiBvK9NVxMfog== dependencies: anymatch "^2.0.0" browserify "^16.1.0" @@ -9286,7 +8917,6 @@ which-module@^2.0.0: which@2.0.2, which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" @@ -9299,7 +8929,6 @@ which@^1.2.14, which@^1.2.9, which@^1.3.1: wide-align@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" @@ -9316,12 +8945,10 @@ worker-farm@^1.7.0: workerpool@6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" - integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -9337,7 +8964,6 @@ wrap-ansi@^5.1.0: wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" @@ -9346,7 +8972,6 @@ wrap-ansi@^6.2.0: wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" @@ -9378,12 +9003,10 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: version "5.0.6" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.6.tgz#8236b05cfc5af6a409f41326a4847c68989bb04f" - integrity sha512-PlVX4Y0lDTN6E2V4ES2tEdyvXkeKzxa8c/vo0pxPr/TqbztddTP0yn7zZylIyiAuxerqj0Q5GhpJ1YJCP8LaZQ== yallist@^3.0.2: version "3.1.1" @@ -9402,7 +9025,6 @@ yaml@^1.7.2: yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@^13.1.0: version "13.1.2" @@ -9421,12 +9043,10 @@ yargs-parser@^18.1.1, yargs-parser@^18.1.2: yargs-parser@^20.2.2: version "20.2.7" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" decamelize "^4.0.0" @@ -9452,7 +9072,6 @@ yargs@13.2.4: yargs@16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" escalade "^3.1.1" @@ -9465,7 +9084,6 @@ yargs@16.2.0: yargs@^15.0.2: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" decamelize "^1.2.0" @@ -9482,7 +9100,6 @@ yargs@^15.0.2: yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" @@ -9490,4 +9107,3 @@ yauzl@^2.10.0: yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==