From 3272efc3f7f02af8b73dfe7d6fa6e3248806f479 Mon Sep 17 00:00:00 2001 From: Peter Savchenko Date: Fri, 25 Nov 2022 21:56:50 +0400 Subject: [PATCH] chore(linting): eslint updated, code linted (#2174) * update eslint + autofix * a bunch of eslint fixes * some spelling & eslint fixes * fix some eslint errors and spells * Update __module.ts * a bunch of eslint fixes in tests * Update cypress.yml * Update cypress.yml * fix cypress docker image name * fixes for tests * more tests fixed * rm rule ignore * rm another ignored rule * Update .eslintrc --- .eslintrc | 22 +- .github/workflows/cypress.yml | 2 +- .vscode/settings.json | 29 + package.json | 8 +- src/codex.ts | 1 - src/components/__module.ts | 8 +- .../block-tunes/block-tune-delete.ts | 8 +- .../block-tunes/block-tune-move-down.ts | 3 +- .../block-tunes/block-tune-move-up.ts | 5 +- src/components/block/api.ts | 3 - src/components/block/index.ts | 24 +- src/components/blocks.ts | 6 - src/components/core.ts | 6 +- src/components/dom.ts | 22 - src/components/domIterator.ts | 1 + src/components/flipper.ts | 2 +- src/components/i18n/index.ts | 1 - .../inline-tools/inline-tool-bold.ts | 9 +- .../inline-tools/inline-tool-italic.ts | 9 +- .../inline-tools/inline-tool-link.ts | 22 +- src/components/modules/api/blocks.ts | 10 +- src/components/modules/api/caret.ts | 18 +- src/components/modules/api/notifier.ts | 8 +- src/components/modules/api/readonly.ts | 1 - src/components/modules/api/sanitizer.ts | 1 - src/components/modules/api/selection.ts | 1 - src/components/modules/blockEvents.ts | 6 +- src/components/modules/blockManager.ts | 16 - src/components/modules/blockSelection.ts | 9 +- src/components/modules/caret.ts | 12 +- src/components/modules/crossBlockSelection.ts | 4 +- src/components/modules/paste.ts | 19 +- src/components/modules/readonly.ts | 2 - src/components/modules/rectangleSelection.ts | 5 +- src/components/modules/renderer.ts | 3 - src/components/modules/saver.ts | 1 - .../modules/toolbar/blockSettings.ts | 3 +- src/components/modules/toolbar/conversion.ts | 7 +- src/components/modules/toolbar/index.ts | 28 +- src/components/modules/toolbar/inline.ts | 5 +- src/components/modules/tools.ts | 17 +- src/components/modules/ui.ts | 23 +- src/components/polyfills.ts | 3 - src/components/selection.ts | 7 +- src/components/tools/base.ts | 9 +- src/components/tools/factory.ts | 1 - src/components/ui/toolbox.ts | 16 +- src/components/utils.ts | 44 +- src/components/utils/events.ts | 2 - src/components/utils/listeners.ts | 9 +- src/components/utils/popover.ts | 19 +- src/components/utils/sanitizer.ts | 4 - src/components/utils/scroll-locker.ts | 4 +- src/components/utils/search-input.ts | 1 + src/components/utils/shortcuts.ts | 1 - src/tools/stub/index.ts | 1 + test/cypress/tests/api/block.spec.ts | 32 +- test/cypress/tests/api/blocks.spec.ts | 14 +- test/cypress/tests/api/tools.spec.ts | 23 +- test/cypress/tests/block-ids.spec.ts | 18 +- test/cypress/tests/copy-paste.spec.ts | 65 +- test/cypress/tests/i18n.spec.ts | 8 +- test/cypress/tests/initialization.spec.ts | 12 +- test/cypress/tests/modules/Tools.spec.ts | 9 +- test/cypress/tests/readOnly.spec.ts | 5 + test/cypress/tests/sanitisation.spec.ts | 17 +- test/cypress/tests/selection.spec.ts | 10 +- test/cypress/tests/tools/BlockTool.spec.ts | 16 +- test/cypress/tests/tools/BlockTune.spec.ts | 4 +- test/cypress/tests/tools/InlineTool.spec.ts | 8 +- test/cypress/tests/utils.spec.ts | 10 +- test/cypress/tests/utils/flipper.spec.ts | 22 +- yarn.lock | 1265 +++++++++++------ 73 files changed, 1157 insertions(+), 892 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.eslintrc b/.eslintrc index 9d39bb96..ef566548 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,27 +1,7 @@ { "extends": [ - "codex" + "codex/ts" ], - "rules": { - /** - * Temporary suppress some errors. We need to fix them partially in next patches - */ - "import/no-duplicates": ["warn"], - "@typescript-eslint/triple-slash-reference": ["off"], - "jsdoc/no-undefined-types": ["warn", {"definedTypes": [ - "ConstructorOptions", - "API", - "BlockToolConstructable", - "EditorConfig", - "Tool", - "ToolSettings" - ]}] - }, - "settings": { - "jsdoc": { - "mode": "typescript" - } - }, "globals": { "Node": true, "Range": true, diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index c384afd8..ee311b35 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -4,7 +4,7 @@ jobs: firefox: runs-on: ubuntu-latest container: - image: cypress/browsers:node14.16.0-chrome89-ff86 + image: cypress/browsers:node14.17.0-chrome88-ff89 options: --user 1001 steps: - uses: actions/checkout@v2 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..43709286 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,29 @@ +{ + "cSpell.words": [ + "Behaviour", + "cacheable", + "codexteam", + "colspan", + "contenteditable", + "cssnano", + "Debouncer", + "devserver", + "editorjs", + "entrypoints", + "Flippable", + "hsablonniere", + "intellij", + "keydowns", + "Kilian", + "mergeable", + "movetostart", + "nofollow", + "opencollective", + "preconfigured", + "rowspan", + "selectall", + "sometool", + "stylelint", + "twitterwidget" + ] +} diff --git a/package.json b/package.json index 59effb5d..3cd374d0 100644 --- a/package.json +++ b/package.json @@ -67,11 +67,11 @@ "cssnano": "^4.1.10", "cypress": "^6.8.0", "cypress-intellij-reporter": "^0.0.6", - "eslint": "^6.8.0", - "eslint-config-codex": "^1.3.3", + "eslint": "^8.28.0", + "eslint-config-codex": "^1.7.1", "eslint-loader": "^4.0.2", - "eslint-plugin-chai-friendly": "^0.6.0", - "eslint-plugin-cypress": "^2.11.2", + "eslint-plugin-chai-friendly": "^0.7.2", + "eslint-plugin-cypress": "^2.12.1", "extract-text-webpack-plugin": "^3.0.2", "html-janitor": "^2.0.4", "license-webpack-plugin": "^2.1.4", diff --git a/src/codex.ts b/src/codex.ts index 29dc4b8f..730e5b09 100644 --- a/src/codex.ts +++ b/src/codex.ts @@ -19,7 +19,6 @@ declare const VERSION: string; * Short Description (눈_눈;) * * @version 2.18.0 - * * @license Apache-2.0 * @author CodeX-Team */ diff --git a/src/components/__module.ts b/src/components/__module.ts index f18de55f..c5391422 100644 --- a/src/components/__module.ts +++ b/src/components/__module.ts @@ -14,12 +14,11 @@ export type ModuleNodes = object; * @abstract * @class Module * @classdesc All modules inherits from this class. - * * @typedef {Module} Module * @property {object} config - Editor user settings * @property {EditorModules} Editor - List of Editor modules */ -export default class Module { +export default class Module> { /** * Each module can provide some UI elements that will be stored in this property */ @@ -92,8 +91,9 @@ export default class Module { /** * @class - * - * @param {ModuleConfig} - Module config + * @param options - Module options + * @param options.config - Module config + * @param options.eventsDispatcher - Common event bus */ constructor({ config, eventsDispatcher }: ModuleConfig) { if (new.target === Module) { diff --git a/src/components/block-tunes/block-tune-delete.ts b/src/components/block-tunes/block-tune-delete.ts index 27bd612d..1aa7920b 100644 --- a/src/components/block-tunes/block-tune-delete.ts +++ b/src/components/block-tunes/block-tune-delete.ts @@ -1,7 +1,6 @@ /** * @class DeleteTune * @classdesc Editor's default tune that moves up selected block - * * @copyright 2018 */ import { API, BlockTune, PopoverItem } from '../../../types'; @@ -37,22 +36,21 @@ export default class DeleteTune implements BlockTune { */ public render(): PopoverItem { return { + // eslint-disable-next-line @typescript-eslint/no-magic-numbers icon: $.svg('cross', 14, 14).outerHTML, label: this.api.i18n.t('Delete'), name: 'delete', confirmation: { label: this.api.i18n.t('Click to delete'), - onActivate: (item, e): void => this.handleClick(e), + onActivate: (): void => this.handleClick(), }, }; } /** * Delete block conditions passed - * - * @param {MouseEvent} event - click event */ - public handleClick(event: MouseEvent): void { + public handleClick(): void { this.api.blocks.delete(); } } diff --git a/src/components/block-tunes/block-tune-move-down.ts b/src/components/block-tunes/block-tune-move-down.ts index 614a778f..7e51519e 100644 --- a/src/components/block-tunes/block-tune-move-down.ts +++ b/src/components/block-tunes/block-tune-move-down.ts @@ -1,7 +1,6 @@ /** * @class MoveDownTune * @classdesc Editor's default tune - Moves down highlighted block - * * @copyright 2018 */ @@ -46,6 +45,7 @@ export default class MoveDownTune implements BlockTune { */ public render(): PopoverItem { return { + // eslint-disable-next-line @typescript-eslint/no-magic-numbers icon: $.svg('arrow-down', 14, 14).outerHTML, label: this.api.i18n.t('Move down'), onActivate: (item, event): void => this.handleClick(event), @@ -72,6 +72,7 @@ export default class MoveDownTune implements BlockTune { window.setTimeout(() => { button.classList.remove(this.CSS.animation); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 500); return; diff --git a/src/components/block-tunes/block-tune-move-up.ts b/src/components/block-tunes/block-tune-move-up.ts index 1d07e3bf..01c5e2c8 100644 --- a/src/components/block-tunes/block-tune-move-up.ts +++ b/src/components/block-tunes/block-tune-move-up.ts @@ -1,11 +1,10 @@ /** * @class MoveUpTune * @classdesc Editor's default tune that moves up selected block - * * @copyright 2018 */ import $ from '../dom'; -import { API, BlockTune, BlockAPI, PopoverItem } from '../../../types'; +import { API, BlockTune, PopoverItem } from '../../../types'; import Popover from '../../components/utils/popover'; /** @@ -45,6 +44,7 @@ export default class MoveUpTune implements BlockTune { */ public render(): PopoverItem { return { + // eslint-disable-next-line @typescript-eslint/no-magic-numbers icon: $.svg('arrow-up', 14, 14).outerHTML, label: this.api.i18n.t('Move up'), onActivate: (item, e): void => this.handleClick(e), @@ -71,6 +71,7 @@ export default class MoveUpTune implements BlockTune { window.setTimeout(() => { button.classList.remove(this.CSS.animation); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 500); return; diff --git a/src/components/block/api.ts b/src/components/block/api.ts index a5049253..d760ab63 100644 --- a/src/components/block/api.ts +++ b/src/components/block/api.ts @@ -7,7 +7,6 @@ import { BlockAPI as BlockAPIInterface } from '../../../types/api'; * Constructs new BlockAPI object * * @class - * * @param {Block} block - Block to expose */ function BlockAPI( @@ -90,7 +89,6 @@ function BlockAPI( * * @param {string} methodName - method to call * @param {object} param - object with parameters - * * @returns {unknown} */ call(methodName: string, param?: object): unknown { @@ -110,7 +108,6 @@ function BlockAPI( * Validate Block data * * @param {BlockToolData} data - data to validate - * * @returns {Promise} */ validate(data: BlockToolData): Promise { diff --git a/src/components/block/index.ts b/src/components/block/index.ts index d2007f6a..a84dd311 100644 --- a/src/components/block/index.ts +++ b/src/components/block/index.ts @@ -60,10 +60,8 @@ interface BlockConstructorOptions { /** * @class Block * @classdesc This class describes editor`s block, including block`s HTMLElement, data and tool - * * @property {BlockTool} tool — current block tool (Paragraph, for example) * @property {object} CSS — block`s css classes - * */ /** @@ -74,11 +72,13 @@ export enum BlockToolAPI { * @todo remove method in 3.0.0 * @deprecated — use 'rendered' hook instead */ + // eslint-disable-next-line @typescript-eslint/naming-convention APPEND_CALLBACK = 'appendCallback', RENDERED = 'rendered', MOVED = 'moved', UPDATED = 'updated', REMOVED = 'removed', + // eslint-disable-next-line @typescript-eslint/naming-convention ON_PASTE = 'onPaste', } @@ -89,7 +89,6 @@ type BlockEvents = 'didMutated'; /** * @classdesc Abstract Block class that contains Block information, Tool name and Tool class instance - * * @property {BlockTool} tool - Tool instance * @property {HTMLElement} holder - Div element that wraps block content with Tool's content. Has `ce-block` CSS class * @property {HTMLElement} pluginsContent - HTML content that returns by Tool's render function @@ -244,7 +243,7 @@ export default class Block extends EventsDispatcher { * @param {object} options - block constructor options * @param {string} [options.id] - block's id. Will be generated if omitted. * @param {BlockToolData} options.data - Tool's initial data - * @param {BlockToolConstructable} options.tool — block's tool + * @param {BlockTool} options.tool — block's tool * @param options.api - Editor API module for pass it to the Block Tunes * @param {boolean} options.readOnly - Read-Only flag */ @@ -281,7 +280,7 @@ export default class Block extends EventsDispatcher { } /** - * Find and return all editable elements (contenteditables and native inputs) in the Tool HTML + * Find and return all editable elements (contenteditable and native inputs) in the Tool HTML * * @returns {HTMLElement[]} */ @@ -396,7 +395,7 @@ export default class Block extends EventsDispatcher { /** * is block mergeable - * We plugin have merge function then we call it mergable + * We plugin have merge function then we call it mergeable * * @returns {boolean} */ @@ -417,7 +416,7 @@ export default class Block extends EventsDispatcher { } /** - * Check if block has a media content such as images, iframes and other + * Check if block has a media content such as images, iframe and other * * @returns {boolean} */ @@ -487,7 +486,7 @@ export default class Block extends EventsDispatcher { /** * Set stretched state * - * @param {boolean} state - 'true' to enable, 'false' to disable stretched statte + * @param {boolean} state - 'true' to enable, 'false' to disable stretched state */ public set stretched(state: boolean) { this.holder.classList.toggle(Block.CSS.wrapperStretched, state); @@ -619,7 +618,7 @@ export default class Block extends EventsDispatcher { }; }) .catch((error) => { - _.log(`Saving proccess for ${this.name} tool failed due to the ${error}`, 'log', 'red'); + _.log(`Saving process for ${this.name} tool failed due to the ${error}`, 'log', 'red'); }); } @@ -628,7 +627,6 @@ export default class Block extends EventsDispatcher { * Tool's validation method is optional * * @description Method returns true|false whether data passed the validation or not - * * @param {BlockToolData} data - data to validate * @returns {Promise} valid */ @@ -855,10 +853,10 @@ export default class Block extends EventsDispatcher { * Update current input */ this.updateCurrentInput(); - } + }; /** - * Adds focus event listeners to all inputs and contentEditables + * Adds focus event listeners to all inputs and contenteditable */ private addInputEvents(): void { this.inputs.forEach(input => { @@ -874,7 +872,7 @@ export default class Block extends EventsDispatcher { } /** - * removes focus event listeners from all inputs and contentEditables + * removes focus event listeners from all inputs and contenteditable */ private removeInputEvents(): void { this.inputs.forEach(input => { diff --git a/src/components/blocks.ts b/src/components/blocks.ts index 1f25a7fc..b3713ad4 100644 --- a/src/components/blocks.ts +++ b/src/components/blocks.ts @@ -6,11 +6,8 @@ import { MoveEvent } from '../../types/tools'; /** * @class Blocks * @classdesc Class to work with Block instances array - * * @private - * * @property {HTMLElement} workingArea — editor`s working node - * */ export default class Blocks { /** @@ -25,7 +22,6 @@ export default class Blocks { /** * @class - * * @param {HTMLElement} workingArea — editor`s working node */ constructor(workingArea: HTMLElement) { @@ -65,7 +61,6 @@ export default class Blocks { * * @example * blocks[0] = new Block(...) - * * @param {Blocks} instance — Blocks instance * @param {PropertyKey} property — block index or any Blocks class property key to set * @param {Block} value — value to set @@ -257,7 +252,6 @@ export default class Blocks { * Insert Block after passed target * * @todo decide if this method is necessary - * * @param {Block} targetBlock — target after which Block should be inserted * @param {Block} newBlock — Block to insert */ diff --git a/src/components/core.ts b/src/components/core.ts index 471bf7ff..08a7beed 100644 --- a/src/components/core.ts +++ b/src/components/core.ts @@ -30,12 +30,9 @@ contextRequire.keys().forEach((filename) => { /** * @class Core - * * @classdesc Editor.js core class - * * @property {EditorConfig} config - all settings * @property {EditorModules} moduleInstances - constructed editor components - * * @type {Core} */ export default class Core { @@ -61,7 +58,6 @@ export default class Core { /** * @param {EditorConfig} config - user configuration - * */ constructor(config?: EditorConfig|string) { /** @@ -103,6 +99,7 @@ export default class Core { * Resolve this.isReady promise */ onReady(); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 500); }) .catch((error) => { @@ -173,6 +170,7 @@ export default class Core { * * @type {number} */ + // eslint-disable-next-line @typescript-eslint/no-magic-numbers this.config.minHeight = this.config.minHeight !== undefined ? this.config.minHeight : 300; /** diff --git a/src/components/dom.ts b/src/components/dom.ts index 7c907aed..def44edc 100644 --- a/src/components/dom.ts +++ b/src/components/dom.ts @@ -50,7 +50,6 @@ export default class Dom { * @param {string} tagName - new Element tag name * @param {string[]|string} [classNames] - list or name of CSS classname(s) * @param {object} [attributes] - any attributes - * * @returns {HTMLElement} */ public static make(tagName: string, classNames: string | string[] = null, attributes: object = {}): HTMLElement { @@ -75,7 +74,6 @@ export default class Dom { * Creates Text Node with the passed content * * @param {string} content - text content - * * @returns {Text} */ public static text(content: string): Text { @@ -88,7 +86,6 @@ export default class Dom { * @param {string} name - name (id) of icon from sprite * @param {number} [width] - icon width * @param {number} [height] - icon height - * * @returns {SVGElement} */ public static svg(name: string, width = 14, height = 14): SVGElement { @@ -165,7 +162,6 @@ export default class Dom { * * @param {Element} el - element we searching inside. Default - DOM Document * @param {string} selector - searching string - * * @returns {Element} */ public static find(el: Element | Document = document, selector: string): Element { @@ -189,7 +185,6 @@ export default class Dom { * * @param {Element|Document} el - element we searching inside. Default - DOM Document * @param {string} selector - searching string - * * @returns {NodeList} */ public static findAll(el: Element | Document = document, selector: string): NodeList { @@ -230,11 +225,9 @@ export default class Dom { * Leaf is the vertex that doesn't have any child nodes * * @description Method recursively goes throw the all Node until it finds the Leaf - * * @param {Node} node - root Node. From this vertex we start Deep-first search * {@link https://en.wikipedia.org/wiki/Depth-first_search} * @param {boolean} [atLast] - find last text node - * * @returns {Node} - it can be text Node or Element Node, so that caret will able to work with it */ public static getDeepestNode(node: Node, atLast = false): Node { @@ -287,7 +280,6 @@ export default class Dom { * Check if object is DOM node * * @param {*} node - object to check - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -318,7 +310,6 @@ export default class Dom { * Check if passed element is contenteditable * * @param {HTMLElement} element - html element to check - * * @returns {boolean} */ public static isContentEditable(element: HTMLElement): boolean { @@ -329,7 +320,6 @@ export default class Dom { * Checks target if it is native input * * @param {*} target - HTML element or string - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -346,7 +336,6 @@ export default class Dom { * Checks if we can set caret * * @param {HTMLElement} target - target to check - * * @returns {boolean} */ public static canSetCaret(target: HTMLElement): boolean { @@ -377,9 +366,7 @@ export default class Dom { * * @description Method checks simple Node without any childs for emptiness * If you have Node with 2 or more children id depth, you better use {@link Dom#isEmpty} method - * * @param {Node} node - node to check - * * @returns {boolean} true if it is empty */ public static isNodeEmpty(node: Node): boolean { @@ -402,7 +389,6 @@ export default class Dom { * checks node if it is doesn't have any child nodes * * @param {Node} node - node to check - * * @returns {boolean} */ public static isLeaf(node: Node): boolean { @@ -418,7 +404,6 @@ export default class Dom { * {@link https://en.wikipedia.org/wiki/Breadth-first_search} * * @description Pushes to stack all DOM leafs and checks for emptiness - * * @param {Node} node - node to check * @returns {boolean} */ @@ -453,7 +438,6 @@ export default class Dom { * Check if string contains html elements * * @param {string} str - string to check - * * @returns {boolean} */ public static isHTMLString(str: string): boolean { @@ -468,7 +452,6 @@ export default class Dom { * Return length of node`s text content * * @param {Node} node - node with content - * * @returns {number} */ public static getContentLength(node: Node): number { @@ -536,7 +519,6 @@ export default class Dom { * Check if passed content includes only inline elements * * @param {string|HTMLElement} data - element or html string - * * @returns {boolean} */ public static containsOnlyInlineElements(data: string | HTMLElement): boolean { @@ -561,7 +543,6 @@ export default class Dom { * Find and return all block elements in the passed parent (including subtree) * * @param {HTMLElement} parent - root element - * * @returns {HTMLElement[]} */ public static getDeepestBlockElements(parent: HTMLElement): HTMLElement[] { @@ -578,7 +559,6 @@ export default class Dom { * Helper for get holder from {string} or return HTMLElement * * @param {string | HTMLElement} element - holder's id or holder's HTML Element - * * @returns {HTMLElement} */ public static getHolder(element: string | HTMLElement): HTMLElement { @@ -593,7 +573,6 @@ export default class Dom { * Method checks passed Node if it is some extension Node * * @param {Node} node - any node - * * @returns {boolean} */ public static isExtensionNode(node: Node): boolean { @@ -608,7 +587,6 @@ export default class Dom { * Returns true if element is anchor (is A tag) * * @param {Element} element - element to check - * * @returns {boolean} */ public static isAnchor(element: Element): element is HTMLAnchorElement { diff --git a/src/components/domIterator.ts b/src/components/domIterator.ts index d11d3b4d..5c3137b4 100644 --- a/src/components/domIterator.ts +++ b/src/components/domIterator.ts @@ -175,6 +175,7 @@ export default class DomIterator { /** * Focus input with micro-delay to ensure DOM is updated */ + // eslint-disable-next-line @typescript-eslint/no-magic-numbers _.delay(() => SelectionUtils.setCursor(this.items[focusedButtonIndex]), 50)(); } diff --git a/src/components/flipper.ts b/src/components/flipper.ts index ed2df15f..52118b0b 100644 --- a/src/components/flipper.ts +++ b/src/components/flipper.ts @@ -74,7 +74,7 @@ export default class Flipper { /** * Contains list of callbacks to be executed on each flip */ - private flipCallbacks: Array<() => void> = [] + private flipCallbacks: Array<() => void> = []; /** * @param {FlipperOptions} options - different constructing settings diff --git a/src/components/i18n/index.ts b/src/components/i18n/index.ts index c88871b7..b522a365 100644 --- a/src/components/i18n/index.ts +++ b/src/components/i18n/index.ts @@ -21,7 +21,6 @@ export default class I18n { * Perform translation of the string by namespace and a key * * @example I18n.ui(I18nInternalNS.ui.blockTunes.toggler, 'Click to tune') - * * @param internalNamespace - path to translated string in dictionary * @param dictKey - dictionary key. Better to use default locale original text */ diff --git a/src/components/inline-tools/inline-tool-bold.ts b/src/components/inline-tools/inline-tool-bold.ts index a33753de..b1bbfb2b 100644 --- a/src/components/inline-tools/inline-tool-bold.ts +++ b/src/components/inline-tools/inline-tool-bold.ts @@ -61,6 +61,7 @@ export default class BoldInlineTool implements InlineTool { this.nodes.button = document.createElement('button') as HTMLButtonElement; this.nodes.button.type = 'button'; this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers this.nodes.button.appendChild($.svg('bold', 12, 14)); return this.nodes.button; @@ -68,21 +69,17 @@ export default class BoldInlineTool implements InlineTool { /** * Wrap range with tag - * - * @param {Range} range - range to wrap */ - public surround(range: Range): void { + public surround(): void { document.execCommand(this.commandName); } /** * Check selection and set activated state to button if there are tag * - * @param {Selection} selection - selection to check - * * @returns {boolean} */ - public checkState(selection: Selection): boolean { + public checkState(): boolean { const isActive = document.queryCommandState(this.commandName); this.nodes.button.classList.toggle(this.CSS.buttonActive, isActive); diff --git a/src/components/inline-tools/inline-tool-italic.ts b/src/components/inline-tools/inline-tool-italic.ts index da728b81..96105e64 100644 --- a/src/components/inline-tools/inline-tool-italic.ts +++ b/src/components/inline-tools/inline-tool-italic.ts @@ -61,6 +61,7 @@ export default class ItalicInlineTool implements InlineTool { this.nodes.button = document.createElement('button') as HTMLButtonElement; this.nodes.button.type = 'button'; this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers this.nodes.button.appendChild($.svg('italic', 4, 11)); return this.nodes.button; @@ -68,19 +69,15 @@ export default class ItalicInlineTool implements InlineTool { /** * Wrap range with tag - * - * @param {Range} range - range to wrap */ - public surround(range: Range): void { + public surround(): void { document.execCommand(this.commandName); } /** * Check selection and set activated state to button if there are tag - * - * @param {Selection} selection - selection to check */ - public checkState(selection: Selection): boolean { + public checkState(): boolean { const isActive = document.queryCommandState(this.commandName); this.nodes.button.classList.toggle(this.CSS.buttonActive, isActive); diff --git a/src/components/inline-tools/inline-tool-link.ts b/src/components/inline-tools/inline-tool-link.ts index 6c5db6d5..1b8fb27a 100644 --- a/src/components/inline-tools/inline-tool-link.ts +++ b/src/components/inline-tools/inline-tool-link.ts @@ -2,8 +2,8 @@ import SelectionUtils from '../selection'; import $ from '../dom'; import * as _ from '../utils'; -import { InlineTool, SanitizerConfig } from '../../../types'; -import { Notifier, Toolbar, I18n } from '../../../types/api'; +import { API, InlineTool, SanitizerConfig } from '../../../types'; +import { Notifier, Toolbar, I18n, InlineToolbar } from '../../../types/api'; /** * Link Tool @@ -71,9 +71,9 @@ export default class LinkInlineTool implements InlineTool { button: HTMLButtonElement; input: HTMLInputElement; } = { - button: null, - input: null, - }; + button: null, + input: null, + }; /** * SelectionUtils instance @@ -93,7 +93,7 @@ export default class LinkInlineTool implements InlineTool { /** * Available inline toolbar methods (open/close) */ - private inlineToolbar: Toolbar; + private inlineToolbar: InlineToolbar; /** * Notifier API methods @@ -106,9 +106,9 @@ export default class LinkInlineTool implements InlineTool { private i18n: I18n; /** - * @param {API} api - Editor.js API + * @param api - Editor.js API */ - constructor({ api }) { + constructor({ api }: { api: API }) { this.toolbar = api.toolbar; this.inlineToolbar = api.inlineToolbar; this.notifier = api.notifier; @@ -123,7 +123,9 @@ export default class LinkInlineTool implements InlineTool { this.nodes.button = document.createElement('button') as HTMLButtonElement; this.nodes.button.type = 'button'; this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers this.nodes.button.appendChild($.svg('link', 14, 10)); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers this.nodes.button.appendChild($.svg('unlink', 15, 11)); return this.nodes.button; @@ -187,10 +189,8 @@ export default class LinkInlineTool implements InlineTool { /** * Check selection and set activated state to button if there are tag - * - * @param {Selection} selection - selection to check */ - public checkState(selection?: Selection): boolean { + public checkState(): boolean { const anchorTag = this.selection.findParentTag('A'); if (anchorTag) { diff --git a/src/components/modules/api/blocks.ts b/src/components/modules/api/blocks.ts index 57e7b6d5..c5a98941 100644 --- a/src/components/modules/api/blocks.ts +++ b/src/components/modules/api/blocks.ts @@ -58,7 +58,6 @@ export default class BlocksAPI extends Module { * 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); @@ -201,7 +200,6 @@ export default class BlocksAPI extends Module { * * @param {number} index - index of Block to stretch * @param {boolean} status - true to enable, false to disable - * * @deprecated Use BlockAPI interface to stretch Blocks */ public stretchBlock(index: number, status = true): void { @@ -233,6 +231,7 @@ export default class BlocksAPI extends Module { public insert = ( type: string = this.config.defaultBlock, data: BlockToolData = {}, + // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars config: ToolConfig = {}, index?: number, needToFocus?: boolean, @@ -247,7 +246,7 @@ export default class BlocksAPI extends Module { }); return new BlockAPI(insertedBlock); - } + }; /** * Creates data of an empty block with a passed type. @@ -265,14 +264,13 @@ export default class BlocksAPI extends Module { }); return block.data; - } + }; /** * Insert new Block * After set caret to this Block * * @todo remove in 3.0.0 - * * @deprecated with insert() method */ public insertNewBlock(): void { @@ -307,5 +305,5 @@ export default class BlocksAPI extends Module { replace: true, tunes: block.tunes, }); - } + }; } diff --git a/src/components/modules/api/caret.ts b/src/components/modules/api/caret.ts index 63519d24..0e104632 100644 --- a/src/components/modules/api/caret.ts +++ b/src/components/modules/api/caret.ts @@ -27,7 +27,6 @@ export default class CaretAPI extends Module { * * @param {string} position - position where to set caret * @param {number} offset - caret offset - * * @returns {boolean} */ private setToFirstBlock = (position: string = this.Editor.Caret.positions.DEFAULT, offset = 0): boolean => { @@ -38,14 +37,13 @@ export default class CaretAPI extends Module { this.Editor.Caret.setToBlock(this.Editor.BlockManager.firstBlock, position, offset); return true; - } + }; /** * Sets caret to the last Block * * @param {string} position - position where to set caret * @param {number} offset - caret offset - * * @returns {boolean} */ private setToLastBlock = (position: string = this.Editor.Caret.positions.DEFAULT, offset = 0): boolean => { @@ -56,14 +54,13 @@ export default class CaretAPI extends Module { this.Editor.Caret.setToBlock(this.Editor.BlockManager.lastBlock, position, offset); return true; - } + }; /** * Sets caret to the previous Block * * @param {string} position - position where to set caret * @param {number} offset - caret offset - * * @returns {boolean} */ private setToPreviousBlock = ( @@ -77,14 +74,13 @@ export default class CaretAPI extends Module { this.Editor.Caret.setToBlock(this.Editor.BlockManager.previousBlock, position, offset); return true; - } + }; /** * Sets caret to the next Block * * @param {string} position - position where to set caret * @param {number} offset - caret offset - * * @returns {boolean} */ private setToNextBlock = (position: string = this.Editor.Caret.positions.DEFAULT, offset = 0): boolean => { @@ -95,7 +91,7 @@ export default class CaretAPI extends Module { this.Editor.Caret.setToBlock(this.Editor.BlockManager.nextBlock, position, offset); return true; - } + }; /** * Sets caret to the Block by passed index @@ -103,7 +99,6 @@ export default class CaretAPI extends Module { * @param {number} index - index of Block where to set caret * @param {string} position - position where to set caret * @param {number} offset - caret offset - * * @returns {boolean} */ private setToBlock = ( @@ -118,13 +113,12 @@ export default class CaretAPI extends Module { this.Editor.Caret.setToBlock(this.Editor.BlockManager.blocks[index], position, offset); return true; - } + }; /** * Sets caret to the Editor * * @param {boolean} atEnd - if true, set Caret to the end of the Editor - * * @returns {boolean} */ private focus = (atEnd = false): boolean => { @@ -133,5 +127,5 @@ export default class CaretAPI extends Module { } return this.setToFirstBlock(this.Editor.Caret.positions.START); - } + }; } diff --git a/src/components/modules/api/notifier.ts b/src/components/modules/api/notifier.ts index dae16ba8..85b457d4 100644 --- a/src/components/modules/api/notifier.ts +++ b/src/components/modules/api/notifier.ts @@ -1,4 +1,3 @@ -import EventsDispatcher from '../../utils/events'; import { Notifier as INotifier } from '../../../../types/api'; import Notifier from '../../utils/notifier'; import { ConfirmNotifierOptions, NotifierOptions, PromptNotifierOptions } from 'codex-notifier'; @@ -15,10 +14,9 @@ export default class NotifierAPI extends Module { private notifier: Notifier; /** - * @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/readonly.ts b/src/components/modules/api/readonly.ts index 7b804839..5c527052 100644 --- a/src/components/modules/api/readonly.ts +++ b/src/components/modules/api/readonly.ts @@ -25,7 +25,6 @@ export default class ReadOnlyAPI extends Module { * Set or toggle read-only state * * @param {boolean|undefined} state - set or toggle state - * * @returns {boolean} current value */ public toggle(state?: boolean): Promise { diff --git a/src/components/modules/api/sanitizer.ts b/src/components/modules/api/sanitizer.ts index 79c91656..1f1a259c 100644 --- a/src/components/modules/api/sanitizer.ts +++ b/src/components/modules/api/sanitizer.ts @@ -24,7 +24,6 @@ export default class SanitizerAPI extends Module { * * @param {string} taintString - what to sanitize * @param {SanitizerConfig} config - sanitizer config - * * @returns {string} */ public clean(taintString: string, config: SanitizerConfig): string { diff --git a/src/components/modules/api/selection.ts b/src/components/modules/api/selection.ts index 6cd7bcc1..a796ddd1 100644 --- a/src/components/modules/api/selection.ts +++ b/src/components/modules/api/selection.ts @@ -24,7 +24,6 @@ export default class SelectionAPI extends Module { * * @param {string} tagName - tag to find * @param {string} className - tag's class name - * * @returns {HTMLElement|null} */ public findParentTag(tagName: string, className?: string): HTMLElement | null { diff --git a/src/components/modules/blockEvents.ts b/src/components/modules/blockEvents.ts index 7aa62018..a0ebea77 100644 --- a/src/components/modules/blockEvents.ts +++ b/src/components/modules/blockEvents.ts @@ -1,5 +1,5 @@ /** - * Contains keyboard and mouse events binded on each Block by Block Manager + * Contains keyboard and mouse events bound on each Block by Block Manager */ import Module from '../__module'; import * as _ from '../utils'; @@ -233,7 +233,7 @@ export default class BlockEvents extends Module { } /** - * Allow to create linebreaks by Shift+Enter + * Allow to create line breaks by Shift+Enter */ if (event.shiftKey) { return; @@ -424,6 +424,7 @@ export default class BlockEvents extends Module { if (this.Editor.BlockManager.currentBlock) { this.Editor.BlockManager.currentBlock.updateCurrentInput(); } + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 20)(); } @@ -482,6 +483,7 @@ export default class BlockEvents extends Module { if (this.Editor.BlockManager.currentBlock) { this.Editor.BlockManager.currentBlock.updateCurrentInput(); } + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 20)(); } diff --git a/src/components/modules/blockManager.ts b/src/components/modules/blockManager.ts index 9ac893bc..fb5f3039 100644 --- a/src/components/modules/blockManager.ts +++ b/src/components/modules/blockManager.ts @@ -1,9 +1,7 @@ /** * @class BlockManager * @classdesc Manage editor`s blocks storage and appearance - * * @module BlockManager - * * @version 2.0.0 */ import Block, { BlockToolAPI } from '../block'; @@ -184,9 +182,7 @@ export default class BlockManager extends Module { * this._blocks[0] = new Block(...); * * block = this._blocks[0]; - * * @todo proxy the enumerate method - * * @type {Proxy} * @private */ @@ -229,7 +225,6 @@ export default class BlockManager extends Module { * @param {string} options.tool - tools passed in editor config {@link EditorConfig#tools} * @param {string} [options.id] - unique id for this block * @param {BlockToolData} [options.data] - constructor params - * * @returns {Block} */ public composeBlock({ @@ -266,7 +261,6 @@ export default class BlockManager extends Module { * @param {number} [options.index] - index where to insert new Block * @param {boolean} [options.needToFocus] - flag shows if needed to update current Block index * @param {boolean} [options.replace] - flag shows if block by passed index should be replaced with inserted one - * * @returns {Block} */ public insert({ @@ -333,7 +327,6 @@ export default class BlockManager extends Module { * @param {object} options - replace options * @param {string} options.tool — plugin name * @param {BlockToolData} options.data — plugin data - * * @returns {Block} */ public replace({ @@ -381,7 +374,6 @@ export default class BlockManager extends Module { * @param {boolean} needToFocus - if true, updates current Block index * * TODO: Remove method and use insert() with index instead (?) - * * @returns {Block} inserted Block */ public insertDefaultBlockAtIndex(index: number, needToFocus = false): Block { @@ -427,7 +419,6 @@ export default class BlockManager extends Module { * * @param {Block} targetBlock - previous block will be append to this block * @param {Block} blockToMerge - block that will be merged with target block - * * @returns {Promise} - the sequence that can be continued */ public async mergeBlocks(targetBlock: Block, blockToMerge: Block): Promise { @@ -559,7 +550,6 @@ export default class BlockManager extends Module { * Returns Block by passed index * * @param {number} index - index to get. -1 to get last - * * @returns {Block} */ public getBlockByIndex(index): Block { @@ -583,7 +573,6 @@ export default class BlockManager extends Module { * Returns the Block by passed id * * @param id - id of block to get - * * @returns {Block} */ public getBlockById(id): Block | undefined { @@ -594,8 +583,6 @@ export default class BlockManager extends Module { * Get Block instance by html element * * @param {Node} element - html element to get Block by - * - * @returns {Block} */ public getBlock(element: HTMLElement): Block { if (!$.isElement(element) as boolean) { @@ -690,7 +677,6 @@ export default class BlockManager extends Module { * Return block which contents passed node * * @param {Node} childNode - node to get Block by - * * @returns {Block} */ public getBlockByChildNode(childNode: Node): Block { @@ -711,7 +697,6 @@ export default class BlockManager extends Module { * * @param {number} fromIndex - index of first block * @param {number} toIndex - index of second block - * * @deprecated — use 'move' instead */ public swap(fromIndex, toIndex): void { @@ -855,7 +840,6 @@ export default class BlockManager extends Module { * Validates that the given index is not lower than 0 or higher than the amount of blocks * * @param {number} index - index of blocks array to validate - * * @returns {boolean} */ private validateIndex(index: number): boolean { diff --git a/src/components/modules/blockSelection.ts b/src/components/modules/blockSelection.ts index 682b7aeb..c0e552a7 100644 --- a/src/components/modules/blockSelection.ts +++ b/src/components/modules/blockSelection.ts @@ -1,7 +1,6 @@ /** * @class BlockSelection * @classdesc Manages Block selection with shortcut CMD+A - * * @module BlockSelection * @version 1.0.0 */ @@ -190,10 +189,8 @@ export default class BlockSelection extends Module { * * - Remove all ranges * - Unselect all Blocks - * - * @param {boolean} readOnlyEnabled - "read only" state */ - public toggleReadOnly(readOnlyEnabled: boolean): void { + public toggleReadOnly(): void { SelectionUtils.get() .removeAllRanges(); @@ -250,12 +247,13 @@ export default class BlockSelection extends Module { const eventKey = (reason as KeyboardEvent).key; /** - * If event.key length >1 that means key is special (e.g. Enter or Dead or Unidentifier). + * If event.key length >1 that means key is special (e.g. Enter or Dead or Unidentified). * So we use empty string * * @see https://developer.mozilla.org/ru/docs/Web/API/KeyboardEvent/key */ Caret.insertContentAtCaretPosition(eventKey.length > 1 ? '' : eventKey); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 20)(); } @@ -283,7 +281,6 @@ export default class BlockSelection extends Module { * Reduce each Block and copy its content * * @param {ClipboardEvent} e - copy/cut event - * * @returns {Promise} */ public copySelectedBlocks(e: ClipboardEvent): Promise { diff --git a/src/components/modules/caret.ts b/src/components/modules/caret.ts index 94b54711..0494dcaf 100644 --- a/src/components/modules/caret.ts +++ b/src/components/modules/caret.ts @@ -3,9 +3,7 @@ * @classdesc Contains methods for working Caret * * Uses Range methods to manipulate with caret - * * @module Caret - * * @version 2.0.0 */ @@ -110,7 +108,7 @@ export default class Caret extends Module { * Workaround case when block starts with several
's (created by SHIFT+ENTER) * * @see https://github.com/codex-team/editor.js/issues/726 - * We need to allow to delete such linebreaks, so in this case caret IS NOT AT START + * We need to allow to delete such line breaks, so in this case caret IS NOT AT START */ const regularLineBreak = $.isLineBreakTag(node); /** @@ -162,7 +160,7 @@ export default class Caret extends Module { * In this case, anchor node has ELEMENT_NODE node type. * Anchor offset shows amount of children between start of the element and caret position. * - * So we use child with anchofocusOffset - 1 as new focusNode. + * So we use child with focusOffset - 1 as new focusNode. */ let focusOffset = selection.focusOffset; @@ -262,6 +260,7 @@ export default class Caret extends Module { */ _.delay(() => { this.set(nodeToSet as HTMLElement, offset); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 20)(); BlockManager.setCurrentBlockByChildNode(block.holder); @@ -509,6 +508,7 @@ export default class Caret extends Module { newRange.selectNode(shadowCaret); newRange.extractContents(); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 50); } @@ -549,7 +549,7 @@ export default class Caret extends Module { } /** - * Get all first-level (first child of [contenteditabel]) siblings from passed node + * Get all first-level (first child of [contenteditable]) siblings from passed node * Then you can check it for emptiness * * @example @@ -562,10 +562,8 @@ export default class Caret extends Module { *

| right first-level siblings *

| * - * * @param {HTMLElement} from - element from which siblings should be searched * @param {'left' | 'right'} direction - direction of search - * * @returns {HTMLElement[]} */ private getHigherLevelSiblings(from: HTMLElement, direction?: 'left' | 'right'): HTMLElement[] { diff --git a/src/components/modules/crossBlockSelection.ts b/src/components/modules/crossBlockSelection.ts index fa8c4962..fc0c40c9 100644 --- a/src/components/modules/crossBlockSelection.ts +++ b/src/components/modules/crossBlockSelection.ts @@ -176,7 +176,7 @@ export default class CrossBlockSelection extends Module { private onMouseUp = (): void => { this.listeners.off(document, 'mouseover', this.onMouseOver); this.listeners.off(document, 'mouseup', this.onMouseUp); - } + }; /** * Mouse over event handler @@ -222,7 +222,7 @@ export default class CrossBlockSelection extends Module { this.toggleBlocksSelectedState(relatedBlock, targetBlock); this.lastSelectedBlock = targetBlock; - } + }; /** * Change blocks selection state between passed two blocks. diff --git a/src/components/modules/paste.ts b/src/components/modules/paste.ts index 5a8d12f8..3f313a67 100644 --- a/src/components/modules/paste.ts +++ b/src/components/modules/paste.ts @@ -105,9 +105,7 @@ interface PasteData { /** * @class Paste * @classdesc Contains methods to handle paste on editor - * * @module Paste - * * @version 2.0.0 */ export default class Paste extends Module { @@ -316,7 +314,7 @@ export default class Paste extends Module { e ); } - } + }; /** * Get tags name list from either tag name or sanitization config. @@ -455,7 +453,6 @@ export default class Paste extends Module { * Check if browser behavior suits better * * @param {EventTarget} element - element where content has been pasted - * * @returns {boolean} */ private isNativeBehaviour(element: EventTarget): boolean { @@ -489,7 +486,7 @@ export default class Paste extends Module { BlockManager.clearFocused(); Toolbar.close(); - } + }; /** * Get files from data transfer object and insert related Tools @@ -528,6 +525,7 @@ export default class Paste extends Module { const foundConfig = Object .entries(this.toolsFiles) + // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars .find(([toolName, { mimeTypes, extensions } ]) => { const [fileType, fileSubtype] = file.type.split('/'); @@ -560,7 +558,6 @@ export default class Paste extends Module { * Split HTML string to blocks and return it as array of Block data * * @param {string} innerHTML - html string to process - * * @returns {PasteData[]} */ private processHTML(innerHTML: string): PasteData[] { @@ -576,7 +573,6 @@ export default class Paste extends Module { * - https://github.com/codex-team/editor.js/issues/1427 * - https://github.com/codex-team/editor.js/issues/1244 * - https://github.com/codex-team/editor.js/issues/740 - * */ const wrapper = $.make('DIV'); @@ -689,7 +685,6 @@ export default class Paste extends Module { * Split plain text by new line symbols and return it as array of Block data * * @param {string} plain - string to process - * * @returns {PasteData[]} */ private processPlain(plain: string): PasteData[] { @@ -725,7 +720,7 @@ export default class Paste extends Module { /** * Process paste of single Block tool content * - * @param {PasteData} dataToInsert - data of Block to inseret + * @param {PasteData} dataToInsert - data of Block to insert */ private async processSingleBlock(dataToInsert: PasteData): Promise { const { Caret, BlockManager } = this.Editor; @@ -795,7 +790,6 @@ export default class Paste extends Module { * Get patterns` matches * * @param {string} text - text to process - * * @returns {Promise<{event: PasteEvent, tool: string}>} */ private async processPattern(text: string): Promise<{ event: PasteEvent; tool: string }> { @@ -829,7 +823,6 @@ export default class Paste extends Module { * * @param {PasteData} data - data to insert * @param {boolean} canReplaceCurrentBlock - if true and is current Block is empty, will replace current Block - * * @returns {void} */ private insertBlock(data: PasteData, canReplaceCurrentBlock = false): void { @@ -853,7 +846,6 @@ export default class Paste extends Module { * Insert data passed as application/x-editor-js JSON * * @param {Array} blocks — Blocks' data to insert - * * @returns {void} */ private insertEditorJSData(blocks: Pick[]): void { @@ -887,8 +879,6 @@ export default class Paste extends Module { * @param {Node} node - current node * @param {Node[]} nodes - processed nodes * @param {Node} destNode - destination node - * - * @returns {Node[]} */ private processElementNode(node: Node, nodes: Node[], destNode: Node): Node[] | void { const tags = Object.keys(this.toolsTags); @@ -931,7 +921,6 @@ export default class Paste extends Module { * 2. Document Fragments contained text and markup tags like a, b, i etc. * * @param {Node} wrapper - wrapper of paster HTML content - * * @returns {Node[]} */ private getNodes(wrapper: Node): Node[] { diff --git a/src/components/modules/readonly.ts b/src/components/modules/readonly.ts index 77a5fc8c..973f459b 100644 --- a/src/components/modules/readonly.ts +++ b/src/components/modules/readonly.ts @@ -6,9 +6,7 @@ import { CriticalError } from '../errors/critical'; * * Has one important method: * - {Function} toggleReadonly - Set read-only mode or toggle current state - * * @version 1.0.0 - * * @typedef {ReadOnly} ReadOnly * @property {boolean} readOnlyEnabled - read-only state */ diff --git a/src/components/modules/rectangleSelection.ts b/src/components/modules/rectangleSelection.ts index 03f249f7..d545036d 100644 --- a/src/components/modules/rectangleSelection.ts +++ b/src/components/modules/rectangleSelection.ts @@ -1,7 +1,6 @@ /** * @class RectangleSelection * @classdesc Manages Block selection with mouse - * * @module RectangleSelection * @version 1.0.0 */ @@ -188,6 +187,7 @@ export default class RectangleSelection extends Module { this.listeners.on(document.body, 'mousemove', _.throttle((mouseEvent: MouseEvent) => { this.processMouseMove(mouseEvent); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 10), { passive: true, }); @@ -198,6 +198,7 @@ export default class RectangleSelection extends Module { this.listeners.on(window, 'scroll', _.throttle((mouseEvent: MouseEvent) => { this.processScroll(mouseEvent); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 10), { passive: true, }); @@ -290,7 +291,7 @@ export default class RectangleSelection extends Module { /** * Generates required HTML elements * - * @returns {object} + * @returns {Object} */ private genHTML(): {container: Element; overlay: Element} { const { UI } = this.Editor; diff --git a/src/components/modules/renderer.ts b/src/components/modules/renderer.ts index 6f800069..fd794354 100644 --- a/src/components/modules/renderer.ts +++ b/src/components/modules/renderer.ts @@ -8,7 +8,6 @@ import BlockTool from '../tools/block'; * * @module Renderer * @author CodeX Team - * * @version 2.0.0 */ export default class Renderer extends Module { @@ -37,7 +36,6 @@ export default class Renderer extends Module { * } * }, * ] - * */ /** @@ -68,7 +66,6 @@ export default class Renderer extends Module { * Insert block to working zone * * @param {object} item - Block data to insert - * * @returns {Promise} */ public async insertBlock(item: OutputBlockData): Promise { diff --git a/src/components/modules/saver.ts b/src/components/modules/saver.ts index be5a16a5..28084f06 100644 --- a/src/components/modules/saver.ts +++ b/src/components/modules/saver.ts @@ -16,7 +16,6 @@ declare const VERSION: string; /** * @classdesc This method reduces all Blocks asyncronically and calls Block's save method to extract data - * * @typedef {Saver} Saver * @property {Element} html - Editor HTML content * @property {string} json - Editor JSON output diff --git a/src/components/modules/toolbar/blockSettings.ts b/src/components/modules/toolbar/blockSettings.ts index 16f72e36..0cc5b498 100644 --- a/src/components/modules/toolbar/blockSettings.ts +++ b/src/components/modules/toolbar/blockSettings.ts @@ -1,6 +1,5 @@ import Module from '../../__module'; import $ from '../../dom'; -import * as _ from '../../utils'; import SelectionUtils from '../../selection'; import Block from '../../block'; import Popover, { PopoverEvent } from '../../utils/popover'; @@ -192,5 +191,5 @@ export default class BlockSettings extends Module { */ private onOverlayClicked = (): void => { this.close(); - } + }; } diff --git a/src/components/modules/toolbar/conversion.ts b/src/components/modules/toolbar/conversion.ts index 30f1bd7d..754c7212 100644 --- a/src/components/modules/toolbar/conversion.ts +++ b/src/components/modules/toolbar/conversion.ts @@ -50,7 +50,7 @@ export default class ConversionToolbar extends Module { /** * Available tools data */ - private tools: {name: string; toolboxItem: ToolboxConfigEntry; button: HTMLElement}[] = [] + private tools: {name: string; toolboxItem: ToolboxConfigEntry; button: HTMLElement}[] = []; /** * Instance of class that responses for leafing buttons by arrows/tab @@ -184,8 +184,6 @@ export default class ConversionToolbar extends Module { public async replaceWithBlock(replacingToolName: string, blockDataOverrides?: BlockToolData): Promise { /** * At first, we get current Block data - * - * @type {BlockToolConstructable} */ const currentBlockTool = this.Editor.BlockManager.currentBlock.tool; const savedBlock = await this.Editor.BlockManager.currentBlock.save() as SavedData; @@ -193,8 +191,6 @@ export default class ConversionToolbar extends Module { /** * Getting a class of replacing Tool - * - * @type {BlockToolConstructable} */ const replacingTool = this.Editor.Tools.blockTools.get(replacingToolName); @@ -265,6 +261,7 @@ export default class ConversionToolbar extends Module { _.delay(() => { this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 10)(); } diff --git a/src/components/modules/toolbar/index.ts b/src/components/modules/toolbar/index.ts index 5c469fa0..feb30a7a 100644 --- a/src/components/modules/toolbar/index.ts +++ b/src/components/modules/toolbar/index.ts @@ -12,21 +12,19 @@ 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 - Keyboard-only mode bug: * press Tab, flip to the Checkbox. press Enter (block will be added), Press Tab * (Block Tunes will be opened with Move up focused), press Enter, press Tab ———— both Block Tunes and Toolbox will be opened - * - * @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: + * @todo TEST CASE - show toggler after opening and closing the Inline Toolbar + * @todo TEST CASE - Click outside Editor holder should close Toolbar and Clear Focused blocks + * @todo TEST CASE - Click inside Editor holder should close Toolbar and Clear Focused blocks + * @todo TEST CASE - 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 + * @todo TEST CASE - Toolbar should be closed on the Cross Block Selection + * @todo TEST CASE - Toolbar should be closed on the Rectangle Selection + * @todo TEST CASE - If Block Settings or Toolbox are opened, the Toolbar should not be moved by Bocks hovering */ /** @@ -78,7 +76,6 @@ interface ToolbarNodes { * * @class * @classdesc Toolbar module - * * @typedef {Toolbar} Toolbar * @property {object} nodes - Toolbar nodes * @property {Element} nodes.wrapper - Toolbar main element @@ -300,12 +297,8 @@ export default class Toolbar extends Module { * * @param {boolean} withBlockActions - by default, Toolbar opens with Block Actions. * This flag allows to open Toolbar without Actions. - * @param {boolean} needToCloseToolbox - by default, Toolbar will be moved with opening - * (by click on Block, or by enter) - * with closing Toolbox and Block Settings - * This flag allows to open Toolbar with Toolbox */ - private open(withBlockActions = true, needToCloseToolbox = true): void { + private open(withBlockActions = true): void { _.delay(() => { this.nodes.wrapper.classList.add(this.CSS.toolbarOpened); @@ -314,6 +307,7 @@ export default class Toolbar extends Module { } else { this.blockActions.hide(); } + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 50)(); } @@ -342,6 +336,7 @@ export default class Toolbar extends Module { * - Toolbox */ this.nodes.plusButton = $.make('div', this.CSS.plusButton); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers $.append(this.nodes.plusButton, $.svg('plus', 16, 16)); $.append(this.nodes.actions, this.nodes.plusButton); @@ -371,6 +366,7 @@ export default class Toolbar extends Module { * - Settings Panel */ this.nodes.settingsToggler = $.make('span', this.CSS.settingsToggler); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers const settingsIcon = $.svg('dots', 16, 16); $.append(this.nodes.settingsToggler, settingsIcon); @@ -478,7 +474,7 @@ export default class Toolbar extends Module { }, true); /** - * Subscribe to the 'block-hovered' event if currenct view is not mobile + * Subscribe to the 'block-hovered' event if current view is not mobile * * @see https://github.com/codex-team/editor.js/issues/1972 */ diff --git a/src/components/modules/toolbar/inline.ts b/src/components/modules/toolbar/inline.ts index 1a4b6d06..e8165e2b 100644 --- a/src/components/modules/toolbar/inline.ts +++ b/src/components/modules/toolbar/inline.ts @@ -280,7 +280,7 @@ export default class InlineToolbar extends Module { /** * Check if node is contained by Inline Toolbar * - * @param {Node} node — node to chcek + * @param {Node} node — node to check */ public containsNode(node: Node): boolean { return this.nodes.wrapper.contains(node); @@ -322,7 +322,7 @@ export default class InlineToolbar extends Module { const isClickedOnActionsWrapper = (event.target as Element).closest(`.${this.CSS.actionsWrapper}`); // If click is on actions wrapper, - // do not prevent default behaviour because actions might include interactive elements + // do not prevent default behavior because actions might include interactive elements if (!isClickedOnActionsWrapper) { event.preventDefault(); } @@ -428,6 +428,7 @@ export default class InlineToolbar extends Module { this.nodes.conversionToggler = $.make('div', this.CSS.conversionToggler); this.nodes.conversionTogglerContent = $.make('div', this.CSS.conversionTogglerContent); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers const icon = $.svg('toggler-down', 13, 13); this.nodes.conversionToggler.appendChild(this.nodes.conversionTogglerContent); diff --git a/src/components/modules/tools.ts b/src/components/modules/tools.ts index 5ff3cf7a..e46c9feb 100644 --- a/src/components/modules/tools.ts +++ b/src/components/modules/tools.ts @@ -21,17 +21,8 @@ import ToolsCollection from '../tools/collection'; * Creates Instances from Plugins and binds external config to the instances */ -type ToolClass = BlockTool | InlineTool | BlockTune; - /** - * Class properties: - * - * @typedef {Tools} Tools - * @property {Tools[]} toolsAvailable - available Tools - * @property {Tools[]} toolsUnavailable - unavailable Tools - * @property {object} toolsClasses - all classes - * @property {object} toolsSettings - Tools settings - * @property {EditorConfig} config - Editor config + * Modules that works with tools classes */ export default class Tools extends Module { /** @@ -44,8 +35,6 @@ export default class Tools extends Module { /** * Returns available Tools - * - * @returns {object} */ public get available(): ToolsCollection { return this.toolsAvailable; @@ -53,8 +42,6 @@ export default class Tools extends Module { /** * Returns unavailable Tools - * - * @returns {Tool[]} */ public get unavailable(): ToolsCollection { return this.toolsUnavailable; @@ -62,8 +49,6 @@ export default class Tools extends Module { /** * Return Tools for the Inline Toolbar - * - * @returns {object} - object of Inline Tool's classes */ public get inlineTools(): ToolsCollection { return this.available.inlineTools; diff --git a/src/components/modules/ui.ts b/src/components/modules/ui.ts index ead5c9ba..35f590e9 100644 --- a/src/components/modules/ui.ts +++ b/src/components/modules/ui.ts @@ -16,6 +16,7 @@ import * as _ from '../utils'; import Selection from '../selection'; import Block from '../block'; import Flipper from '../flipper'; +import { mobileScreenBreakpoint } from '../utils'; /** * HTML Elements used for UI @@ -29,14 +30,12 @@ interface UINodes { /** * @class - * * @classdesc Makes Editor.js UI: * * * * * - * * @typedef {UI} UI * @property {EditorConfig} config - editor configuration {@link EditorJS#configuration} * @property {object} Editor - available editor modules {@link EditorJS#moduleInstances} @@ -125,6 +124,7 @@ export default class UI extends Module { */ private resizeDebouncer: () => void = _.debounce(() => { this.windowResize(); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 200); /** @@ -235,12 +235,15 @@ export default class UI extends Module { return true; } - return Object.entries(this.Editor).filter(([moduleName, moduleClass]) => { + /* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */ + return Object.entries(this.Editor).filter(([_moduleName, moduleClass]) => { return moduleClass.flipper instanceof Flipper; }) - .some(([moduleName, moduleClass]) => { + .some(([_moduleName, moduleClass]) => { return moduleClass.flipper.hasFocus(); }); + + /* eslint-enable @typescript-eslint/no-unused-vars, no-unused-vars */ } /** @@ -266,7 +269,7 @@ export default class UI extends Module { * Check for mobile mode and cache a result */ private checkIsMobile(): void { - this.isMobile = window.innerWidth < 650; + this.isMobile = window.innerWidth < mobileScreenBreakpoint; } /** @@ -364,8 +367,8 @@ export default class UI extends Module { /** * Handle selection change to manipulate Inline Toolbar appearance */ - this.readOnlyMutableListeners.on(document, 'selectionchange', (event: Event) => { - this.selectionChanged(event); + this.readOnlyMutableListeners.on(document, 'selectionchange', () => { + this.selectionChanged(); }, true); this.readOnlyMutableListeners.on(window, 'resize', () => { @@ -412,6 +415,7 @@ export default class UI extends Module { this.eventsDispatcher.emit(this.events.blockHovered, { block: this.Editor.BlockManager.getBlockByChildNode(hoveredBlock), }); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 20), { passive: true, }); @@ -726,7 +730,6 @@ export default class UI extends Module { * All clicks on the redactor zone * * @param {MouseEvent} event - click event - * * @description * - By clicks on the Editor's bottom zone: * - if last Block is empty, set a Caret to this @@ -804,10 +807,8 @@ export default class UI extends Module { /** * Handle selection changes on mobile devices * Uses for showing the Inline Toolbar - * - * @param {Event} event - selection event */ - private selectionChanged(event: Event): void { + private selectionChanged(): void { const { CrossBlockSelection, BlockSelection } = this.Editor; const focusedElement = Selection.anchorElement; diff --git a/src/components/polyfills.ts b/src/components/polyfills.ts index 42b86a05..d6f96aa1 100644 --- a/src/components/polyfills.ts +++ b/src/components/polyfills.ts @@ -19,7 +19,6 @@ interface Element { * otherwise, returns false. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill} - * * @param {string} s - selector */ if (!Element.prototype.matches) { @@ -46,7 +45,6 @@ if (!Element.prototype.matches) { * If there isn't such an ancestor, it returns null. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill} - * * @param {string} s - selector */ if (!Element.prototype.closest) { @@ -76,7 +74,6 @@ if (!Element.prototype.closest) { * DOMString objects are inserted as equivalent Text nodes. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/prepend#Polyfill} - * * @param {Node | Node[] | string | string[]} nodes - nodes to prepend */ if (!Element.prototype.prepend) { diff --git a/src/components/selection.ts b/src/components/selection.ts index d4bbcbf9..0a4f1f0a 100644 --- a/src/components/selection.ts +++ b/src/components/selection.ts @@ -146,7 +146,7 @@ export default class SelectionUtils { /** * Check if passed selection is at Editor's zone * - * @param selection - Selectoin object to check + * @param selection - Selection object to check */ public static isSelectionAtEditor(selection: Selection): boolean { if (!selection) { @@ -326,8 +326,6 @@ export default class SelectionUtils { * * @param element - element where to set focus * @param offset - offset of cursor - * - * @returns {DOMRect} of range */ public static setCursor(element: HTMLElement, offset = 0): DOMRect { const range = document.createRange(); @@ -452,7 +450,6 @@ export default class SelectionUtils { * @param {string} tagName - tag to found * @param {string} [className] - tag's class name * @param {number} [searchDepth] - count of tags that can be included. For better performance. - * * @returns {HTMLElement|null} */ public findParentTag(tagName: string, className?: string, searchDepth = 10): HTMLElement | null { @@ -526,7 +523,7 @@ export default class SelectionUtils { /** * Expands selection range to the passed parent node * - * @param {HTMLElement} element - element which contents should be selcted + * @param {HTMLElement} element - element which contents should be selected */ public expandToTag(element: HTMLElement): void { const selection = window.getSelection(); diff --git a/src/components/tools/base.ts b/src/components/tools/base.ts index a4147979..f89345a9 100644 --- a/src/components/tools/base.ts +++ b/src/components/tools/base.ts @@ -67,11 +67,11 @@ export enum CommonInternalSettings { } /** - * Enum of Tool optoins provided by Block Tool + * Enum of Tool options provided by Block Tool */ export enum InternalBlockToolSettings { /** - * Is linebreaks enabled for Tool + * Is line breaks enabled for Tool */ IsEnabledLineBreaks = 'enableLineBreaks', /** @@ -116,7 +116,7 @@ export enum InternalTuneSettings { IsTune = 'isTune', } -export type ToolOptions = Omit +export type ToolOptions = Omit; interface ConstructorOptions { name: string; @@ -174,8 +174,7 @@ export default abstract class BaseTool { /** * @class - * - * @param {ConstructorOptions} - Constructor options + * @param {ConstructorOptions} options - Constructor options */ constructor({ name, diff --git a/src/components/tools/factory.ts b/src/components/tools/factory.ts index f994d396..b00427b0 100644 --- a/src/components/tools/factory.ts +++ b/src/components/tools/factory.ts @@ -29,7 +29,6 @@ export default class ToolsFactory { /** * @class - * * @param config - tools config * @param editorConfig - EditorJS config * @param api - EditorJS API module diff --git a/src/components/ui/toolbox.ts b/src/components/ui/toolbox.ts index e213ac9a..6485f7e0 100644 --- a/src/components/ui/toolbox.ts +++ b/src/components/ui/toolbox.ts @@ -36,7 +36,7 @@ export enum ToolboxEvent { /** * Available i18n dict keys that should be passed to the constructor */ -type toolboxTextLabelsKeys = 'filter' | 'nothingFound'; +type ToolboxTextLabelsKeys = 'filter' | 'nothingFound'; /** * Toolbox @@ -80,7 +80,7 @@ export default class Toolbox extends EventsDispatcher { /** * Text labels used in the Toolbox. Should be passed from the i18n module */ - private i18nLabels: Record; + private i18nLabels: Record; /** * Current module HTML Elements @@ -88,13 +88,13 @@ export default class Toolbox extends EventsDispatcher { private nodes: { toolbox: HTMLElement; } = { - toolbox: null, - }; + toolbox: null, + }; /** * CSS styles * - * @returns {object.} + * @returns {Object} */ private static get CSS(): { [name: string]: string } { return { @@ -114,7 +114,7 @@ export default class Toolbox extends EventsDispatcher { * @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, i18nLabels }: {api: API; tools: ToolsCollection; i18nLabels: Record}) { + constructor({ api, tools, i18nLabels }: {api: API; tools: ToolsCollection; i18nLabels: Record}) { super(); this.api = api; @@ -219,7 +219,7 @@ export default class Toolbox extends EventsDispatcher { */ private onOverlayClicked = (): void => { this.close(); - } + }; /** * Returns list of tools that enables the Toolbox (by specifying the 'toolbox' getter) @@ -259,7 +259,7 @@ export default class Toolbox extends EventsDispatcher { icon: toolboxItem.icon, label: I18n.t(I18nInternalNS.toolNames, toolboxItem.title || _.capitalize(tool.name)), name: tool.name, - onActivate: (e): void => { + onActivate: (): void => { this.toolButtonActivated(tool.name, toolboxItem.data); }, secondaryLabel: tool.shortcut ? _.beautifyShortcut(tool.shortcut) : '', diff --git a/src/components/utils.ts b/src/components/utils.ts index f8e2fe0b..a0bd2666 100644 --- a/src/components/utils.ts +++ b/src/components/utils.ts @@ -24,7 +24,6 @@ declare const VERSION: string; * @typedef {object} ChainData * @property {object} data - data that will be passed to the success or fallback * @property {Function} function - function's that must be called asynchronously - * * @interface ChainData */ export interface ChainData { @@ -38,7 +37,7 @@ export interface ChainData { */ /** - * Returns basic keycodes as constants + * Returns basic key codes as constants * * @returns {{}} */ @@ -178,7 +177,6 @@ export const logLabeled = _log.bind(window, true); * Return string representation of the object type * * @param {*} object - object to get type - * * @returns {string} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -190,7 +188,6 @@ export function typeOf(object: any): string { * Check if passed variable is a function * * @param {*} fn - function to check - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -202,7 +199,6 @@ export function isFunction(fn: any): fn is (...args: any[]) => any { * Checks if passed argument is an object * * @param {*} v - object to check - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -214,7 +210,6 @@ export function isObject(v: any): v is object { * Checks if passed argument is a string * * @param {*} v - variable to check - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -226,7 +221,6 @@ export function isString(v: any): v is string { * Checks if passed argument is boolean * * @param {*} v - variable to check - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -238,7 +232,6 @@ export function isBoolean(v: any): v is boolean { * Checks if passed argument is number * * @param {*} v - variable to check - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -250,7 +243,6 @@ export function isNumber(v: any): v is number { * Checks if passed argument is undefined * * @param {*} v - variable to check - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -262,7 +254,6 @@ export function isUndefined(v: any): v is undefined { * Check if passed function is a class * * @param {Function} fn - function to check - * * @returns {boolean} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -274,7 +265,6 @@ export function isClass(fn: any): boolean { * Checks if object is empty * * @param {object} object - object to check - * * @returns {boolean} */ export function isEmpty(object: object): boolean { @@ -296,22 +286,23 @@ export function isPromise(object: any): object is Promise { return Promise.resolve(object) === object; } +/* eslint-disable @typescript-eslint/no-magic-numbers */ /** * Returns true if passed key code is printable (a-Z, 0-9, etc) character. * * @param {number} keyCode - key code - * * @returns {boolean} */ export function isPrintableKey(keyCode: number): boolean { return (keyCode > 47 && keyCode < 58) || // number keys - keyCode === 32 || keyCode === 13 || // Spacebar & return key(s) + keyCode === 32 || keyCode === 13 || // Space bar & return key(s) keyCode === 229 || // processing key input for certain languages — Chinese, Japanese, etc. (keyCode > 64 && keyCode < 91) || // letter keys (keyCode > 95 && keyCode < 112) || // Numpad keys (keyCode > 185 && keyCode < 193) || // ;=,-./` (in order) (keyCode > 218 && keyCode < 223); // [\]' (in order) } +/* eslint-enable @typescript-eslint/no-magic-numbers */ /** * Fires a promise sequence asynchronously @@ -319,7 +310,6 @@ export function isPrintableKey(keyCode: number): boolean { * @param {ChainData[]} chains - list or ChainData's * @param {Function} success - success callback * @param {Function} fallback - callback that fires in case of errors - * * @returns {Promise} */ export async function sequence( @@ -333,10 +323,8 @@ export async function sequence( * Decorator * * @param {ChainData} chainData - Chain data - * * @param {Function} successCallback - success callback * @param {Function} fallbackCallback - fail callback - * * @returns {Promise} */ async function waitNextBlock( @@ -370,7 +358,6 @@ export async function sequence( * Make array from array-like collection * * @param {ArrayLike} collection - collection to convert to array - * * @returns {Array} */ // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -400,7 +387,6 @@ export function delay(method: (...args: any[]) => any, timeout: number) { * Get file extension * * @param {File} file - file - * * @returns {string} */ export function getFileExtension(file: File): string { @@ -411,7 +397,6 @@ export function getFileExtension(file: File): string { * Check if string is MIME type * * @param {string} type - string to check - * * @returns {boolean} */ export function isValidMimeType(type: string): boolean { @@ -492,6 +477,7 @@ export function throttle(func, wait, options: {leading?: boolean; trailing?: boo const remaining = wait - (now - previous); + // eslint-disable-next-line @typescript-eslint/no-this-alias context = this; // eslint-disable-next-line prefer-rest-params @@ -551,7 +537,7 @@ export function getUserOS(): {[key: string]: boolean} { linux: false, }; - const userOS = Object.keys(OS).find((os: string) => navigator.appVersion.toLowerCase().indexOf(os) !== -1); + const userOS = Object.keys(OS).find((os: string) => window.navigator.appVersion.toLowerCase().indexOf(os) !== -1); if (userOS) { OS[userOS] = true; @@ -566,7 +552,6 @@ export function getUserOS(): {[key: string]: boolean} { * Capitalizes first letter of the string * * @param {string} text - text to capitalize - * * @returns {string} */ export function capitalize(text: string): string { @@ -610,7 +595,6 @@ export function deepMerge(target, ...sources): T { * To detect touch devices more carefully, use 'touchstart' event listener * * @see http://www.stucox.com/blog/you-cant-detect-a-touchscreen/ - * * @returns {boolean} */ export const isTouchSupported: boolean = 'ontouchstart' in document.documentElement; @@ -674,7 +658,9 @@ export function getValidUrl(url: string): string { * @returns {string} */ export function generateBlockId(): string { - return nanoid(10); + const idLen = 10; + + return nanoid(idLen); } /** @@ -690,11 +676,10 @@ export function openTab(url: string): void { * Returns random generated identifier * * @param {string} prefix - identifier prefix - * * @returns {string} */ export function generateId(prefix = ''): string { - // tslint:disable-next-line:no-bitwise + // eslint-disable-next-line @typescript-eslint/no-magic-numbers return `${prefix}${(Math.floor(Math.random() * 1e8)).toString(16)}`; } @@ -761,13 +746,18 @@ export function cacheable void, + // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars options?: boolean | AddEventListenerOptions ): void { const existingListeners = this.findAll(element, eventType, handler); @@ -140,7 +139,6 @@ export default class Listeners { * @param {EventTarget} element - event target * @param {string} [eventType] - event type * @param {Function} [handler] - event handler - * * @returns {ListenerData|null} */ public findOne(element: EventTarget, eventType?: string, handler?: (event: Event) => void): ListenerData { @@ -155,7 +153,6 @@ export default class Listeners { * @param {EventTarget} element - event target * @param {string} eventType - event type * @param {Function} handler - event handler - * * @returns {ListenerData[]} */ public findAll(element: EventTarget, eventType?: string, handler?: (event: Event) => void): ListenerData[] { @@ -195,7 +192,6 @@ export default class Listeners { * Search method: looks for listener by passed element * * @param {EventTarget} element - searching element - * * @returns {Array} listeners that found on element */ private findByEventTarget(element: EventTarget): ListenerData[] { @@ -210,7 +206,6 @@ export default class Listeners { * Search method: looks for listener by passed event type * * @param {string} eventType - event type - * * @returns {ListenerData[]} listeners that found on element */ private findByType(eventType: string): ListenerData[] { @@ -225,7 +220,6 @@ export default class Listeners { * Search method: looks for listener by passed handler * * @param {Function} handler - event handler - * * @returns {ListenerData[]} listeners that found on element */ private findByHandler(handler: (event: Event) => void): ListenerData[] { @@ -240,7 +234,6 @@ export default class Listeners { * Returns listener data found by id * * @param {string} id - listener identifier - * * @returns {ListenerData} */ private findById(id: string): ListenerData { diff --git a/src/components/utils/popover.ts b/src/components/utils/popover.ts index 5fa77c93..74b23089 100644 --- a/src/components/utils/popover.ts +++ b/src/components/utils/popover.ts @@ -61,12 +61,12 @@ export default class Popover extends EventsDispatcher { nothingFound: HTMLElement; overlay: HTMLElement; } = { - wrapper: null, - popover: null, - items: null, - nothingFound: null, - overlay: null, - } + wrapper: null, + popover: null, + items: null, + nothingFound: null, + overlay: null, + }; /** * Additional wrapper's class name @@ -150,7 +150,7 @@ export default class Popover extends EventsDispatcher { /** * ScrollLocker instance */ - private scrollLocker = new ScrollLocker() + private scrollLocker = new ScrollLocker(); /** * Editor container element @@ -236,6 +236,7 @@ export default class Popover extends EventsDispatcher { if (this.searchable) { setTimeout(() => { this.search.focus(); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers }, 100); } @@ -601,7 +602,7 @@ export default class Popover extends EventsDispatcher { } el.classList.remove(Popover.CSS.itemNoHover); - } + }; /** * Removes class responsible for special focus behavior on an item @@ -621,7 +622,7 @@ export default class Popover extends EventsDispatcher { */ private onFlip = (): void => { this.disableSpecialHoverAndFocusBehavior(); - } + }; /** * Reactivates flipper instance. diff --git a/src/components/utils/sanitizer.ts b/src/components/utils/sanitizer.ts index 5b4bc8a2..9d55a82a 100644 --- a/src/components/utils/sanitizer.ts +++ b/src/components/utils/sanitizer.ts @@ -5,7 +5,6 @@ * Clears HTML from taint tags * * @version 2.0.0 - * * @example * * clean(yourTaintString, yourConfig); @@ -18,7 +17,6 @@ import * as _ from '../utils'; /** * @typedef {object} SanitizerConfig * @property {object} tags - define tags restrictions - * * @example * * tags : { @@ -65,7 +63,6 @@ export function sanitizeBlocks( * * @param {string} taintString - taint string * @param {SanitizerConfig} customConfig - allowed tags - * * @returns {string} clean HTML */ export function clean(taintString: string, customConfig: SanitizerConfig = {} as SanitizerConfig): string { @@ -163,7 +160,6 @@ function cleanObject(object: object, rules: SanitizerConfig|{[field: string]: Sa * * @param {string} taintString - string to clean * @param {SanitizerConfig|boolean} rule - sanitizer rule - * * @returns {string} */ function cleanOneItem(taintString: string, rule: SanitizerConfig|boolean): string { diff --git a/src/components/utils/scroll-locker.ts b/src/components/utils/scroll-locker.ts index 394ddcec..af9a5e86 100644 --- a/src/components/utils/scroll-locker.ts +++ b/src/components/utils/scroll-locker.ts @@ -10,12 +10,12 @@ export default class ScrollLocker { private static CSS = { scrollLocked: 'ce-scroll-locked', scrollLockedHard: 'ce-scroll-locked--hard', - } + }; /** * Stores scroll position, used for hard scroll lock */ - private scrollPosition: null|number + private scrollPosition: null|number; /** * Locks body element scroll diff --git a/src/components/utils/search-input.ts b/src/components/utils/search-input.ts index a5b8e3ae..08287e8a 100644 --- a/src/components/utils/search-input.ts +++ b/src/components/utils/search-input.ts @@ -114,6 +114,7 @@ export default class SearchInput { this.wrapper = Dom.make('div', SearchInput.CSS.wrapper); const iconWrapper = Dom.make('div', SearchInput.CSS.icon); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers const icon = Dom.svg('search', 16, 16); this.input = Dom.make('input', SearchInput.CSS.input, { diff --git a/src/components/utils/shortcuts.ts b/src/components/utils/shortcuts.ts index 3e45210f..12adf10c 100644 --- a/src/components/utils/shortcuts.ts +++ b/src/components/utils/shortcuts.ts @@ -94,7 +94,6 @@ class Shortcuts { * * @param element - Element shorcut is set for * @param shortcut - shortcut name - * * @returns {number} index - shortcut index if exist */ private findShortcut(element: Element, shortcut: string): Shortcut | void { diff --git a/src/tools/stub/index.ts b/src/tools/stub/index.ts index 025066c6..b38def0e 100644 --- a/src/tools/stub/index.ts +++ b/src/tools/stub/index.ts @@ -92,6 +92,7 @@ export default class Stub implements BlockTool { */ private make(): HTMLElement { const wrapper = $.make('div', this.CSS.wrapper); + // eslint-disable-next-line @typescript-eslint/no-magic-numbers const icon = $.svg('sad-face', 52, 52); const infoContainer = $.make('div', this.CSS.info); const title = $.make('div', this.CSS.title, { diff --git a/test/cypress/tests/api/block.spec.ts b/test/cypress/tests/api/block.spec.ts index 09b55efb..53db9309 100644 --- a/test/cypress/tests/api/block.spec.ts +++ b/test/cypress/tests/api/block.spec.ts @@ -1,4 +1,5 @@ import { BlockMutationType } from '../../../../types/events/block/mutation-type'; +import EditorJS from '../../../../types'; /** * There will be described test cases of BlockAPI @@ -22,18 +23,22 @@ describe('BlockAPI', () => { */ const EditorJSApiMock = Cypress.sinon.match.any; - beforeEach(() => { - if (this && this.editorInstance) { + beforeEach(function () { + const config = { + data: editorDataMock, + onChange: (): void => { + console.log('something changed'); + }, + }; + + cy.createEditor(config).as('editorInstance'); + + cy.spy(config, 'onChange').as('onChange'); + }); + + afterEach(function () { + if (this.editorInstance) { this.editorInstance.destroy(); - } else { - const config = { - data: editorDataMock, - onChange: (): void => { console.log('something changed'); }, - }; - - cy.createEditor(config).as('editorInstance'); - - cy.spy(config, 'onChange').as('onChange'); } }); @@ -45,8 +50,8 @@ describe('BlockAPI', () => { * Check that blocks.dispatchChange() triggers Editor 'onChange' callback */ it('should trigger onChange with corresponded block', () => { - cy.get('@editorInstance').then(async (editor: any) => { - const block = editor.blocks.getById(firstBlock.id); + cy.get('@editorInstance').then(async (editor: unknown) => { + const block = (editor as EditorJS).blocks.getById(firstBlock.id); block.dispatchChange(); @@ -59,5 +64,4 @@ describe('BlockAPI', () => { }); }); }); - }); diff --git a/test/cypress/tests/api/blocks.spec.ts b/test/cypress/tests/api/blocks.spec.ts index 7eb74869..a29e7077 100644 --- a/test/cypress/tests/api/blocks.spec.ts +++ b/test/cypress/tests/api/blocks.spec.ts @@ -16,13 +16,15 @@ describe('api.blocks', () => { ], }; - beforeEach(() => { - if (this && this.editorInstance) { + beforeEach(function () { + cy.createEditor({ + data: editorDataMock, + }).as('editorInstance'); + }); + + afterEach(function () { + if (this.editorInstance) { this.editorInstance.destroy(); - } else { - cy.createEditor({ - data: editorDataMock, - }).as('editorInstance'); } }); diff --git a/test/cypress/tests/api/tools.spec.ts b/test/cypress/tests/api/tools.spec.ts index 6064f183..3f9446b5 100644 --- a/test/cypress/tests/api/tools.spec.ts +++ b/test/cypress/tests/api/tools.spec.ts @@ -1,5 +1,6 @@ import { ToolboxConfig, BlockToolData, ToolboxConfigEntry, PasteConfig } from '../../../../types'; -import { HTMLPasteEvent, PasteEvent, TunesMenuConfig } from '../../../../types/tools'; +import EditorJS from '../../../../types'; +import { HTMLPasteEvent, TunesMenuConfig } from '../../../../types/tools'; /* eslint-disable @typescript-eslint/no-empty-function */ @@ -97,22 +98,22 @@ describe('Editor Tools Api', () => { .should('contain.text', TestTool.toolbox[1].title); }); - it('should insert block with overriden data on entry click in case toolbox entry provides data overrides', () => { + it('should insert block with overridden data on entry click in case toolbox entry provides data overrides', () => { const text = 'Text'; const dataOverrides = { testProp: 'new value', }; /** - * Tool with default data to be overriden + * Tool with default data to be overridden */ class TestTool { private _data = { testProp: 'default value', - } + }; /** - * Tool contructor + * Tool constructor * * @param data - previously saved data */ @@ -121,7 +122,7 @@ describe('Editor Tools Api', () => { } /** - * Returns toolbox config as list of entries with overriden data + * Returns toolbox config as list of entries with overridden data */ public static get toolbox(): ToolboxConfig { return [ @@ -182,8 +183,8 @@ describe('Editor Tools Api', () => { .type(text); cy.get('@editorInstance') - .then(async (editor: any) => { - const editorData = await editor.save(); + .then(async (editor: unknown) => { + const editorData = await (editor as EditorJS).save(); expect(editorData.blocks[0].data).to.be.deep.eq({ ...dataOverrides, @@ -535,6 +536,7 @@ describe('Editor Tools Api', () => { .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '', }) .then(() => { @@ -591,6 +593,7 @@ describe('Editor Tools Api', () => { .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '', // all attributes should be sanitized }) .then(() => { @@ -661,6 +664,7 @@ describe('Editor Tools Api', () => { .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '', }) .then(() => { @@ -738,6 +742,7 @@ describe('Editor Tools Api', () => { .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '', }) .then(() => { @@ -821,6 +826,7 @@ describe('Editor Tools Api', () => { .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '', }) .then(() => { @@ -896,6 +902,7 @@ describe('Editor Tools Api', () => { .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '
Ho-Ho-Ho
', }) .then(() => { diff --git a/test/cypress/tests/block-ids.spec.ts b/test/cypress/tests/block-ids.spec.ts index e207e58f..b8678eb0 100644 --- a/test/cypress/tests/block-ids.spec.ts +++ b/test/cypress/tests/block-ids.spec.ts @@ -3,15 +3,17 @@ import Header from '@editorjs/header'; import { nanoid } from 'nanoid'; describe.only('Block ids', () => { - beforeEach(() => { - if (this && this.editorInstance) { + beforeEach(function () { + cy.createEditor({ + tools: { + header: Header, + }, + }).as('editorInstance'); + }); + + afterEach(function () { + if (this.editorInstance) { this.editorInstance.destroy(); - } else { - cy.createEditor({ - tools: { - header: Header, - }, - }).as('editorInstance'); } }); diff --git a/test/cypress/tests/copy-paste.spec.ts b/test/cypress/tests/copy-paste.spec.ts index 5a337832..e1ba2179 100644 --- a/test/cypress/tests/copy-paste.spec.ts +++ b/test/cypress/tests/copy-paste.spec.ts @@ -2,48 +2,53 @@ import Header from '@editorjs/header'; import Image from '@editorjs/simple-image'; import * as _ from '../../../src/components/utils'; -describe('Copy pasting from Editor', () => { - beforeEach(() => { - if (this && this.editorInstance) { +describe('Copy pasting from Editor', function () { + beforeEach(function () { + cy.createEditor({ + tools: { + header: Header, + image: Image, + }, + }).as('editorInstance'); + }); + + afterEach(function () { + if (this.editorInstance) { this.editorInstance.destroy(); - } else { - cy.createEditor({ - tools: { - header: Header, - image: Image, - }, - }).as('editorInstance'); } }); - context('pasting', () => { - it('should paste plain text', () => { + context('pasting', function () { + it('should paste plain text', function () { // eslint-disable-next-line cypress/no-unnecessary-waiting cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/plain': 'Some plain text', }) .wait(0) .should('contain', 'Some plain text'); }); - it('should paste inline html data', () => { + it('should paste inline html data', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '

Some text

', }) .should('contain.html', 'Some text'); }); - it('should paste several blocks if plain text contains new lines', () => { + it('should paste several blocks if plain text contains new lines', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/plain': 'First block\n\nSecond block', }); @@ -55,11 +60,12 @@ describe('Copy pasting from Editor', () => { }); }); - it('should paste several blocks if html contains several paragraphs', () => { + it('should paste several blocks if html contains several paragraphs', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '

First block

Second block

', }); @@ -71,11 +77,12 @@ describe('Copy pasting from Editor', () => { }); }); - it('should paste using custom data type', () => { + it('should paste using custom data type', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'application/x-editor-js': JSON.stringify([ { tool: 'paragraph', @@ -100,11 +107,12 @@ describe('Copy pasting from Editor', () => { }); }); - it('should parse block tags', () => { + it('should parse block tags', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/html': '

First block

Second block

', }); @@ -117,11 +125,12 @@ describe('Copy pasting from Editor', () => { .should('contain', 'Second block'); }); - it('should parse pattern', () => { + it('should parse pattern', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'text/plain': 'https://codex.so/public/app/img/external/codex2x.png', }); @@ -132,8 +141,8 @@ describe('Copy pasting from Editor', () => { }); }); - context('copying', () => { - it('should copy inline fragment', () => { + context('copying', function () { + it('should copy inline fragment', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() @@ -147,7 +156,7 @@ describe('Copy pasting from Editor', () => { }); }); - it('should copy several blocks', () => { + it('should copy several blocks', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() @@ -171,7 +180,7 @@ describe('Copy pasting from Editor', () => { * Need to wait for custom data as it is set asynchronously */ // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(0).then(() => { + cy.wait(0).then(function () { expect(clipboardData['application/x-editor-js']).not.to.be.undefined; const data = JSON.parse(clipboardData['application/x-editor-js']); @@ -185,8 +194,8 @@ describe('Copy pasting from Editor', () => { }); }); - context('cutting', () => { - it('should cut inline fragment', () => { + context('cutting', function () { + it('should cut inline fragment', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() @@ -200,7 +209,7 @@ describe('Copy pasting from Editor', () => { }); }); - it('should cut several blocks', () => { + it('should cut several blocks', function () { cy.get('[data-cy=editorjs]') .get('div.ce-block') .click() @@ -224,7 +233,7 @@ describe('Copy pasting from Editor', () => { * Need to wait for custom data as it is set asynchronously */ // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(0).then(() => { + cy.wait(0).then(function () { expect(clipboardData['application/x-editor-js']).not.to.be.undefined; const data = JSON.parse(clipboardData['application/x-editor-js']); @@ -241,7 +250,7 @@ describe('Copy pasting from Editor', () => { .should('not.contain', 'Second block'); }); - it('should cut lots of blocks', () => { + it('should cut lots of blocks', function () { const numberOfBlocks = 50; for (let i = 0; i < numberOfBlocks; i++) { @@ -264,7 +273,7 @@ describe('Copy pasting from Editor', () => { * Need to wait for custom data as it is set asynchronously */ // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(0).then(() => { + cy.wait(0).then(function () { expect(clipboardData['application/x-editor-js']).not.to.be.undefined; const data = JSON.parse(clipboardData['application/x-editor-js']); diff --git a/test/cypress/tests/i18n.spec.ts b/test/cypress/tests/i18n.spec.ts index 8f8fe743..5109521a 100644 --- a/test/cypress/tests/i18n.spec.ts +++ b/test/cypress/tests/i18n.spec.ts @@ -3,7 +3,7 @@ import { ToolboxConfig } from '../../../types'; describe('Editor i18n', () => { context('Toolbox', () => { - it('should translate tool title in a toolbox', () => { + it('should translate tool title in a toolbox', function () { if (this && this.editorInstance) { this.editorInstance.destroy(); } @@ -35,7 +35,7 @@ describe('Editor i18n', () => { .should('contain.text', toolNamesDictionary.Heading); }); - it('should translate titles of toolbox entries', () => { + it('should translate titles of toolbox entries', function () { if (this && this.editorInstance) { this.editorInstance.destroy(); } @@ -95,7 +95,7 @@ describe('Editor i18n', () => { .should('contain.text', toolNamesDictionary.Title2); }); - it('should use capitalized tool name as translation key if toolbox title is missing', () => { + it('should use capitalized tool name as translation key if toolbox title is missing', function () { if (this && this.editorInstance) { this.editorInstance.destroy(); } @@ -141,4 +141,4 @@ describe('Editor i18n', () => { .should('contain.text', toolNamesDictionary.TestTool); }); }); -}); \ No newline at end of file +}); diff --git a/test/cypress/tests/initialization.spec.ts b/test/cypress/tests/initialization.spec.ts index f4992bdb..5ed95063 100644 --- a/test/cypress/tests/initialization.spec.ts +++ b/test/cypress/tests/initialization.spec.ts @@ -1,4 +1,4 @@ -// eslint-disable-next-line spaced-comment +// eslint-disable-next-line spaced-comment, @typescript-eslint/triple-slash-reference /// describe('Editor basic initialization', () => { @@ -8,11 +8,13 @@ describe('Editor basic initialization', () => { */ const editorConfig = {}; - beforeEach(() => { - if (this && this.editorInstance) { + beforeEach(function () { + cy.createEditor(editorConfig).as('editorInstance'); + }); + + afterEach(function () { + if (this.editorInstance) { this.editorInstance.destroy(); - } else { - cy.createEditor(editorConfig).as('editorInstance'); } }); diff --git a/test/cypress/tests/modules/Tools.spec.ts b/test/cypress/tests/modules/Tools.spec.ts index 82bdf5ae..407ed032 100644 --- a/test/cypress/tests/modules/Tools.spec.ts +++ b/test/cypress/tests/modules/Tools.spec.ts @@ -1,5 +1,5 @@ /* tslint:disable:max-classes-per-file */ -/* eslint-disable @typescript-eslint/ban-ts-ignore,@typescript-eslint/no-explicit-any,jsdoc/require-jsdoc */ +/* eslint-disable @typescript-eslint/no-explicit-any, jsdoc/require-jsdoc */ import Tools from '../../../../src/components/modules/tools'; import { EditorConfig } from '../../../../types'; import BlockTool from '../../../../src/components/tools/block'; @@ -57,6 +57,7 @@ describe('Tools module', () => { it('should throw an error if tools config is corrupted', async () => { const module = constructModule({ tools: { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore corruptedTool: 'value', }, @@ -77,7 +78,7 @@ describe('Tools module', () => { it('should call Tools prepare method with user config', async () => { class WithSuccessfulPrepare { // eslint-disable-next-line @typescript-eslint/no-empty-function - public static prepare = cy.stub() + public static prepare = cy.stub(); } const config = { @@ -134,7 +135,7 @@ describe('Tools module', () => { }, blockToolWithoutSettings: class {} as any, inlineTool: class { - public static isInline = true + public static isInline = true; // eslint-disable-next-line @typescript-eslint/no-empty-function public render(): void {} @@ -146,7 +147,7 @@ describe('Tools module', () => { public checkState(): void {} } as any, inlineTool2: class { - public static isInline = true + public static isInline = true; // eslint-disable-next-line @typescript-eslint/no-empty-function public render(): void {} diff --git a/test/cypress/tests/readOnly.spec.ts b/test/cypress/tests/readOnly.spec.ts index 18dec6d2..8bd92256 100644 --- a/test/cypress/tests/readOnly.spec.ts +++ b/test/cypress/tests/readOnly.spec.ts @@ -1,6 +1,11 @@ import EditorJS, { EditorConfig } from '../../../types'; describe('ReadOnly API spec', () => { + /** + * Creates the new editor instance + * + * @param config - Editor Config + */ function createEditor(config?: EditorConfig): void { const editorConfig = Object.assign({}, config || {}); diff --git a/test/cypress/tests/sanitisation.spec.ts b/test/cypress/tests/sanitisation.spec.ts index 73326f69..b515ccc7 100644 --- a/test/cypress/tests/sanitisation.spec.ts +++ b/test/cypress/tests/sanitisation.spec.ts @@ -1,10 +1,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -describe('Output sanitisation', () => { - beforeEach(() => { - if (this && this.editorInstance) { +describe('Output sanitization', () => { + beforeEach(function () { + cy.createEditor({}).as('editorInstance'); + }); + + afterEach(function () { + if (this.editorInstance) { this.editorInstance.destroy(); - } else { - cy.createEditor({}).as('editorInstance'); } }); @@ -52,7 +54,10 @@ describe('Output sanitisation', () => { it('should save formatting for paragraph on paste', () => { cy.get('[data-cy=editorjs]') .get('div.ce-block') - .paste({ 'text/html': '

Text

Bold text

' }); + .paste({ + // eslint-disable-next-line @typescript-eslint/naming-convention + 'text/html': '

Text

Bold text

', + }); cy.get('@editorInstance').then(async editorInstance => { const output = await (editorInstance as any).save(); diff --git a/test/cypress/tests/selection.spec.ts b/test/cypress/tests/selection.spec.ts index a721e675..c9017351 100644 --- a/test/cypress/tests/selection.spec.ts +++ b/test/cypress/tests/selection.spec.ts @@ -1,11 +1,13 @@ import * as _ from '../../../src/components/utils'; describe('Blocks selection', () => { - beforeEach(() => { - if (this && this.editorInstance) { + beforeEach(function () { + cy.createEditor({}).as('editorInstance'); + }); + + afterEach(function () { + if (this.editorInstance) { this.editorInstance.destroy(); - } else { - cy.createEditor({}).as('editorInstance'); } }); diff --git a/test/cypress/tests/tools/BlockTool.spec.ts b/test/cypress/tests/tools/BlockTool.spec.ts index bf47b75d..271fa915 100644 --- a/test/cypress/tests/tools/BlockTool.spec.ts +++ b/test/cypress/tests/tools/BlockTool.spec.ts @@ -17,7 +17,7 @@ describe('BlockTool', () => { rule1: { div: true, }, - } + }; public static toolbox = { icon: 'Tool icon', @@ -48,9 +48,7 @@ describe('BlockTool', () => { public api: object; public config: ToolSettings; - /** - * - */ + // eslint-disable-next-line jsdoc/require-jsdoc constructor({ data, block, readOnly, api, config }) { this.data = data; this.block = block; @@ -151,7 +149,7 @@ describe('BlockTool', () => { constructable: class { public static sanitize = { b: true, - } + }; }, api: {}, config: {}, @@ -183,7 +181,7 @@ describe('BlockTool', () => { constructable: class { public static sanitize = { b: true, - } + }; }, api: {}, config: {}, @@ -194,7 +192,7 @@ describe('BlockTool', () => { constructable: class { public static sanitize = { a: true, - } + }; }, api: {}, config: {}, @@ -502,7 +500,7 @@ describe('BlockTool', () => { const tool = new BlockTool({ ...options, constructable: class { - public static toolbox = false + public static toolbox = false; }, } as any); @@ -513,7 +511,7 @@ describe('BlockTool', () => { const tool = new BlockTool({ ...options, constructable: class { - public static toolbox = {} + public static toolbox = {}; }, } as any); diff --git a/test/cypress/tests/tools/BlockTune.spec.ts b/test/cypress/tests/tools/BlockTune.spec.ts index 89b47d85..5ab8777c 100644 --- a/test/cypress/tests/tools/BlockTune.spec.ts +++ b/test/cypress/tests/tools/BlockTune.spec.ts @@ -20,9 +20,7 @@ describe('BlockTune', () => { public data: BlockTuneData; public block: object; - /** - * - */ + // eslint-disable-next-line jsdoc/require-jsdoc constructor({ api, config, block, data }) { this.api = api; this.config = config; diff --git a/test/cypress/tests/tools/InlineTool.spec.ts b/test/cypress/tests/tools/InlineTool.spec.ts index 70bcbc37..3090af56 100644 --- a/test/cypress/tests/tools/InlineTool.spec.ts +++ b/test/cypress/tests/tools/InlineTool.spec.ts @@ -13,9 +13,9 @@ describe('InlineTool', () => { constructable: class { public static sanitize = { rule1: 'rule1', - } + }; - public static title = 'Title' + public static title = 'Title'; public static reset; public static prepare; @@ -26,7 +26,9 @@ describe('InlineTool', () => { public config: ToolSettings; /** - * + * @param options - constructor options + * @param options.api - EditorAPI + * @param options.config - tool config */ constructor({ api, config }) { this.api = api; diff --git a/test/cypress/tests/utils.spec.ts b/test/cypress/tests/utils.spec.ts index bb0cb51a..8d5e5ef6 100644 --- a/test/cypress/tests/utils.spec.ts +++ b/test/cypress/tests/utils.spec.ts @@ -1,8 +1,14 @@ /* eslint-disable @typescript-eslint/no-empty-function */ import { isFunction } from '../../../src/components/utils'; +/** + * Example of typical synchronous function + */ function syncFunction(): void {} +/** + * Example of typical asynchronous function + */ async function asyncFunction(): Promise {} const syncArrowFunction = (): void => {}; @@ -10,7 +16,7 @@ const syncArrowFunction = (): void => {}; const asyncArrowFunction = async (): Promise => {}; describe('isFunction function', () => { - it('should recognise sync functions', () => { + it('should recognize sync functions', () => { /** * Act */ @@ -24,7 +30,7 @@ describe('isFunction function', () => { expect(arrowFunctionResult).to.eq(true); }); - it('should recognise async functions', () => { + it('should recognize async functions', () => { /** * Act */ diff --git a/test/cypress/tests/utils/flipper.spec.ts b/test/cypress/tests/utils/flipper.spec.ts index 6ca1c518..4945ff71 100644 --- a/test/cypress/tests/utils/flipper.spec.ts +++ b/test/cypress/tests/utils/flipper.spec.ts @@ -5,7 +5,7 @@ import { PopoverItem } from '../../../../types/index.js'; */ class SomePlugin { /** - * Event handler to be spyed in test + * Event handler to be spied in test */ // eslint-disable-next-line @typescript-eslint/no-empty-function public static pluginInternalKeydownHandler(): void {} @@ -24,7 +24,7 @@ class SomePlugin { } /** - * Used to display our tool in the Toolboz + * Used to display our tool in the Toolbox */ public static get toolbox(): PopoverItem { return { @@ -37,15 +37,17 @@ class SomePlugin { } describe('Flipper', () => { - beforeEach(() => { - if (this && this.editorInstance) { + beforeEach(function () { + cy.createEditor({ + tools: { + sometool: SomePlugin, + }, + }).as('editorInstance'); + }); + + afterEach(function () { + if (this.editorInstance) { this.editorInstance.destroy(); - } else { - cy.createEditor({ - tools: { - sometool: SomePlugin, - }, - }).as('editorInstance'); } }); diff --git a/yarn.lock b/yarn.lock index 76c79249..a4d77055 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1426,12 +1426,10 @@ "@editorjs/code@^2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@editorjs/code/-/code-2.7.0.tgz#0a21de9ac15e4533605ffcc80969513ab2142ac5" - integrity sha512-gXtTce915fHp3H9i4IqhTxEDbbkT2heFfYiW/bhFHsCmZDpyGzfZxi94kmrEqDmbxXjV49ZZ6GZbR26If13KJw== "@editorjs/delimiter@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@editorjs/delimiter/-/delimiter-1.2.0.tgz#5075f1a3e68765cfb6aec8694b316d81e2b41607" - integrity sha512-GKsCFPk85vH5FuCuVQ48NTLc9hk0T3DsBH9zABaicTYIJayFcUa8N4/Y+L3i4tduzDqqyvoxkv+5n43GmC5gEA== "@editorjs/header@^2.6.1": version "2.6.1" @@ -1441,6 +1439,44 @@ version "1.4.1" resolved "https://registry.yarnpkg.com/@editorjs/simple-image/-/simple-image-1.4.1.tgz#16a847e0f21041dfac0af8235d19b8a8a756c493" +"@es-joy/jsdoccomment@~0.36.1": + version "0.36.1" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz#c37db40da36e4b848da5fd427a74bae3b004a30f" + dependencies: + comment-parser "1.3.1" + esquery "^1.4.0" + jsdoc-type-pratt-parser "~3.1.0" + +"@eslint/eslintrc@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.11.6": + version "0.11.7" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + "@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" @@ -1462,10 +1498,21 @@ "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + "@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + "@nodelib/fs.walk@^1.2.3": version "1.2.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" @@ -1473,6 +1520,13 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@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" @@ -1500,13 +1554,13 @@ version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" -"@types/json-schema@^7.0.3": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" "@types/minimist@^1.2.0": version "1.2.0" @@ -1536,6 +1590,10 @@ version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" +"@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + "@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" @@ -1585,44 +1643,80 @@ "@types/webpack-sources" "*" source-map "^0.6.0" -"@typescript-eslint/eslint-plugin@^2.12.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.29.0.tgz#c9efab7624e3dd6d144a0e4577a541d1bd42c2ac" +"@typescript-eslint/eslint-plugin@^5.38.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz#105788f299050c917eb85c4d9fd04b089e3740de" dependencies: - "@typescript-eslint/experimental-utils" "2.29.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" + "@typescript-eslint/scope-manager" "5.44.0" + "@typescript-eslint/type-utils" "5.44.0" + "@typescript-eslint/utils" "5.44.0" + debug "^4.3.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@2.29.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz#3cb8060de9265ba131625a96bbfec31ba6d4a0fe" +"@typescript-eslint/parser@^5.38.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.44.0.tgz#99e2c710a2252191e7a79113264f438338b846ad" dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.29.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" + "@typescript-eslint/scope-manager" "5.44.0" + "@typescript-eslint/types" "5.44.0" + "@typescript-eslint/typescript-estree" "5.44.0" + debug "^4.3.4" -"@typescript-eslint/parser@^2.12.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.29.0.tgz#6e3c4e21ed6393dc05b9d8b47f0b7e731ef21c9c" +"@typescript-eslint/scope-manager@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz#988c3f34b45b3474eb9ff0674c18309dedfc3e04" dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.29.0" - "@typescript-eslint/typescript-estree" "2.29.0" - eslint-visitor-keys "^1.1.0" + "@typescript-eslint/types" "5.44.0" + "@typescript-eslint/visitor-keys" "5.44.0" -"@typescript-eslint/typescript-estree@2.29.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz#1be6612bb02fc37ac9f466521c1459a4744e8d3a" +"@typescript-eslint/type-utils@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz#bc5a6e8a0269850714a870c9268c038150dfb3c7" dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^6.3.0" - tsutils "^3.17.1" + "@typescript-eslint/typescript-estree" "5.44.0" + "@typescript-eslint/utils" "5.44.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.44.0.tgz#f3f0b89aaff78f097a2927fe5688c07e786a0241" + +"@typescript-eslint/typescript-estree@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz#0461b386203e8d383bb1268b1ed1da9bc905b045" + dependencies: + "@typescript-eslint/types" "5.44.0" + "@typescript-eslint/visitor-keys" "5.44.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.44.0.tgz#d733da4d79d6c30f1a68b531cdda1e0c1f00d52d" + dependencies: + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.44.0" + "@typescript-eslint/types" "5.44.0" + "@typescript-eslint/typescript-estree" "5.44.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz#10740dc28902bb903d12ee3a005cc3a70207d433" + dependencies: + "@typescript-eslint/types" "5.44.0" + eslint-visitor-keys "^3.3.0" "@ungap/promise-all-settled@1.1.2": version "1.1.2" @@ -1770,9 +1864,9 @@ JSONStream@^1.0.3: jsonparse "^1.2.0" through ">=2.2.7 <3" -acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: version "1.8.2" @@ -1794,9 +1888,9 @@ acorn@^7.0.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" -acorn@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" +acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" aggregate-error@^3.0.0: version "3.0.1" @@ -1831,7 +1925,7 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.3: +ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" dependencies: @@ -1852,12 +1946,6 @@ ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - dependencies: - type-fest "^0.11.0" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1874,6 +1962,10 @@ ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1955,13 +2047,15 @@ arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" -array-includes@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" +array-includes@^3.1.4: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - is-string "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" array-union@^2.1.0: version "2.1.0" @@ -1971,12 +2065,14 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" -array.prototype.flat@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" +array.prototype.flat@^1.2.5: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" arrify@^1.0.1: version "1.0.1" @@ -2199,7 +2295,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" dependencies: @@ -2398,7 +2494,6 @@ browserify@^16.1.0: browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.0, browserslist@^4.6.4, browserslist@^4.8.5, browserslist@^4.9.1: version "4.20.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: caniuse-lite "^1.0.30001332" electron-to-chromium "^1.4.118" @@ -2413,7 +2508,6 @@ buffer-crc32@~0.2.3: buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-xor@^1.0.3: version "1.0.3" @@ -2449,6 +2543,12 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +builtins@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + dependencies: + semver "^7.0.0" + cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" @@ -2509,7 +2609,6 @@ cache-base@^1.0.1: cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.1.0.tgz#865576dfef39c0d6a7defde794d078f5308e3ef3" - integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA== cachedir@^2.3.0: version "2.3.0" @@ -2524,6 +2623,13 @@ caching-transform@^4.0.0: package-hash "^4.0.0" write-file-atomic "^3.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -2572,7 +2678,6 @@ caniuse-api@^3.0.0: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001039, caniuse-lite@^1.0.30001332: version "1.0.30001332" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" - integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== caseless@~0.12.0: version "0.12.0" @@ -2582,7 +2687,7 @@ ccount@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" dependencies: @@ -2600,13 +2705,6 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" @@ -2637,10 +2735,6 @@ character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - 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" @@ -2733,12 +2827,6 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - dependencies: - restore-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" @@ -2755,10 +2843,6 @@ cli-truncate@^0.2.1: slice-ansi "0.0.4" string-width "^1.0.1" -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -2812,7 +2896,6 @@ codex-notifier@^1.1.2: codex-tooltip@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/codex-tooltip/-/codex-tooltip-1.0.5.tgz#ba25fd5b3a58ba2f73fd667c2b46987ffd1edef2" - integrity sha512-IuA8LeyLU5p1B+HyhOsqR6oxyFQ11k3i9e9aXw40CrHFTRO2Y1npNBVU3W1SvhKAbUU7R/YikUBdcYFP0RcJag== coffeeify@3.0.1: version "3.0.1" @@ -2859,7 +2942,6 @@ color-name@^1.0.0, color-name@~1.1.4: color-string@^1.5.2: version "1.9.1" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -2898,9 +2980,9 @@ commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" -comment-parser@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.2.tgz#baf6d99b42038678b81096f15b630d18142f4b8a" +comment-parser@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" common-tags@^1.8.0: version "1.8.0" @@ -2935,10 +3017,6 @@ constants-browserify@^1.0.0, constants-browserify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - convert-source-map@^1.1.0, convert-source-map@^1.3.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -3037,7 +3115,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@6.0.5, cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: @@ -3047,7 +3125,7 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" dependencies: @@ -3316,7 +3394,7 @@ dayjs@^1.9.3: version "1.10.4" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" -debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" dependencies: @@ -3346,6 +3424,18 @@ debug@^3.1.0: dependencies: ms "^2.1.1" +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + dependencies: + ms "^2.1.1" + +debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + dependencies: + ms "2.1.2" + decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -3365,9 +3455,9 @@ decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" default-require-extensions@^3.0.0: version "3.0.0" @@ -3381,6 +3471,13 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -3458,12 +3555,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" dependencies: esutils "^2.0.2" - isarray "^1.0.0" doctrine@^3.0.0: version "3.0.0" @@ -3560,7 +3656,6 @@ ecc-jsbn@~0.1.1: electron-to-chromium@^1.4.118: version "1.4.122" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.122.tgz#56e518e8c4433876b01d4460eac0f653841ed510" - integrity sha512-VuLNxTIt8sBWIT2sd186xPd18Y8KcK8myLd9nMdSJOYZwFUxxbLVmX/T1VX+qqaytRlrYYQv39myxJdXtu7Ysw== elegant-spinner@^1.0.1: version "1.0.1" @@ -3634,13 +3729,13 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" dependencies: @@ -3656,6 +3751,41 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstrac string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.20.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3675,9 +3805,8 @@ 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: +escape-string-regexp@4.0.0, 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" @@ -3685,30 +3814,29 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -eslint-config-codex@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/eslint-config-codex/-/eslint-config-codex-1.3.3.tgz#639ec0f6500c3f5bd10465f06f8fc0645a1ae064" +eslint-config-codex@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/eslint-config-codex/-/eslint-config-codex-1.7.1.tgz#c4056c1216f8f117a0d737054ea7961a00e9b1b9" dependencies: - "@typescript-eslint/eslint-plugin" "^2.12.0" - "@typescript-eslint/parser" "^2.12.0" - eslint-config-standard "14.1.0" - eslint-plugin-import "2.19.1" - eslint-plugin-jsdoc "^22.1.0" - eslint-plugin-node "10.0.0" - eslint-plugin-promise "4.2.1" - eslint-plugin-standard "4.0.1" - typescript "^3.7.3" + "@typescript-eslint/eslint-plugin" "^5.38.0" + "@typescript-eslint/parser" "^5.38.0" + eslint-config-standard "17.0.0" + eslint-plugin-import "2.26.0" + eslint-plugin-jsdoc "^39.3.6" + eslint-plugin-n "^15.2.5" + eslint-plugin-promise "6.0.1" + eslint-plugin-standard "5.0.0" -eslint-config-standard@14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" +eslint-config-standard@17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz#fd5b6cf1dcf6ba8d29f200c461de2e19069888cf" -eslint-import-resolver-node@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" dependencies: - debug "^2.6.9" - resolve "^1.13.1" + debug "^3.2.7" + resolve "^1.20.0" eslint-loader@^4.0.2: version "4.0.2" @@ -3720,77 +3848,79 @@ eslint-loader@^4.0.2: object-hash "^2.0.3" schema-utils "^2.6.5" -eslint-module-utils@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" +eslint-module-utils@^2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" + debug "^3.2.7" -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" +eslint-plugin-chai-friendly@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz#0ebfbb2c1244f5de2997f3963d155758234f2b0f" -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" +eslint-plugin-cypress@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632" dependencies: globals "^11.12.0" -eslint-plugin-es@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz#0f5f5da5f18aa21989feebe8a73eadefb3432976" +eslint-plugin-es@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9" dependencies: - eslint-utils "^1.4.2" + eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-import@2.19.1: - version "2.19.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.19.1.tgz#5654e10b7839d064dd0d46cd1b88ec2133a11448" +eslint-plugin-import@2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - contains-path "^0.1.0" + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.0" - read-pkg-up "^2.0.0" - resolve "^1.12.0" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" -eslint-plugin-jsdoc@^22.1.0: - version "22.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-22.2.0.tgz#b89159e01ed8eeee4f6512101e96cac6a2999461" +eslint-plugin-jsdoc@^39.3.6: + version "39.6.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.6.3.tgz#a128189bcc66387025342b16c92a93b2f28b7b50" dependencies: - comment-parser "^0.7.2" - debug "^4.1.1" - jsdoctypeparser "^6.1.0" - lodash "^4.17.15" - regextras "^0.7.0" - semver "^6.3.0" - spdx-expression-parse "^3.0.0" + "@es-joy/jsdoccomment" "~0.36.1" + comment-parser "1.3.1" + debug "^4.3.4" + escape-string-regexp "^4.0.0" + esquery "^1.4.0" + semver "^7.3.8" + spdx-expression-parse "^3.0.1" -eslint-plugin-node@10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz#fd1adbc7a300cf7eb6ac55cf4b0b6fc6e577f5a6" +eslint-plugin-n@^15.2.5: + version "15.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.5.1.tgz#b3991857d1edaa47e0108ead825470ce63f391c1" dependencies: - eslint-plugin-es "^2.0.0" - eslint-utils "^1.4.2" + builtins "^5.0.1" + eslint-plugin-es "^4.1.0" + eslint-utils "^3.0.0" ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" + is-core-module "^2.11.0" + minimatch "^3.1.2" + resolve "^1.22.1" + semver "^7.3.8" -eslint-plugin-promise@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" +eslint-plugin-promise@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" -eslint-plugin-standard@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" +eslint-plugin-standard@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz#c43f6925d669f177db46f095ea30be95476b1ee4" eslint-scope@^4.0.3: version "4.0.3" @@ -3799,18 +3929,19 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.2, eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" eslint-utils@^2.0.0: version "2.0.0" @@ -3818,67 +3949,83 @@ eslint-utils@^2.0.0: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + dependencies: + eslint-visitor-keys "^2.0.0" + eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + +eslint@^8.28.0: + version "8.28.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.28.0.tgz#81a680732634677cc890134bcdd9fdfea8e63d6e" dependencies: - "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^1.3.3" + "@humanwhocodes/config-array" "^0.11.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.15.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" -esquery@^1.0.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" dependencies: estraverse "^5.1.0" @@ -3888,6 +4035,12 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + dependencies: + estraverse "^5.2.0" + estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -3896,6 +4049,10 @@ estraverse@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4010,14 +4167,6 @@ extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -4065,6 +4214,10 @@ fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + fast-glob@^3.1.1: version "3.2.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" @@ -4076,11 +4229,21 @@ fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -4117,18 +4280,18 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" dependencies: flat-cache "^2.0.1" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + dependencies: + flat-cache "^3.0.4" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -4164,19 +4327,13 @@ find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" dependencies: locate-path "^6.0.0" path-exists "^4.0.0" -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4207,6 +4364,13 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" @@ -4215,6 +4379,10 @@ flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + flatten@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" @@ -4326,9 +4494,18 @@ function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" gensync@^1.0.0-beta.1: version "1.0.0-beta.1" @@ -4346,6 +4523,14 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + 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" @@ -4366,6 +4551,13 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -4389,18 +4581,24 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0: +glob-parent@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" dependencies: is-glob "^4.0.1" -glob-parent@~5.1.0: +glob-parent@^5.1.2, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + dependencies: + is-glob "^4.0.3" + glob@7.1.6, glob@^7.1.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -4454,11 +4652,11 @@ globals@^11.1.0, globals@^11.12.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" +globals@^13.15.0: + version "13.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc" dependencies: - type-fest "^0.8.1" + type-fest "^0.20.2" globby@11.0.2: version "11.0.2" @@ -4482,6 +4680,17 @@ globby@^11.0.0: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + globjoin@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" @@ -4496,6 +4705,10 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -4521,6 +4734,10 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4529,10 +4746,26 @@ has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + dependencies: + get-intrinsic "^1.1.1" + has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + dependencies: + has-symbols "^1.0.2" + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -4678,12 +4911,6 @@ human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - dependencies: - safer-buffer ">= 2.1.2 < 3" - icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -4702,14 +4929,14 @@ iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - ignore@^5.1.1, ignore@^5.1.4: version "5.1.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -4730,6 +4957,13 @@ import-fresh@^3.0.0, import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -4796,24 +5030,6 @@ inline-source-map@~0.6.0: dependencies: source-map "~0.5.3" -inquirer@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - 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" @@ -4829,6 +5045,14 @@ insert-module-globals@^7.0.0: undeclared-identifiers "^1.1.2" xtend "^4.0.0" +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + interpret@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -4881,7 +5105,12 @@ is-arrayish@^0.2.1: is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + dependencies: + has-bigints "^1.0.1" is-binary-path@^1.0.0: version "1.0.1" @@ -4895,6 +5124,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-buffer@^1.1.0, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -4907,6 +5143,10 @@ is-callable@^1.1.4, is-callable@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -4924,6 +5164,12 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" +is-core-module@^2.11.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + dependencies: + has "^1.0.3" + 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" @@ -5010,6 +5256,12 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + dependencies: + is-extglob "^2.1.1" + is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" @@ -5021,6 +5273,16 @@ is-installed-globally@^0.3.2: global-dirs "^2.0.1" is-path-inside "^3.0.1" +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + dependencies: + has-tostringtag "^1.0.0" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -5045,6 +5307,10 @@ 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" +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -5069,6 +5335,13 @@ is-regex@^1.0.5: dependencies: has "^1.0.3" +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-regexp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" @@ -5077,6 +5350,12 @@ is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + dependencies: + call-bind "^1.0.2" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -5089,6 +5368,12 @@ is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" +is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + dependencies: + has-tostringtag "^1.0.0" + is-svg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" @@ -5101,10 +5386,22 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + dependencies: + has-symbols "^1.0.2" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + dependencies: + call-bind "^1.0.2" + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -5212,6 +5509,10 @@ js-levenshtein@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" +js-sdsl@^4.1.4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5236,13 +5537,19 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdoctypeparser@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz#acfb936c26300d98f1405cb03e20b06748e512a8" +jsdoc-type-pratt-parser@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz#a4a56bdc6e82e5865ffd9febc5b1a227ff28e67e" jsesc@^2.5.1: version "2.5.2" @@ -5382,12 +5689,12 @@ levenary@^1.1.1: dependencies: leven "^3.1.0" -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + prelude-ls "^1.2.1" + type-check "~0.4.0" license-webpack-plugin@^2.1.4: version "2.1.4" @@ -5440,15 +5747,6 @@ listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -5477,13 +5775,6 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -5523,6 +5814,10 @@ lodash.memoize@~3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -5608,6 +5903,12 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + dependencies: + yallist "^4.0.0" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -5727,6 +6028,10 @@ merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" +merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -5752,6 +6057,13 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -5795,6 +6107,12 @@ minimatch@3.0.4, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimatch@^3.0.5, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + dependencies: + brace-expansion "^1.1.7" + minimist-options@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.0.2.tgz#29c4021373ded40d546186725e57761e4b1984a7" @@ -5805,7 +6123,10 @@ minimist-options@^4.0.1: minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" minipass-collect@^1.0.2: version "1.0.2" @@ -5920,7 +6241,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: moment@^2.29.1: version "2.29.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4" - integrity sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg== move-concurrently@^1.0.1: version "1.0.1" @@ -5945,10 +6265,6 @@ ms@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - nan@^2.12.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -5960,7 +6276,6 @@ nanoid@3.1.20: nanoid@^3.1.22: version "3.1.31" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.31.tgz#f5b58a1ce1b7604da5f0605757840598d8974dc6" - integrity sha512-ZivnJm0o9bb13p2Ot5CpgC2rQdzB9Uxm/mFZweqm5eMViqOJe3PV6LU2E30SiLgheesmcPrjquqraoolONSA0A== nanomatch@^1.2.9: version "1.2.13" @@ -5978,6 +6293,10 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -6031,9 +6350,8 @@ node-preload@^0.2.1: node-releases@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" - integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: +normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" dependencies: @@ -6142,6 +6460,10 @@ object-hash@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + object-inspect@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" @@ -6165,6 +6487,15 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -6187,6 +6518,14 @@ object.values@^1.1.0: function-bind "^1.1.1" has "^1.0.3" +object.values@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -6209,16 +6548,16 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" os-browserify@^0.3.0, os-browserify@~0.3.0: version "0.3.0" @@ -6232,10 +6571,6 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - ospath@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" @@ -6258,12 +6593,6 @@ p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -6276,12 +6605,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -6310,10 +6633,6 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -6373,12 +6692,6 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -6435,16 +6748,14 @@ path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + path-platform@~0.11.15: version "0.11.15" resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -6470,13 +6781,16 @@ performance-now@^2.1.0: picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" -pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + +pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -6490,12 +6804,6 @@ pirates@^4.0.0: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - dependencies: - find-up "^2.1.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -7153,9 +7461,9 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.1 source-map "^0.6.1" supports-color "^6.1.0" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" pretty-bytes@^5.4.1: version "5.4.1" @@ -7179,10 +7487,6 @@ process@^0.11.10, process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -7296,13 +7600,6 @@ read-only-stream@^2.0.0: dependencies: readable-stream "^2.0.2" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - read-pkg-up@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -7311,14 +7608,6 @@ read-pkg-up@^7.0.0: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -7410,14 +7699,22 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" regexpp@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + regexpu-core@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" @@ -7440,10 +7737,6 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -regextras@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.0.tgz#2298bef8cfb92b1b7e3b9b12aa8f69547b7d71e4" - regjsgen@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" @@ -7578,12 +7871,20 @@ resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0: is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" dependencies: path-parse "^1.0.6" +resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -7598,13 +7899,6 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -7646,12 +7940,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -run-async@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" - dependencies: - is-promise "^2.1.0" - run-parallel@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" @@ -7668,12 +7956,6 @@ rxjs@^6.3.3: dependencies: tslib "^1.9.0" -rxjs@^6.5.3: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - dependencies: - tslib "^1.9.0" - safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" @@ -7682,13 +7964,21 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -7725,10 +8015,16 @@ semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" -semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" +semver@^7.0.0, semver@^7.3.7, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + dependencies: + lru-cache "^6.0.0" + serialize-javascript@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -7804,6 +8100,14 @@ 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" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -7815,7 +8119,6 @@ simple-concat@^1.0.0: simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= dependencies: is-arrayish "^0.3.1" @@ -7879,7 +8182,6 @@ source-map-resolve@^0.5.0: source-map-support@^0.5.16, source-map-support@~0.5.12: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -7895,7 +8197,6 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.3: source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spawn-wrap@^2.0.0: version "2.0.0" @@ -7926,6 +8227,13 @@ spdx-expression-parse@^3.0.0: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" +spdx-expression-parse@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + spdx-license-ids@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" @@ -8075,6 +8383,14 @@ string.prototype.trimend@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trimend@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimleft@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" @@ -8098,6 +8414,14 @@ string.prototype.trimstart@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trimstart@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -8148,6 +8472,12 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + dependencies: + ansi-regex "^5.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -8170,14 +8500,10 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.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" -strip-json-comments@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" - style-search@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" @@ -8289,6 +8615,10 @@ supports-color@^7.2.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + svg-sprite-generator@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/svg-sprite-generator/-/svg-sprite-generator-0.0.7.tgz#159777ce3e83e800f255cedd311da761492163e9" @@ -8330,7 +8660,7 @@ syntax-error@^1.1.1: dependencies: acorn-node "^1.2.0" -table@^5.2.3, table@^5.4.6: +table@^5.4.6: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" dependencies: @@ -8374,7 +8704,6 @@ terser-webpack-plugin@^2.3.6: terser@^4.1.2, terser@^4.6.12: version "4.8.1" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -8403,7 +8732,7 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -"through@>=2.2.7 <3", through@^2.3.6: +"through@>=2.2.7 <3": version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -8423,12 +8752,6 @@ timsort@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - tmp@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" @@ -8504,6 +8827,15 @@ ts-loader@^7.0.1: micromatch "^4.0.0" semver "^6.0.0" +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" @@ -8532,9 +8864,9 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" dependencies: tslib "^1.8.1" @@ -8556,15 +8888,15 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" dependencies: - prelude-ls "~1.1.2" + prelude-ls "^1.2.1" -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" type-fest@^0.6.0: version "0.6.0" @@ -8584,7 +8916,7 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@3.8.3, typescript@^3.7.3: +typescript@3.8.3: version "3.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" @@ -8592,6 +8924,15 @@ umd@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + undeclared-identifiers@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" @@ -8792,7 +9133,7 @@ v8-compile-cache@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0: +v8-compile-cache@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -8911,6 +9252,16 @@ webpack@^4.43.0: watchpack "^1.6.1" webpack-sources "^1.4.1" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -8933,7 +9284,7 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"