diff --git a/.babelrc b/.babelrc
index b2f5cd96..3cb084c9 100644
--- a/.babelrc
+++ b/.babelrc
@@ -10,5 +10,10 @@
"babel-plugin-add-module-exports",
"babel-plugin-class-display-name",
"@babel/plugin-transform-runtime"
- ]
+ ],
+ "env": {
+ "test": {
+ "plugins": [ "istanbul" ]
+ }
+ }
}
diff --git a/.gitignore b/.gitignore
index 52c29337..db93fc47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,6 @@ test/cypress/screenshots
test/cypress/videos
dist/
+
+coverage/
+.nyc_output/
diff --git a/cypress.json b/cypress.json
index 732aea68..2bed0b88 100644
--- a/cypress.json
+++ b/cypress.json
@@ -1,9 +1,11 @@
{
"env": {
+ "NODE_ENV": "test"
},
"fixturesFolder": "test/cypress/fixtures",
"integrationFolder": "test/cypress/tests",
"screenshotsFolder": "test/cypress/screenshots",
"videosFolder": "test/cypress/videos",
- "supportFile": "test/cypress/support/index.ts"
+ "supportFile": "test/cypress/support/index.ts",
+ "pluginsFile": "test/cypress/plugins/index.ts"
}
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index d7e4ad70..599322b7 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+### 2.20.0
+
+- `New` — [Block Tunes API](block-tunes.md) added
+
### 2.19.3
- `Fix` — Ignore error raised by Shortcut module
diff --git a/docs/block-tunes.md b/docs/block-tunes.md
new file mode 100644
index 00000000..1e8c2ce6
--- /dev/null
+++ b/docs/block-tunes.md
@@ -0,0 +1,168 @@
+# Block Tunes
+
+Similar with [Tools](tools.md) represented Blocks, you can create Block Tunes and connect it to particular Tool or for all Tools.
+
+Block Tunes allows you to set any additional options to Blocks. For example, with corresponded Block Tunes you can mark Block as «spoiler», give it an anchor, set a background, and so on.
+
+## Base structure
+
+Tune's class should have the `isTune` property (static getter) set to `true`.
+
+Block Tune must implement the `render()` method which returns an HTML Element that will be appended to the Block Settings panel.
+
+- `render()` — create a button
+
+Also, you can provide optional methods
+
+- `wrap()` — wraps Block content with own HTML elements
+- `save()` — save Tunes state on Editor's save
+
+At the constructor of Tune's class exemplar you will receive an object with following parameters:
+
+| Parameter | Description |
+| --------- | ----------- |
+| api | Editor's [API](api.md) obejct |
+| settings | Configuration of Block Tool Tune is connected to (might be useful in some cases) |
+| block | [Block API](api.md#block-api) methods for block Tune is connected to |
+| data | Saved Tune data |
+
+---
+
+### render(): HTMLElement
+
+Method that returns button to append to the block settings area
+
+#### Parameters
+
+Method does not accept any parameters
+
+#### Return value
+
+type | description |
+-- | -- |
+`HTMLElement` | element that will be added to the block settings area |
+
+---
+
+### wrap(blockContent: HTMLElement): HTMLElement
+
+Method that accepts Block's content and wrap it with your own layout.
+Might be useful if you want to modify Block appearance.
+
+```javascript
+class Tune {
+ wrap(blockContent) {
+ const myWrapper = document.createElement('div');
+
+ myWrapper.append(blockContent);
+
+ return myWrapper;
+ }
+}
+```
+
+#### Parameters
+
+name | type | description |
+-- |-- | -- |
+blockContent | HTMLElement | Block's content (might be wrapped by other Tunes) |
+
+#### Return value
+
+| type | description |
+| -- | -- |
+| HTMLElement | Your element that wraps block content |
+
+---
+
+### save()
+
+Method should return Tune's state you want to save to Editor's output
+
+#### Parameters
+
+No parameters
+
+#### Return value
+
+type | description |
+-- | -- |
+`any` | any data you want to save |
+
+---
+
+### static prepare()
+
+If you need to prepare some data for Tune (eg. load external script, create HTML nodes in the document, etc) you can use the static `prepare()` method.
+
+It accepts tunes config passed on Editor's initialization as an argument:
+
+
+```javascript
+class Tune {
+ static prepare(config) {
+ loadScript();
+ insertNodes();
+ ...
+ }
+}
+```
+
+#### Parameters
+
+type | description |
+-- | -- |
+`object` | your Tune configuration |
+
+
+#### Return value
+
+No return value
+
+---
+
+### static reset()
+
+On Editor destroy you can use an opposite method `reset` to clean up all prepared data:
+
+```javascript
+class Tune {
+ static reset() {
+ cleanUpScripts();
+ deleteNodes();
+ ...
+ }
+}
+```
+
+#### Parameters
+
+No parameters
+
+#### Return value
+
+No return value
+
+---
+
+#### Format
+
+Tunes data is saved to `tunes` property of output object:
+
+```
+{
+ blocks: [
+ {
+ type: 'paragraph',
+ data: {
+ text: 'This is paragraph with Tune'
+ },
+ tunes: {
+ 'my-tune-name': {},
+ favorite: true,
+ anchor: 'might be string'
+ }
+ }
+ ]
+}
+```
diff --git a/docs/tools.md b/docs/tools.md
index 6f782ecc..85108cf8 100644
--- a/docs/tools.md
+++ b/docs/tools.md
@@ -59,6 +59,7 @@ Options that Tool can specify. All settings should be passed as static propertie
| `toolbox` | _Object_ | `undefined` | Pass here `icon` and `title` to display this `Tool` in the Editor's `Toolbox`
`icon` - HTML string with icon for Toolbox
`title` - optional title to display in Toolbox |
| `enableLineBreaks` | _Boolean_ | `false` | With this option, Editor.js won't handle Enter keydowns. Can be helpful for Tools like `` where line breaks should be handled by default behaviour. |
| `isInline` | _Boolean_ | `false` | Describes Tool as a [Tool for the Inline Toolbar](tools-inline.md) |
+| `isTune` | _Boolean_ | `false` | Describes Tool as a [Block Tune](block-tunes.md) |
| `sanitize` | _Object_ | `undefined` | Config for automatic sanitizing of saved data. See [Sanitize](#sanitize) section. |
| `conversionConfig` | _Object_ | `undefined` | Config allows Tool to specify how it can be converted into/from another Tool. See [Conversion config](#conversion-config) section. |
diff --git a/example/example-dev.html b/example/example-dev.html
index 2ae6f1d2..824bc4f5 100644
--- a/example/example-dev.html
+++ b/example/example-dev.html
@@ -114,6 +114,7 @@
* Tools list
*/
tools: {
+
/**
* Each Tool is a Plugin. Pass them via 'class' option with necessary settings {@link docs/tools.md}
*/
diff --git a/package.json b/package.json
index 19aff379..7d52a57c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@editorjs/editorjs",
- "version": "2.19.3",
+ "version": "2.20.0",
"description": "Editor.js — Native JS, based on API and Open Source",
"main": "dist/editor.js",
"types": "./types/index.d.ts",
@@ -37,21 +37,27 @@
"@babel/plugin-transform-runtime": "^7.9.0",
"@babel/polyfill": "^7.8.7",
"@babel/preset-env": "^7.9.5",
+ "@babel/preset-typescript": "^7.13.0",
"@babel/register": "^7.9.0",
"@babel/runtime": "^7.9.2",
"@codexteam/shortcuts": "^1.1.1",
+ "@cypress/code-coverage": "^3.9.2",
+ "@cypress/webpack-preprocessor": "^5.6.0",
+ "@types/node": "^14.14.35",
"@types/webpack": "^4.41.12",
"@types/webpack-env": "^1.15.2",
"babel-loader": "^8.1.0",
"babel-plugin-add-module-exports": "^1.0.0",
"babel-plugin-class-display-name": "^2.1.0",
+ "babel-plugin-istanbul": "^6.0.0",
"core-js": "3.6.5",
"css-loader": "^3.5.3",
"cssnano": "^4.1.10",
- "cypress": "^5.5.0",
+ "cypress": "^6.8.0",
"eslint": "^6.8.0",
"eslint-config-codex": "^1.3.3",
"eslint-loader": "^4.0.2",
+ "eslint-plugin-chai-friendly": "^0.6.0",
"eslint-plugin-cypress": "^2.11.2",
"extract-text-webpack-plugin": "^3.0.2",
"html-janitor": "^2.0.4",
diff --git a/src/components/block-tunes/block-tune-delete.ts b/src/components/block-tunes/block-tune-delete.ts
index 87a8cf85..b6e74333 100644
--- a/src/components/block-tunes/block-tune-delete.ts
+++ b/src/components/block-tunes/block-tune-delete.ts
@@ -11,6 +11,11 @@ import $ from '../dom';
*
*/
export default class DeleteTune implements BlockTune {
+ /**
+ * Set Tool is Tune
+ */
+ public static readonly isTune = true;
+
/**
* Property that contains Editor.js API methods
*
diff --git a/src/components/block-tunes/block-tune-move-down.ts b/src/components/block-tunes/block-tune-move-down.ts
index f095f6db..f6faa7e1 100644
--- a/src/components/block-tunes/block-tune-move-down.ts
+++ b/src/components/block-tunes/block-tune-move-down.ts
@@ -12,6 +12,11 @@ import { API, BlockTune } from '../../../types';
*
*/
export default class MoveDownTune implements BlockTune {
+ /**
+ * Set Tool is Tune
+ */
+ public static readonly isTune = true;
+
/**
* Property that contains Editor.js API methods
*
diff --git a/src/components/block-tunes/block-tune-move-up.ts b/src/components/block-tunes/block-tune-move-up.ts
index 0005af91..4b0943b6 100644
--- a/src/components/block-tunes/block-tune-move-up.ts
+++ b/src/components/block-tunes/block-tune-move-up.ts
@@ -11,6 +11,11 @@ import { API, BlockTune } from '../../../types';
*
*/
export default class MoveUpTune implements BlockTune {
+ /**
+ * Set Tool is Tune
+ */
+ public static readonly isTune = true;
+
/**
* Property that contains Editor.js API methods
*
diff --git a/src/components/block/index.ts b/src/components/block/index.ts
index 9bdaaf08..62c32489 100644
--- a/src/components/block/index.ts
+++ b/src/components/block/index.ts
@@ -3,8 +3,7 @@ import {
BlockTool as IBlockTool,
BlockToolConstructable,
BlockToolData,
- BlockTune,
- BlockTuneConstructable,
+ BlockTune as IBlockTune,
SanitizerConfig,
ToolConfig,
ToolSettings
@@ -15,24 +14,17 @@ import $ from '../dom';
import * as _ from '../utils';
import ApiModules from '../modules/api';
import BlockAPI from './api';
-import { ToolType } from '../modules/tools';
import SelectionUtils from '../selection';
import BlockTool from '../tools/block';
-/** Import default tunes */
-import MoveUpTune from '../block-tunes/block-tune-move-up';
-import DeleteTune from '../block-tunes/block-tune-delete';
-import MoveDownTune from '../block-tunes/block-tune-move-down';
+import BlockTune from '../tools/tune';
+import { BlockTuneData } from '../../../types/block-tunes/block-tune-data';
+import ToolsCollection from '../tools/collection';
/**
* Interface describes Block class constructor argument
*/
interface BlockConstructorOptions {
- /**
- * Tool's name
- */
- name: string;
-
/**
* Initial Block data
*/
@@ -52,6 +44,16 @@ interface BlockConstructorOptions {
* This flag indicates that the Block should be constructed in the read-only mode.
*/
readOnly: boolean;
+
+ /**
+ * Tunes for current Block
+ */
+ tunes: ToolsCollection;
+
+ /**
+ * Tunes data for current Block
+ */
+ tunesData: {[name: string]: BlockTuneData};
}
/**
@@ -126,7 +128,7 @@ export default class Block {
/**
* Tunes used by Tool
*/
- public readonly tunes: BlockTune[];
+ public readonly tunes: ToolsCollection;
/**
* Tool's user configuration
@@ -145,6 +147,22 @@ export default class Block {
*/
private readonly toolInstance: IBlockTool;
+ /**
+ * User provided Block Tunes instances
+ */
+ private readonly tunesInstances: Map = new Map();
+
+ /**
+ * Editor provided Block Tunes instances
+ */
+ private readonly defaultTunesInstances: Map = new Map();
+
+ /**
+ * If there is saved data for Tune which is not available at the moment,
+ * we will store it here and provide back on save so data is not lost
+ */
+ private unavailableTunesData: {[name: string]: BlockTuneData} = {};
+
/**
* Editor`s API module
*/
@@ -195,7 +213,6 @@ export default class Block {
/**
* @param {object} options - block constructor options
- * @param {string} options.name - Tool name that passed on initialization
* @param {BlockToolData} options.data - Tool's initial data
* @param {BlockToolConstructable} options.Tool — Tool's class
* @param {ToolSettings} options.settings - default tool's config
@@ -203,13 +220,14 @@ export default class Block {
* @param {boolean} options.readOnly - Read-Only flag
*/
constructor({
- name,
data,
tool,
api,
readOnly,
+ tunes,
+ tunesData,
}: BlockConstructorOptions) {
- this.name = name;
+ this.name = tool.name;
this.settings = tool.settings;
this.config = tool.settings.config || {};
this.api = api;
@@ -218,13 +236,16 @@ export default class Block {
this.mutationObserver = new MutationObserver(this.didMutated);
this.tool = tool;
- this.toolInstance = tool.instance(data, this.blockAPI, readOnly);
+ this.toolInstance = tool.create(data, this.blockAPI, readOnly);
- this.holder = this.compose();
/**
* @type {BlockTune[]}
*/
- this.tunes = this.makeTunes();
+ this.tunes = tunes;
+
+ this.composeTunes(tunesData);
+
+ this.holder = this.compose();
}
/**
@@ -526,6 +547,21 @@ export default class Block {
*/
public async save(): Promise {
const extractedBlock = await this.toolInstance.save(this.pluginsContent as HTMLElement);
+ const tunesData: {[name: string]: BlockTuneData} = this.unavailableTunesData;
+
+ [
+ ...this.tunesInstances.entries(),
+ ...this.defaultTunesInstances.entries(),
+ ]
+ .forEach(([name, tune]) => {
+ if (_.isFunction(tune.save)) {
+ try {
+ tunesData[name] = tune.save();
+ } catch (e) {
+ _.log(`Tune ${tune.constructor.name} save method throws an Error %o`, 'warn', e);
+ }
+ }
+ });
/**
* Measuring execution time
@@ -541,6 +577,7 @@ export default class Block {
return {
tool: this.name,
data: finishedExtraction,
+ tunes: tunesData,
time: measuringEnd - measuringStart,
};
})
@@ -568,50 +605,23 @@ export default class Block {
return isValid;
}
- /**
- * Make an array with default settings
- * Each block has default tune instance that have states
- *
- * @returns {BlockTune[]}
- */
- public makeTunes(): BlockTune[] {
- const tunesList = [
- {
- name: 'moveUp',
- Tune: MoveUpTune,
- },
- {
- name: 'delete',
- Tune: DeleteTune,
- },
- {
- name: 'moveDown',
- Tune: MoveDownTune,
- },
- ];
-
- // Pluck tunes list and return tune instances with passed Editor API and settings
- return tunesList.map(({ name, Tune }: {name: string; Tune: BlockTuneConstructable}) => {
- return new Tune({
- api: this.api.getMethodsForTool(name, ToolType.Tune),
- settings: this.config,
- });
- });
- }
-
/**
* Enumerates initialized tunes and returns fragment that can be appended to the toolbars area
*
- * @returns {DocumentFragment}
+ * @returns {DocumentFragment[]}
*/
- public renderTunes(): DocumentFragment {
+ public renderTunes(): [DocumentFragment, DocumentFragment] {
const tunesElement = document.createDocumentFragment();
+ const defaultTunesElement = document.createDocumentFragment();
- this.tunes.forEach((tune) => {
+ this.tunesInstances.forEach((tune) => {
$.append(tunesElement, tune.render());
});
+ this.defaultTunesInstances.forEach((tune) => {
+ $.append(defaultTunesElement, tune.render());
+ });
- return tunesElement;
+ return [tunesElement, defaultTunesElement];
}
/**
@@ -690,11 +700,57 @@ export default class Block {
pluginsContent = this.toolInstance.render();
contentNode.appendChild(pluginsContent);
- wrapper.appendChild(contentNode);
+
+ /**
+ * Block Tunes might wrap Block's content node to provide any UI changes
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+ let wrappedContentNode: HTMLElement = contentNode;
+
+ [...this.tunesInstances.values(), ...this.defaultTunesInstances.values()]
+ .forEach((tune) => {
+ if (_.isFunction(tune.wrap)) {
+ try {
+ wrappedContentNode = tune.wrap(wrappedContentNode);
+ } catch (e) {
+ _.log(`Tune ${tune.constructor.name} wrap method throws an Error %o`, 'warn', e);
+ }
+ }
+ });
+
+ wrapper.appendChild(wrappedContentNode);
return wrapper;
}
+ /**
+ * Instantiate Block Tunes
+ *
+ * @param tunesData - current Block tunes data
+ * @private
+ */
+ private composeTunes(tunesData: {[name: string]: BlockTuneData}): void {
+ Array.from(this.tunes.values()).forEach((tune) => {
+ const collection = tune.isInternal ? this.defaultTunesInstances : this.tunesInstances;
+
+ collection.set(tune.name, tune.create(tunesData[tune.name], this.blockAPI));
+ });
+
+ /**
+ * Check if there is some data for not available tunes
+ */
+ Object.entries(tunesData).forEach(([name, data]) => {
+ if (!this.tunesInstances.has(name)) {
+ this.unavailableTunesData[name] = data;
+ }
+ });
+ }
+
/**
* Is fired when text input or contentEditable is focused
*/
diff --git a/src/components/modules/api/i18n.ts b/src/components/modules/api/i18n.ts
index 6f702c60..ec406802 100644
--- a/src/components/modules/api/i18n.ts
+++ b/src/components/modules/api/i18n.ts
@@ -1,8 +1,8 @@
import { I18n } from '../../../../types/api';
import I18nInternal from '../../i18n';
-import { ToolType } from '../tools';
import { logLabeled } from '../../utils';
import Module from '../../__module';
+import { ToolClass } from '../../tools/collection';
/**
* Provides methods for working with i18n
@@ -11,17 +11,14 @@ export default class I18nAPI extends Module {
/**
* Return namespace section for tool or block tune
*
- * @param toolName - name of tool. Used to provide dictionary only for this tool
- * @param toolType - 'block' for Block Tool, 'inline' for Inline Tool, 'tune' for Block Tunes
+ * @param tool - tool object
*/
- private static getNamespace(toolName: string, toolType: ToolType): string {
- switch (toolType) {
- case ToolType.Block:
- case ToolType.Inline:
- return `tools.${toolName}`;
- case ToolType.Tune:
- return `blockTunes.${toolName}`;
+ private static getNamespace(tool: ToolClass): string {
+ if (tool.isTune) {
+ return `blockTunes.${tool.name}`;
}
+
+ return `tools.${tool.name}`;
}
/**
@@ -40,15 +37,14 @@ export default class I18nAPI extends Module {
/**
* Return I18n API methods with tool namespaced dictionary
*
- * @param toolName - name of tool. Used to provide dictionary only for this tool
- * @param toolType - 'block' for Block Tool, 'inline' for Inline Tool, 'tune' for Block Tunes
+ * @param tool - Tool object
*/
- public getMethodsForTool(toolName: string, toolType: ToolType): I18n {
+ public getMethodsForTool(tool: ToolClass): I18n {
return Object.assign(
this.methods,
{
t: (dictKey: string): string => {
- return I18nInternal.t(I18nAPI.getNamespace(toolName, toolType), dictKey);
+ return I18nInternal.t(I18nAPI.getNamespace(tool), dictKey);
},
});
}
diff --git a/src/components/modules/api/index.ts b/src/components/modules/api/index.ts
index c765e5a6..db875771 100644
--- a/src/components/modules/api/index.ts
+++ b/src/components/modules/api/index.ts
@@ -7,7 +7,7 @@
*/
import Module from '../../__module';
import { API as APIInterfaces } from '../../../../types';
-import { ToolType } from '../tools';
+import { ToolClass } from '../../tools/collection';
/**
* @class API
@@ -38,16 +38,13 @@ export default class API extends Module {
/**
* Returns Editor.js Core API methods for passed tool
*
- * @param toolName - how user name tool. It can be used in some API logic,
- * for example in i18n to provide namespaced dictionary
- *
- * @param toolType - 'block' for Block Tool, 'inline' for Inline Tool, 'tune' for Block Tunes
+ * @param tool - tool object
*/
- public getMethodsForTool(toolName: string, toolType = ToolType.Block): APIInterfaces {
+ public getMethodsForTool(tool: ToolClass): APIInterfaces {
return Object.assign(
this.methods,
{
- i18n: this.Editor.I18nAPI.getMethodsForTool(toolName, toolType),
+ i18n: this.Editor.I18nAPI.getMethodsForTool(tool),
}
) as APIInterfaces;
}
diff --git a/src/components/modules/blockEvents.ts b/src/components/modules/blockEvents.ts
index 4fb43db7..89cd5077 100644
--- a/src/components/modules/blockEvents.ts
+++ b/src/components/modules/blockEvents.ts
@@ -118,7 +118,7 @@ export default class BlockEvents extends Module {
*/
this.Editor.BlockSelection.clearSelection(event);
- const { BlockManager, Tools, InlineToolbar, ConversionToolbar } = this.Editor;
+ const { BlockManager, InlineToolbar, ConversionToolbar } = this.Editor;
const currentBlock = BlockManager.currentBlock;
if (!currentBlock) {
diff --git a/src/components/modules/blockManager.ts b/src/components/modules/blockManager.ts
index 9027c0ea..d672d60c 100644
--- a/src/components/modules/blockManager.ts
+++ b/src/components/modules/blockManager.ts
@@ -11,8 +11,8 @@ import Module from '../__module';
import $ from '../dom';
import * as _ from '../utils';
import Blocks from '../blocks';
-import { BlockToolConstructable, BlockToolData, PasteEvent } from '../../../types';
-import BlockTool from '../tools/block';
+import { BlockToolData, PasteEvent } from '../../../types';
+import { BlockTuneData } from '../../../types/block-tunes/block-tune-data';
/**
* @typedef {BlockManager} BlockManager
@@ -220,15 +220,21 @@ export default class BlockManager extends Module {
*
* @returns {Block}
*/
- public composeBlock({ tool: name, data = {} }: {tool: string; data?: BlockToolData}): Block {
+ public composeBlock({
+ tool: name,
+ data = {},
+ tunes: tunesData = {},
+ }: {tool: string; data?: BlockToolData; tunes?: {[name: string]: BlockTuneData}}): Block {
const readOnly = this.Editor.ReadOnly.isEnabled;
const tool = this.Editor.Tools.blockTools.get(name);
+ const tunes = this.Editor.Tools.getTunesForTool(tool);
const block = new Block({
- name,
data,
tool,
api: this.Editor.API,
readOnly,
+ tunes,
+ tunesData,
});
if (!readOnly) {
@@ -256,12 +262,14 @@ export default class BlockManager extends Module {
index,
needToFocus = true,
replace = false,
+ tunes = {},
}: {
tool?: string;
data?: BlockToolData;
index?: number;
needToFocus?: boolean;
replace?: boolean;
+ tunes?: {[name: string]: BlockTuneData};
} = {}): Block {
let newIndex = index;
@@ -272,6 +280,7 @@ export default class BlockManager extends Module {
const block = this.composeBlock({
tool,
data,
+ tunes,
});
this._blocks.insert(newIndex, block, replace);
diff --git a/src/components/modules/paste.ts b/src/components/modules/paste.ts
index 1b5e3562..fea1bd33 100644
--- a/src/components/modules/paste.ts
+++ b/src/components/modules/paste.ts
@@ -222,7 +222,7 @@ export default class Paste extends Module {
* @param {boolean} isHTML - if passed string is HTML, this parameter should be true
*/
public async processText(data: string, isHTML = false): Promise {
- const { Caret, BlockManager, Tools } = this.Editor;
+ const { Caret, BlockManager } = this.Editor;
const dataToInsert = isHTML ? this.processHTML(data) : this.processPlain(data);
if (!dataToInsert.length) {
@@ -283,7 +283,7 @@ export default class Paste extends Module {
*/
private processTool = (tool: BlockTool): void => {
try {
- const toolInstance = tool.instance({}, {} as BlockAPI, false);
+ const toolInstance = tool.create({}, {} as BlockAPI, false);
if (tool.pasteConfig === false) {
this.exceptionList.push(tool.name);
@@ -300,7 +300,7 @@ export default class Paste extends Module {
this.getPatternsConfig(tool);
} catch (e) {
_.log(
- `Paste handling for «${name}» Tool hasn't been set up because of the error`,
+ `Paste handling for «${tool.name}» Tool hasn't been set up because of the error`,
'warn',
e
);
@@ -389,7 +389,7 @@ export default class Paste extends Module {
/** Still need to validate pattern as it provided by user */
if (!(pattern instanceof RegExp)) {
_.log(
- `Pattern ${pattern} for «${name}» Tool is skipped because it should be a Regexp instance.`,
+ `Pattern ${pattern} for «${tool.name}» Tool is skipped because it should be a Regexp instance.`,
'warn'
);
}
diff --git a/src/components/modules/renderer.ts b/src/components/modules/renderer.ts
index 6b68b2ba..b9651b01 100644
--- a/src/components/modules/renderer.ts
+++ b/src/components/modules/renderer.ts
@@ -64,14 +64,14 @@ export default class Renderer extends Module {
*/
public async insertBlock(item: OutputBlockData): Promise {
const { Tools, BlockManager } = this.Editor;
- const tool = item.type;
- const data = item.data;
+ const { type: tool, data, tunes } = item;
if (Tools.available.has(tool)) {
try {
BlockManager.insert({
tool,
data,
+ tunes,
});
} catch (error) {
_.log(`Block «${tool}» skipped because of plugins error`, 'warn', data);
diff --git a/src/components/modules/saver.ts b/src/components/modules/saver.ts
index 3c0879b0..d32ff1d3 100644
--- a/src/components/modules/saver.ts
+++ b/src/components/modules/saver.ts
@@ -78,7 +78,7 @@ export default class Saver extends Module {
_.log('[Editor.js saving]:', 'groupCollapsed');
- allExtractedData.forEach(({ tool, data, time, isValid }) => {
+ allExtractedData.forEach(({ tool, data, tunes, time, isValid }) => {
totalTime += time;
/**
@@ -104,10 +104,16 @@ export default class Saver extends Module {
return;
}
- blocks.push({
+ const output: any = {
type: tool,
data,
- });
+ };
+
+ if (!_.isEmpty(tunes)) {
+ output.tunes = tunes;
+ }
+
+ blocks.push(output);
});
_.log('Total', 'log', totalTime);
diff --git a/src/components/modules/toolbar/blockSettings.ts b/src/components/modules/toolbar/blockSettings.ts
index 8cdda140..b6ad7922 100644
--- a/src/components/modules/toolbar/blockSettings.ts
+++ b/src/components/modules/toolbar/blockSettings.ts
@@ -144,7 +144,7 @@ export default class BlockSettings extends Module {
/**
* Add default settings that presents for all Blocks
*/
- this.addDefaultSettings();
+ this.addTunes();
/** Tell to subscribers that block settings is opened */
this.eventsDispatcher.emit(this.events.opened);
@@ -237,10 +237,13 @@ export default class BlockSettings extends Module {
}
/**
- * Add default settings
+ * Add tunes: provided by user and default ones
*/
- private addDefaultSettings(): void {
- $.append(this.nodes.defaultSettings, this.Editor.BlockManager.currentBlock.renderTunes());
+ private addTunes(): void {
+ const [toolTunes, defaultTunes] = this.Editor.BlockManager.currentBlock.renderTunes();
+
+ $.append(this.nodes.toolSettings, toolTunes);
+ $.append(this.nodes.defaultSettings, defaultTunes);
}
/**
diff --git a/src/components/modules/toolbar/inline.ts b/src/components/modules/toolbar/inline.ts
index 7c8c77cc..3d89aa47 100644
--- a/src/components/modules/toolbar/inline.ts
+++ b/src/components/modules/toolbar/inline.ts
@@ -7,7 +7,6 @@ import Flipper from '../../flipper';
import I18n from '../../i18n';
import { I18nInternalNS } from '../../i18n/namespace-internal';
import Shortcuts from '../../utils/shortcuts';
-import { ToolType } from '../tools';
import InlineTool from '../../tools/inline';
import { CommonInternalSettings } from '../../tools/base';
import BlockTool from '../../tools/block';
@@ -594,7 +593,7 @@ export default class InlineToolbar extends Module {
Tooltip,
} = this.Editor;
- const instance = tool.instance();
+ const instance = tool.create();
const button = instance.render();
if (!button) {
@@ -670,7 +669,7 @@ export default class InlineToolbar extends Module {
* 2) For external tools, check tool's settings
* 3) If shortcut is not set in settings, check Tool's public property
*/
- const internalTools = Tools.getInternal(ToolType.Inline);
+ const internalTools = Tools.internal.inlineTools;
if (Array.from(internalTools.keys()).includes(toolName)) {
return this.inlineTools[toolName][CommonInternalSettings.Shortcut];
@@ -747,7 +746,7 @@ export default class InlineToolbar extends Module {
Array
.from(this.Editor.Tools.inlineTools.entries())
.forEach(([name, tool]) => {
- result[name] = tool.instance();
+ result[name] = tool.create();
});
return result;
diff --git a/src/components/modules/tools.ts b/src/components/modules/tools.ts
index 5c4842b6..856b5a22 100644
--- a/src/components/modules/tools.ts
+++ b/src/components/modules/tools.ts
@@ -15,7 +15,10 @@ import ToolsFactory from '../tools/factory';
import InlineTool from '../tools/inline';
import BlockTool from '../tools/block';
import BlockTune from '../tools/tune';
-import BaseTool from '../tools/base';
+import MoveDownTune from '../block-tunes/block-tune-move-down';
+import DeleteTune from '../block-tunes/block-tune-delete';
+import MoveUpTune from '../block-tunes/block-tune-move-up';
+import ToolsCollection from '../tools/collection';
/**
* @module Editor.js Tools Submodule
@@ -49,7 +52,7 @@ export default class Tools extends Module {
*
* @returns {object}
*/
- public get available(): Map {
+ public get available(): ToolsCollection {
return this.toolsAvailable;
}
@@ -58,7 +61,7 @@ export default class Tools extends Module {
*
* @returns {Tool[]}
*/
- public get unavailable(): Map {
+ public get unavailable(): ToolsCollection {
return this.toolsUnavailable;
}
@@ -67,61 +70,24 @@ export default class Tools extends Module {
*
* @returns {object} - object of Inline Tool's classes
*/
- public get inlineTools(): Map {
- if (this._inlineTools) {
- return this._inlineTools;
- }
-
- const tools = Array
- .from(this.available.entries())
- .filter(([name, tool]: [string, BaseTool]) => {
- if (tool.type !== ToolType.Inline) {
- return false;
- }
- /**
- * Some Tools validation
- */
- const inlineToolRequiredMethods = ['render', 'surround', 'checkState'];
- const notImplementedMethods = inlineToolRequiredMethods.filter((method) => !tool.instance()[method]);
-
- if (notImplementedMethods.length) {
- _.log(
- `Incorrect Inline Tool: ${tool.name}. Some of required methods is not implemented %o`,
- 'warn',
- notImplementedMethods
- );
-
- return false;
- }
-
- return true;
- });
-
- /**
- * Cache prepared Tools
- */
- this._inlineTools = new Map(tools) as Map;
-
- return this._inlineTools;
+ public get inlineTools(): ToolsCollection {
+ return this.available.inlineTools;
}
/**
* Return editor block tools
*/
- public get blockTools(): Map {
- if (this._blockTools) {
- return this._blockTools;
- }
+ public get blockTools(): ToolsCollection {
+ return this.available.blockTools;
+ }
- const tools = Array
- .from(this.available.entries())
- .filter(([, tool]) => {
- return tool.type === ToolType.Block;
- });
-
- this._blockTools = new Map(tools) as Map;
-
- return this._blockTools;
+ /**
+ * Return available Block Tunes
+ *
+ * @returns {object} - object of Inline Tool's classes
+ */
+ public get blockTunes(): ToolsCollection {
+ return this.available.blockTunes;
}
/**
@@ -139,43 +105,18 @@ export default class Tools extends Module {
/**
* Tools` classes available to use
*/
- private readonly toolsAvailable: Map = new Map();
+ private readonly toolsAvailable: ToolsCollection = new ToolsCollection();
/**
* Tools` classes not available to use because of preparation failure
*/
- private readonly toolsUnavailable: Map = new Map();
-
- /**
- * Cache for the prepared inline tools
- *
- * @type {null|object}
- * @private
- */
- private _inlineTools: Map = null;
-
- /**
- * Cache for the prepared block tools
- */
- private _blockTools: Map = null;
+ private readonly toolsUnavailable: ToolsCollection = new ToolsCollection();
/**
* Returns internal tools
- *
- * @param type - if passed, Tools will be filtered by type
*/
- public getInternal(type?: ToolType): Map {
- let tools = Array
- .from(this.available.entries())
- .filter(([, tool]) => {
- return tool.isInternal;
- });
-
- if (type) {
- tools = tools.filter(([, tool]) => tool.type === type);
- }
-
- return new Map(tools);
+ public get internal(): ToolsCollection {
+ return this.available.internalTools;
}
/**
@@ -221,11 +162,57 @@ export default class Tools extends Module {
});
}
+ /**
+ * Returns Block Tunes for passed Tool
+ *
+ * @param tool - Tool object
+ */
+ public getTunesForTool(tool: BlockTool): ToolsCollection {
+ const names = tool.enabledBlockTunes;
+
+ if (names === false) {
+ return new ToolsCollection();
+ }
+
+ if (Array.isArray(names)) {
+ return new ToolsCollection(
+ Array
+ .from(this.blockTunes.entries())
+ .filter(([, tune]) => names.includes(tune.name))
+ .concat([ ...this.blockTunes.internalTools.entries() ])
+ );
+ }
+
+ const defaultTuneNames = this.config.tunes;
+
+ if (Array.isArray(defaultTuneNames)) {
+ return new ToolsCollection(
+ Array
+ .from(this.blockTunes.entries())
+ .filter(([, tune]) => defaultTuneNames.includes(tune.name))
+ .concat([ ...this.blockTunes.internalTools.entries() ])
+ );
+ }
+
+ return this.blockTunes.internalTools;
+ }
+
+ /**
+ * Calls each Tool reset method to clean up anything set by Tool
+ */
+ public destroy(): void {
+ Object.values(this.available).forEach(async tool => {
+ if (_.isFunction(tool.reset)) {
+ await tool.reset();
+ }
+ });
+ }
+
/**
* Returns internal tools
* Includes Bold, Italic, Link and Paragraph
*/
- public get internalTools(): { [toolName: string]: ToolConstructable | ToolSettings & { isInternal?: boolean } } {
+ private get internalTools(): { [toolName: string]: ToolConstructable | ToolSettings & { isInternal?: boolean } } {
return {
bold: {
class: BoldInlineTool,
@@ -248,27 +235,50 @@ export default class Tools extends Module {
class: Stub,
isInternal: true,
},
+ moveUpTune: {
+ class: MoveUpTune,
+ isInternal: true,
+ },
+ deleteTune: {
+ class: DeleteTune,
+ isInternal: true,
+ },
+ moveDownTune: {
+ class: MoveDownTune,
+ isInternal: true,
+ },
};
}
- /**
- * Calls each Tool reset method to clean up anything set by Tool
- */
- public destroy(): void {
- Object.values(this.available).forEach(async tool => {
- if (_.isFunction(tool.reset)) {
- await tool.reset();
- }
- });
- }
-
/**
* Tool prepare method success callback
*
* @param {object} data - append tool to available list
*/
private toolPrepareMethodSuccess(data: { toolName: string }): void {
- this.toolsAvailable.set(data.toolName, this.factory.get(data.toolName));
+ const tool = this.factory.get(data.toolName);
+
+ if (tool.isInline()) {
+ /**
+ * Some Tools validation
+ */
+ const inlineToolRequiredMethods = ['render', 'surround', 'checkState'];
+ const notImplementedMethods = inlineToolRequiredMethods.filter((method) => !tool.create()[method]);
+
+ if (notImplementedMethods.length) {
+ _.log(
+ `Incorrect Inline Tool: ${tool.name}. Some of required methods is not implemented %o`,
+ 'warn',
+ notImplementedMethods
+ );
+
+ this.toolsUnavailable.set(tool.name, tool);
+
+ return;
+ }
+ }
+
+ this.toolsAvailable.set(tool.name, tool);
}
/**
@@ -358,22 +368,3 @@ export default class Tools extends Module {
return config;
}
}
-
-/**
- * What kind of plugins developers can create
- */
-export enum ToolType {
- /**
- * Block tool
- */
- Block,
- /**
- * Inline tool
- */
- Inline,
-
- /**
- * Block tune
- */
- Tune,
-}
diff --git a/src/components/tools/base.ts b/src/components/tools/base.ts
index 179c44e6..862a2afb 100644
--- a/src/components/tools/base.ts
+++ b/src/components/tools/base.ts
@@ -1,7 +1,29 @@
-import { ToolType } from '../modules/tools';
import { Tool, ToolConstructable, ToolSettings } from '../../../types/tools';
-import { API, SanitizerConfig } from '../../../types';
+import { SanitizerConfig } from '../../../types';
import * as _ from '../utils';
+import type InlineTool from './inline';
+import type BlockTool from './block';
+import type BlockTune from './tune';
+import API from '../modules/api';
+
+/**
+ * What kind of plugins developers can create
+ */
+export enum ToolType {
+ /**
+ * Block tool
+ */
+ Block,
+ /**
+ * Inline tool
+ */
+ Inline,
+
+ /**
+ * Block tune
+ */
+ Tune,
+}
/**
* Enum of Tool options provided by user
@@ -19,6 +41,10 @@ export enum UserSettings {
* Enabled Inline Tools for Block Tool
*/
EnabledInlineTools = 'inlineToolbar',
+ /**
+ * Enabled Block Tunes for Block Tool
+ */
+ EnabledBlockTunes = 'tunes',
/**
* Tool configuration
*/
@@ -105,7 +131,7 @@ interface ConstructorOptions {
/**
* Base abstract class for Tools
*/
-export default abstract class BaseTool {
+export default abstract class BaseTool {
/**
* Tool type: Block, Inline or Tune
*/
@@ -214,7 +240,7 @@ export default abstract class BaseTool {
*/
public get shortcut(): string | undefined {
const toolShortcut = this.constructable[CommonInternalSettings.Shortcut];
- const userShortcut = this.settings[UserSettings.Shortcut];
+ const userShortcut = this.config[UserSettings.Shortcut];
return userShortcut || toolShortcut;
}
@@ -226,10 +252,31 @@ export default abstract class BaseTool {
return this.constructable[CommonInternalSettings.SanitizeConfig];
}
+ /**
+ * Returns true if Tools is inline
+ */
+ public isInline(): this is InlineTool {
+ return this.type === ToolType.Inline;
+ }
+
+ /**
+ * Returns true if Tools is block
+ */
+ public isBlock(): this is BlockTool {
+ return this.type === ToolType.Block;
+ }
+
+ /**
+ * Returns true if Tools is tune
+ */
+ public isTune(): this is BlockTune {
+ return this.type === ToolType.Tune;
+ }
+
/**
* Constructs new Tool instance from constructable blueprint
*
* @param args
*/
- public abstract instance(...args: any[]): Type;
+ public abstract create(...args: any[]): Type;
}
diff --git a/src/components/tools/block.ts b/src/components/tools/block.ts
index 3e20e98d..610e6748 100644
--- a/src/components/tools/block.ts
+++ b/src/components/tools/block.ts
@@ -1,8 +1,8 @@
-import BaseTool, { InternalBlockToolSettings, UserSettings } from './base';
-import { ToolType } from '../modules/tools';
+import BaseTool, { InternalBlockToolSettings, ToolType, UserSettings } from './base';
import {
BlockAPI,
BlockTool as IBlockTool,
+ BlockToolConstructable,
BlockToolData,
ConversionConfig,
PasteConfig,
@@ -19,6 +19,11 @@ export default class BlockTool extends BaseTool {
*/
public type = ToolType.Block;
+ /**
+ * Tool's constructable blueprint
+ */
+ protected constructable: BlockToolConstructable;
+
/**
* Creates new Tool instance
*
@@ -26,13 +31,13 @@ export default class BlockTool extends BaseTool {
* @param block - BlockAPI for current Block
* @param readOnly - True if Editor is in read-only mode
*/
- public instance(data: BlockToolData, block: BlockAPI, readOnly: boolean): IBlockTool {
+ public create(data: BlockToolData, block: BlockAPI, readOnly: boolean): IBlockTool {
// eslint-disable-next-line new-cap
return new this.constructable({
data,
block,
readOnly,
- api: this.api,
+ api: this.api.getMethodsForTool(this),
config: this.settings,
}) as IBlockTool;
}
@@ -56,7 +61,7 @@ export default class BlockTool extends BaseTool {
*/
public get toolbox(): ToolboxConfig {
const toolToolboxSettings = this.constructable[InternalBlockToolSettings.Toolbox] as ToolboxConfig;
- const userToolboxSettings = this.settings[UserSettings.Toolbox];
+ const userToolboxSettings = this.config[UserSettings.Toolbox];
if (_.isEmpty(toolToolboxSettings)) {
return;
@@ -83,6 +88,13 @@ export default class BlockTool extends BaseTool {
return this.config[UserSettings.EnabledInlineTools];
}
+ /**
+ * Returns enabled tunes for Tool
+ */
+ public get enabledBlockTunes(): boolean | string[] {
+ return this.config[UserSettings.EnabledBlockTunes];
+ }
+
/**
* Returns Tool paste configuration
*/
diff --git a/src/components/tools/collection.ts b/src/components/tools/collection.ts
new file mode 100644
index 00000000..38ebf8c4
--- /dev/null
+++ b/src/components/tools/collection.ts
@@ -0,0 +1,65 @@
+import BlockTool from './block';
+import InlineTool from './inline';
+import BlockTune from './tune';
+
+export type ToolClass = BlockTool | InlineTool | BlockTune;
+
+/**
+ * Class to store Editor Tools
+ */
+export default class ToolsCollection extends Map {
+ /**
+ * Returns Block Tools collection
+ */
+ public get blockTools(): ToolsCollection {
+ const tools = Array
+ .from(this.entries())
+ .filter(([, tool]) => tool.isBlock()) as [string, BlockTool][];
+
+ return new ToolsCollection(tools);
+ }
+
+ /**
+ * Returns Inline Tools collection
+ */
+ public get inlineTools(): ToolsCollection {
+ const tools = Array
+ .from(this.entries())
+ .filter(([, tool]) => tool.isInline()) as [string, InlineTool][];
+
+ return new ToolsCollection(tools);
+ }
+
+ /**
+ * Returns Block Tunes collection
+ */
+ public get blockTunes(): ToolsCollection {
+ const tools = Array
+ .from(this.entries())
+ .filter(([, tool]) => tool.isTune()) as [string, BlockTune][];
+
+ return new ToolsCollection(tools);
+ }
+
+ /**
+ * Returns internal Tools collection
+ */
+ public get internalTools(): ToolsCollection {
+ const tools = Array
+ .from(this.entries())
+ .filter(([, tool]) => tool.isInternal);
+
+ return new ToolsCollection(tools);
+ }
+
+ /**
+ * Returns Tools collection provided by user
+ */
+ public get externalTools(): ToolsCollection {
+ const tools = Array
+ .from(this.entries())
+ .filter(([, tool]) => !tool.isInternal);
+
+ return new ToolsCollection(tools);
+ }
+}
diff --git a/src/components/tools/factory.ts b/src/components/tools/factory.ts
index d0d96a36..f994d396 100644
--- a/src/components/tools/factory.ts
+++ b/src/components/tools/factory.ts
@@ -4,7 +4,6 @@ import InlineTool from './inline';
import BlockTune from './tune';
import BlockTool from './block';
import API from '../modules/api';
-import { ToolType } from '../modules/tools';
import { EditorConfig } from '../../../types/configs';
type ToolConstructor = typeof InlineTool | typeof BlockTool | typeof BlockTune;
@@ -53,13 +52,13 @@ export default class ToolsFactory {
public get(name: string): InlineTool | BlockTool | BlockTune {
const { class: constructable, isInternal = false, ...config } = this.config[name];
- const [Constructor, type] = this.getConstructor(constructable);
+ const Constructor = this.getConstructor(constructable);
return new Constructor({
name,
constructable,
config,
- api: this.api.getMethodsForTool(name, type),
+ api: this.api,
isDefault: name === this.editorConfig.defaultBlock,
defaultPlaceholder: this.editorConfig.placeholder,
isInternal,
@@ -71,14 +70,14 @@ export default class ToolsFactory {
*
* @param constructable - Tools constructable
*/
- private getConstructor(constructable: ToolConstructable): [ToolConstructor, ToolType] {
+ private getConstructor(constructable: ToolConstructable): ToolConstructor {
switch (true) {
case constructable[InternalInlineToolSettings.IsInline]:
- return [InlineTool, ToolType.Inline];
+ return InlineTool;
case constructable[InternalTuneSettings.IsTune]:
- return [BlockTune, ToolType.Tune];
+ return BlockTune;
default:
- return [BlockTool, ToolType.Block];
+ return BlockTool;
}
}
}
diff --git a/src/components/tools/inline.ts b/src/components/tools/inline.ts
index 257866cc..281d0d7d 100644
--- a/src/components/tools/inline.ts
+++ b/src/components/tools/inline.ts
@@ -1,6 +1,5 @@
-import BaseTool, { InternalInlineToolSettings } from './base';
-import { ToolType } from '../modules/tools';
-import { InlineTool as IInlineTool } from '../../../types';
+import BaseTool, { InternalInlineToolSettings, ToolType } from './base';
+import { InlineTool as IInlineTool, InlineToolConstructable } from '../../../types';
/**
* InlineTool object to work with Inline Tools constructables
@@ -11,6 +10,11 @@ export default class InlineTool extends BaseTool {
*/
public type = ToolType.Inline;
+ /**
+ * Tool's constructable blueprint
+ */
+ protected constructable: InlineToolConstructable;
+
/**
* Returns title for Inline Tool if specified by user
*/
@@ -21,10 +25,10 @@ export default class InlineTool extends BaseTool {
/**
* Constructs new InlineTool instance from constructable
*/
- public instance(): IInlineTool {
+ public create(): IInlineTool {
// eslint-disable-next-line new-cap
return new this.constructable({
- api: this.api,
+ api: this.api.getMethodsForTool(this),
config: this.settings,
}) as IInlineTool;
}
diff --git a/src/components/tools/tune.ts b/src/components/tools/tune.ts
index 799dafe0..d52f32a6 100644
--- a/src/components/tools/tune.ts
+++ b/src/components/tools/tune.ts
@@ -1,21 +1,36 @@
-import BaseTool from './base';
-import { ToolType } from '../modules/tools';
+import BaseTool, { ToolType } from './base';
+import { BlockAPI, BlockTune as IBlockTune, BlockTuneConstructable } from '../../../types';
+import { BlockTuneData } from '../../../types/block-tunes/block-tune-data';
/**
* Stub class for BlockTunes
*
* @todo Implement
*/
-export default class BlockTune extends BaseTool {
+export default class BlockTune extends BaseTool {
/**
* Tool type — Tune
*/
public type = ToolType.Tune;
/**
- * @todo implement
+ * Tool's constructable blueprint
*/
- public instance(): any {
- return undefined;
+ protected readonly constructable: BlockTuneConstructable;
+
+ /**
+ * Constructs new BlockTune instance from constructable
+ *
+ * @param data - Tune data
+ * @param block - Block API object
+ */
+ public create(data: BlockTuneData, block: BlockAPI): IBlockTune {
+ // eslint-disable-next-line new-cap
+ return new this.constructable({
+ api: this.api.getMethodsForTool(this),
+ settings: this.settings,
+ block,
+ data,
+ });
}
}
diff --git a/test/cypress/.eslintrc b/test/cypress/.eslintrc
index 9318c8d8..8b90cf86 100644
--- a/test/cypress/.eslintrc
+++ b/test/cypress/.eslintrc
@@ -1,12 +1,14 @@
{
"plugins": [
- "cypress"
+ "cypress",
+ "chai-friendly"
],
"env": {
"cypress/globals": true
},
"extends": [
- "plugin:cypress/recommended"
+ "plugin:cypress/recommended",
+ "plugin:chai-friendly/recommended"
],
"rules": {
"cypress/require-data-selectors": 2
@@ -14,4 +16,4 @@
"globals": {
"EditorJS": true
}
-}
\ No newline at end of file
+}
diff --git a/test/cypress/plugins/index.ts b/test/cypress/plugins/index.ts
index 11c2d42f..06d4b245 100644
--- a/test/cypress/plugins/index.ts
+++ b/test/cypress/plugins/index.ts
@@ -1,5 +1,38 @@
+/* tslint:disable:no-var-requires */
/**
* This file contains connection of Cypres plugins
*/
-// eslint-disable-next-line @typescript-eslint/no-empty-function
-// export default function(on, config): void {}
+const webpackConfig = require('../../../webpack.config.js');
+const preprocessor = require('@cypress/webpack-preprocessor');
+const codeCoverageTask = require('@cypress/code-coverage/task');
+
+module.exports = (on, config): any => {
+ /**
+ * Add Cypress task to get code coverage
+ */
+ codeCoverageTask(on, config);
+
+ /**
+ * Prepare webpack preprocessor options
+ */
+ const options = preprocessor.defaultOptions;
+
+ /**
+ * Provide path to typescript package
+ */
+ options.typescript = require.resolve('typescript');
+
+ /**
+ * Provide our webpack config
+ */
+ options.webpackOptions = webpackConfig({}, { mode: 'test' });
+
+ /**
+ * Register webpack preprocessor
+ */
+ on('file:preprocessor', preprocessor(options));
+
+ // It's IMPORTANT to return the config object
+ // with any changed environment variables
+ return config;
+};
diff --git a/test/cypress/support/index.ts b/test/cypress/support/index.ts
index 252bff1f..a023dab5 100644
--- a/test/cypress/support/index.ts
+++ b/test/cypress/support/index.ts
@@ -6,6 +6,8 @@
* behavior that modifies Cypress.
*/
+import '@cypress/code-coverage/support';
+
/**
* File with the helpful commands
*/
diff --git a/test/cypress/tests/initialization.spec.ts b/test/cypress/tests/initialization.spec.ts
index 67750c5f..ada89c62 100644
--- a/test/cypress/tests/initialization.spec.ts
+++ b/test/cypress/tests/initialization.spec.ts
@@ -9,7 +9,7 @@ describe('Editor basic initialization', () => {
const editorConfig = {};
beforeEach(() => {
- if (this.editorInstance) {
+ if (this && 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
new file mode 100644
index 00000000..4361fb33
--- /dev/null
+++ b/test/cypress/tests/modules/Tools.spec.ts
@@ -0,0 +1,215 @@
+/* tslint:disable:max-classes-per-file */
+/* eslint-disable @typescript-eslint/ban-ts-ignore */
+import Tools from '../../../../src/components/modules/tools';
+import { EditorConfig } from '../../../../types';
+import BlockTool from '../../../../src/components/tools/block';
+
+describe('Tools module', () => {
+ const defaultConfig = {
+ tools: {},
+ };
+
+ /**
+ * Construct Tools module for testing purposes
+ *
+ * @param config - Editor config
+ */
+ function constructModule(config: EditorConfig = defaultConfig): Tools {
+ const module = new Tools({
+ config,
+ eventsDispatcher: {},
+ } as any);
+
+ const APIMethods = {
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ method(): void {},
+ };
+
+ /**
+ * Module state should be Editor modules, so we mock required ones only
+ */
+ module.state = {
+ API: {
+ getMethodsForTool(): typeof APIMethods {
+ return APIMethods;
+ },
+ },
+ } as any;
+
+ return module;
+ }
+
+ context('.prepare()', () => {
+ it('should return Promise resolved to void', async () => {
+ const module = constructModule();
+
+ let err;
+
+ try {
+ await module.prepare();
+ } catch (e) {
+ err = e;
+ }
+
+ expect(err).to.be.undefined;
+ });
+
+ it('should throw an error if tools config is corrupted', async () => {
+ const module = constructModule({
+ tools: {
+ // @ts-ignore
+ corruptedTool: 'value',
+ },
+ });
+
+ let err;
+
+ try {
+ await module.prepare();
+ } catch (e) {
+ err = e;
+ }
+
+ expect(err).to.be.instanceOf(Error);
+ });
+ });
+
+ context('collection accessors', () => {
+ let module: Tools;
+
+ beforeEach(async () => {
+ module = constructModule({
+ defaultBlock: 'withoutPrepare',
+ tools: {
+ withSuccessfulPrepare: class {
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ public static prepare(): void {}
+ } as any,
+ withFailedPrepare: class {
+ public static prepare(): void {
+ throw new Error();
+ }
+ } as any,
+ withoutPrepare: class {
+ } as any,
+ inlineTool: class {
+ public static isInline = true
+
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ public render(): void {}
+
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ public surround(): void {}
+
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ public checkState(): void {}
+ } as any,
+ /**
+ * This tool will be unavailable as it doesn't have required methods
+ */
+ unavailableInlineTool: class {
+ public static isInline = true;
+ } as any,
+ blockTune: class {
+ public static isTune = true;
+ } as any,
+ unavailableBlockTune: class {
+ public static isTune = true;
+
+ public static prepare(): void {
+ throw new Error();
+ }
+ } as any,
+ },
+ });
+
+ await module.prepare();
+ });
+
+ context('.available', () => {
+ it('should return Map instance', () => {
+ expect(module.available).to.be.instanceOf(Map);
+ });
+
+ it('should contain only ready to use Tools', () => {
+ expect(module.available.has('withSuccessfulPrepare')).to.be.true;
+ expect(module.available.has('withoutPrepare')).to.be.true;
+ expect(module.available.has('withFailedPrepare')).to.be.false;
+ expect(module.available.has('unavailableInlineTool')).to.be.false;
+ });
+ });
+
+ context('.unavailable', () => {
+ it('should return Map instance', () => {
+ expect(module.unavailable).to.be.instanceOf(Map);
+ });
+
+ it('should contain only ready to use Tools', () => {
+ expect(module.unavailable.has('withSuccessfulPrepare')).to.be.false;
+ expect(module.unavailable.has('withoutPrepare')).to.be.false;
+ expect(module.unavailable.has('withFailedPrepare')).to.be.true;
+ expect(module.unavailable.has('unavailableInlineTool')).to.be.true;
+ });
+ });
+
+ context('.inlineTools', () => {
+ it('should return Map instance', () => {
+ expect(module.inlineTools).to.be.instanceOf(Map);
+ });
+
+ it('should contain only available Inline Tools', () => {
+ expect(module.inlineTools.has('inlineTool')).to.be.true;
+ expect(module.inlineTools.has('unavailableInlineTool')).to.be.false;
+ expect(Array.from(module.inlineTools.values()).every(tool => tool.isInline())).to.be.true;
+ });
+ });
+
+ context('.blockTools', () => {
+ it('should return Map instance', () => {
+ expect(module.blockTools).to.be.instanceOf(Map);
+ });
+
+ it('should contain only available Block Tools', () => {
+ expect(module.blockTools.has('withSuccessfulPrepare')).to.be.true;
+ expect(module.blockTools.has('withoutPrepare')).to.be.true;
+ expect(module.blockTools.has('withFailedPrepare')).to.be.false;
+ expect(Array.from(module.blockTools.values()).every(tool => tool.isBlock())).to.be.true;
+ });
+ });
+
+ context('.blockTunes', () => {
+ it('should return Map instance', () => {
+ expect(module.blockTunes).to.be.instanceOf(Map);
+ });
+
+ it('should contain only available Block Tunes', () => {
+ expect(module.blockTunes.has('blockTune')).to.be.true;
+ expect(module.blockTunes.has('unavailableBlockTune')).to.be.false;
+ expect(Array.from(module.blockTunes.values()).every(tool => tool.isTune())).to.be.true;
+ });
+ });
+
+ context('.internal', () => {
+ it('should return Map instance', () => {
+ expect(module.internal).to.be.instanceOf(Map);
+ });
+
+ it('should contain only internal tunes', () => {
+ expect(Array.from(module.internal.values()).every(tool => tool.isInternal)).to.be.true;
+ });
+ });
+
+ context('.defaultTools', () => {
+ /**
+ * @todo add check if user provided default tool is not Block Tool
+ */
+ it('should return BlockTool instance', () => {
+ expect(module.defaultTool).to.be.instanceOf(BlockTool);
+ });
+
+ it('should return default Tool', () => {
+ expect(module.defaultTool.isDefault).to.be.true;
+ });
+ });
+ });
+});
diff --git a/test/cypress/tests/tools/BlockTool.spec.ts b/test/cypress/tests/tools/BlockTool.spec.ts
new file mode 100644
index 00000000..89853ff7
--- /dev/null
+++ b/test/cypress/tests/tools/BlockTool.spec.ts
@@ -0,0 +1,379 @@
+/* tslint:disable:max-classes-per-file */
+import { BlockToolData, ToolSettings } from '../../../../types';
+import { ToolType } from '../../../../src/components/tools/base';
+import BlockTool from '../../../../src/components/tools/block';
+
+describe('BlockTool', () => {
+ /**
+ * Mock for BlockTool constructor options
+ */
+ const options = {
+ name: 'blockTool',
+ constructable: class {
+ public static sanitize = {
+ rule1: 'rule1',
+ }
+
+ public static toolbox = {
+ icon: 'Tool icon',
+ title: 'Tool title',
+ };
+
+ public static enableLineBreaks = true;
+
+ public static pasteConfig = {
+ tags: [ 'div' ],
+ };
+
+ public static conversionConfig = {
+ import: 'import',
+ export: 'export',
+ };
+
+ public static isReadOnlySupported = true;
+
+ public static reset;
+ public static prepare;
+
+ public static shortcut = 'CTRL+N';
+
+ public data: BlockToolData;
+ public block: object;
+ public readonly: boolean;
+ public api: object;
+ public config: ToolSettings;
+
+ /**
+ *
+ */
+ constructor({ data, block, readOnly, api, config }) {
+ this.data = data;
+ this.block = block;
+ this.readonly = readOnly;
+ this.api = api;
+ this.config = config;
+ }
+ },
+ config: {
+ config: {
+ option1: 'option1',
+ option2: 'option2',
+ },
+ inlineToolbar: ['link', 'bold'],
+ tunes: ['anchor', 'favorites'],
+ shortcut: 'CMD+SHIFT+B',
+ toolbox: {
+ title: 'User Block Tool',
+ icon: 'User icon',
+ },
+ },
+ api: {
+ getMethodsForTool(): object {
+ return {
+ prop1: 'prop1',
+ prop2: 'prop2',
+ };
+ },
+ },
+ isDefault: false,
+ isInternal: false,
+ defaultPlaceholder: 'Default placeholder',
+ };
+
+ it('.type should return ToolType.Block', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.type).to.be.eq(ToolType.Block);
+ });
+
+ it('.name should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.name).to.be.eq(options.name);
+ });
+
+ it('.isDefault should return correct value', () => {
+ const tool1 = new BlockTool(options as any);
+ const tool2 = new BlockTool({
+ ...options,
+ isDefault: true,
+ } as any);
+
+ expect(tool1.isDefault).to.be.false;
+ expect(tool2.isDefault).to.be.true;
+ });
+
+ it('.isInternal should return correct value', () => {
+ const tool1 = new BlockTool(options as any);
+ const tool2 = new BlockTool({
+ ...options,
+ isInternal: true,
+ } as any);
+
+ expect(tool1.isInternal).to.be.false;
+ expect(tool2.isInternal).to.be.true;
+ });
+
+ context('.settings', () => {
+ it('should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.settings).to.be.deep.eq(options.config.config);
+ });
+
+ it('should add default placeholder if Tool is default', () => {
+ const tool = new BlockTool({
+ ...options,
+ isDefault: true,
+ } as any);
+
+ expect(tool.settings).to.have.property('placeholder').that.eq(options.defaultPlaceholder);
+ });
+ });
+
+ it('.sanitizeConfig should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.sanitizeConfig).to.be.deep.eq(options.constructable.sanitize);
+ });
+
+ it('.isBlock() should return true', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.isBlock()).to.be.true;
+ });
+
+ it('.isInline() should return false', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.isInline()).to.be.false;
+ });
+
+ it('.isTune() should return false', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.isTune()).to.be.false;
+ });
+
+ it('.isReadOnlySupported should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.isReadOnlySupported).to.be.eq(options.constructable.isReadOnlySupported);
+ });
+
+ it('.isLineBreaksEnabled should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.isLineBreaksEnabled).to.be.eq(options.constructable.enableLineBreaks);
+ });
+
+ it('.conversionConfig should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.conversionConfig).to.be.deep.eq(options.constructable.conversionConfig);
+ });
+
+ it('.pasteConfig should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.pasteConfig).to.be.deep.eq(options.constructable.pasteConfig);
+ });
+
+ it('.enabledInlineTools should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.enabledInlineTools).to.be.deep.eq(options.config.inlineToolbar);
+ });
+
+ it('.enabledBlockTunes should return correct value', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.enabledBlockTunes).to.be.deep.eq(options.config.tunes);
+ });
+
+ context('.prepare()', () => {
+ it('should call Tool prepare method', () => {
+ options.constructable.prepare = cy.stub();
+ const tool = new BlockTool(options as any);
+
+ tool.prepare();
+
+ expect(options.constructable.prepare).to.have.been.calledWithMatch({
+ toolName: tool.name,
+ config: tool.settings,
+ });
+ });
+
+ it('should not fail if Tool prepare method is not exist', () => {
+ const tool = new BlockTool({
+ ...options,
+ constructable: {},
+ } as any);
+
+ expect(tool.prepare).to.not.throw;
+ });
+ });
+
+ context('.reset()', () => {
+ it('should call Tool reset method', () => {
+ options.constructable.reset = cy.stub();
+ const tool = new BlockTool(options as any);
+
+ tool.reset();
+
+ expect(options.constructable.reset).to.be.calledOnce;
+ });
+
+ it('should not fail if Tool reset method is not exist', () => {
+ const tool = new BlockTool({
+ ...options,
+ constructable: {},
+ } as any);
+
+ expect(tool.reset).to.not.throw;
+ });
+ });
+
+ context('.shortcut', () => {
+ it('should return user provided shortcut', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.shortcut).to.be.eq(options.config.shortcut);
+ });
+
+ it('should return Tool provided shortcut if user one is not specified', () => {
+ const tool = new BlockTool({
+ ...options,
+ config: {
+ ...options.config,
+ shortcut: undefined,
+ },
+ } as any);
+
+ expect(tool.shortcut).to.be.eq(options.constructable.shortcut);
+ });
+ });
+
+ context('.toolbox', () => {
+ it('should return user provided toolbox config', () => {
+ const tool = new BlockTool(options as any);
+
+ expect(tool.toolbox).to.be.deep.eq(options.config.toolbox);
+ });
+
+ it('should return Tool provided toolbox config if user one is not specified', () => {
+ const tool = new BlockTool({
+ ...options,
+ config: {
+ ...options.config,
+ toolbox: undefined,
+ },
+ } as any);
+
+ expect(tool.toolbox).to.be.deep.eq(options.constructable.toolbox);
+ });
+
+ it('should merge Tool provided toolbox config and user one', () => {
+ const tool1 = new BlockTool({
+ ...options,
+ config: {
+ ...options.config,
+ toolbox: {
+ title: options.config.toolbox.title,
+ },
+ },
+ } as any);
+ const tool2 = new BlockTool({
+ ...options,
+ config: {
+ ...options.config,
+ toolbox: {
+ icon: options.config.toolbox.icon,
+ },
+ },
+ } as any);
+
+ expect(tool1.toolbox).to.be.deep.eq(Object.assign({}, options.constructable.toolbox, { title: options.config.toolbox.title }));
+ expect(tool2.toolbox).to.be.deep.eq(Object.assign({}, options.constructable.toolbox, { icon: options.config.toolbox.icon }));
+ });
+
+ it('should return undefined if user specifies false as a value', () => {
+ const tool = new BlockTool({
+ ...options,
+ config: {
+ ...options.config,
+ toolbox: false,
+ },
+ } as any);
+
+ expect(tool.toolbox).to.be.undefined;
+ });
+
+ it('should return undefined if Tool specifies false as a value', () => {
+ const tool = new BlockTool({
+ ...options,
+ constructable: class {
+ public static toolbox = false
+ },
+ } as any);
+
+ expect(tool.toolbox).to.be.undefined;
+ });
+
+ it('should return undefined if Tool provides empty config', () => {
+ const tool = new BlockTool({
+ ...options,
+ constructable: class {
+ public static toolbox = {}
+ },
+ } as any);
+
+ expect(tool.toolbox).to.be.undefined;
+ });
+ });
+
+ context('.create()', () => {
+ const tool = new BlockTool(options as any);
+ const data = { text: 'text' };
+ const blockAPI = {
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ method(): void {},
+ };
+
+ it('should return Tool instance', () => {
+ expect(tool.create(data, blockAPI as any, false)).to.be.instanceOf(options.constructable);
+ });
+
+ it('should return Tool instance with passed data', () => {
+ const instance = tool.create(data, blockAPI as any, false) as any;
+
+ expect(instance.data).to.be.deep.eq(data);
+ });
+
+ it('should return Tool instance with passed BlockAPI object', () => {
+ const instance = tool.create(data, blockAPI as any, false) as any;
+
+ expect(instance.block).to.be.deep.eq(blockAPI);
+ });
+
+ it('should return Tool instance with passed readOnly flag', () => {
+ const instance1 = tool.create(data, blockAPI as any, false) as any;
+ const instance2 = tool.create(data, blockAPI as any, true) as any;
+
+ expect(instance1.readonly).to.be.eq(false);
+ expect(instance2.readonly).to.be.eq(true);
+ });
+
+ it('should return Tool instance with passed API object', () => {
+ const instance = tool.create(data, blockAPI as any, false) as any;
+
+ expect(instance.api).to.be.deep.eq(options.api.getMethodsForTool());
+ });
+
+ it('should return Tool instance with passed config', () => {
+ const instance = tool.create(data, blockAPI as any, false) as any;
+
+ expect(instance.config).to.be.deep.eq(options.config.config);
+ });
+ });
+});
diff --git a/test/cypress/tests/tools/BlockTune.spec.ts b/test/cypress/tests/tools/BlockTune.spec.ts
new file mode 100644
index 00000000..f922a254
--- /dev/null
+++ b/test/cypress/tests/tools/BlockTune.spec.ts
@@ -0,0 +1,178 @@
+/* tslint:disable:max-classes-per-file */
+import { ToolSettings } from '../../../../types';
+import { ToolType } from '../../../../src/components/tools/base';
+import BlockTune from '../../../../src/components/tools/tune';
+import { BlockTuneData } from '../../../../types/block-tunes/block-tune-data';
+
+describe('BlockTune', () => {
+ /**
+ * Mock for BlockTune constructor options
+ */
+ const options = {
+ name: 'blockTune',
+ constructable: class {
+ public static reset;
+ public static prepare;
+
+ public api: object;
+ public settings: ToolSettings;
+ public data: BlockTuneData;
+ public block: object;
+
+ /**
+ *
+ */
+ constructor({ api, settings, block, data }) {
+ this.api = api;
+ this.settings = settings;
+ this.block = block;
+ this.data = data;
+ }
+ },
+ config: {
+ config: {
+ option1: 'option1',
+ option2: 'option2',
+ },
+ shortcut: 'CMD+SHIFT+B',
+ },
+ api: {
+ getMethodsForTool(): object {
+ return {
+ prop1: 'prop1',
+ prop2: 'prop2',
+ };
+ },
+ },
+ isDefault: false,
+ isInternal: false,
+ defaultPlaceholder: 'Default placeholder',
+ };
+
+ it('.type should return ToolType.Tune', () => {
+ const tool = new BlockTune(options as any);
+
+ expect(tool.type).to.be.eq(ToolType.Tune);
+ });
+
+ it('.name should return correct value', () => {
+ const tool = new BlockTune(options as any);
+
+ expect(tool.name).to.be.eq(options.name);
+ });
+
+ it('.isInternal should return correct value', () => {
+ const tool1 = new BlockTune(options as any);
+ const tool2 = new BlockTune({
+ ...options,
+ isInternal: true,
+ } as any);
+
+ expect(tool1.isInternal).to.be.false;
+ expect(tool2.isInternal).to.be.true;
+ });
+
+ it('.settings should return correct value', () => {
+ const tool = new BlockTune(options as any);
+
+ expect(tool.settings).to.be.deep.eq(options.config.config);
+ });
+
+ it('.isBlock() should return false', () => {
+ const tool = new BlockTune(options as any);
+
+ expect(tool.isBlock()).to.be.false;
+ });
+
+ it('.isInline() should return false', () => {
+ const tool = new BlockTune(options as any);
+
+ expect(tool.isInline()).to.be.false;
+ });
+
+ it('.isTune() should return true', () => {
+ const tool = new BlockTune(options as any);
+
+ expect(tool.isTune()).to.be.true;
+ });
+
+ context('.prepare()', () => {
+ it('should call Tool prepare method', () => {
+ options.constructable.prepare = cy.stub();
+ const tool = new BlockTune(options as any);
+
+ tool.prepare();
+
+ expect(options.constructable.prepare).to.have.been.calledWithMatch({
+ toolName: tool.name,
+ config: tool.settings,
+ });
+ });
+
+ it('should not fail if Tool prepare method is not exist', () => {
+ const tool = new BlockTune({
+ ...options,
+ constructable: {},
+ } as any);
+
+ expect(tool.prepare).to.not.throw;
+ });
+ });
+
+ context('.reset()', () => {
+ it('should call Tool reset method', () => {
+ options.constructable.reset = cy.stub();
+ const tool = new BlockTune(options as any);
+
+ tool.reset();
+
+ expect(options.constructable.reset).to.be.calledOnce;
+ });
+
+ it('should not fail if Tool reset method is not exist', () => {
+ const tool = new BlockTune({
+ ...options,
+ constructable: {},
+ } as any);
+
+ expect(tool.reset).to.not.throw;
+ });
+ });
+
+ context('.create()', () => {
+ const tool = new BlockTune(options as any);
+ const data = { text: 'text' };
+ const blockAPI = {
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
+ method(): void {},
+ };
+
+ it('should return Tool instance', () => {
+ expect(tool.create(data, blockAPI as any)).to.be.instanceOf(options.constructable);
+ });
+
+ it('should return Tool instance with passed data', () => {
+ const instance = tool.create(data, blockAPI as any) as any;
+
+ expect(instance.data).to.be.deep.eq(data);
+ });
+
+ it('should return Tool instance with passed BlockAPI object', () => {
+ const instance = tool.create(data, blockAPI as any) as any;
+
+ expect(instance.block).to.be.deep.eq(blockAPI);
+ });
+
+ it('should return Tool instance with passed API object', () => {
+ const instance = tool.create(data, blockAPI as any) as any;
+
+ expect(instance.api).to.be.deep.eq(options.api.getMethodsForTool());
+ });
+
+ it('should return Tool instance with passed settings', () => {
+ const instance = tool.create(data, blockAPI as any) as any;
+
+ expect(instance.settings).to.be.deep.eq(options.config.config);
+ });
+ });
+});
diff --git a/test/cypress/tests/tools/InlineTool.spec.ts b/test/cypress/tests/tools/InlineTool.spec.ts
new file mode 100644
index 00000000..41c56d9b
--- /dev/null
+++ b/test/cypress/tests/tools/InlineTool.spec.ts
@@ -0,0 +1,196 @@
+/* tslint:disable:max-classes-per-file */
+import { ToolSettings } from '../../../../types';
+import { ToolType } from '../../../../src/components/tools/base';
+import InlineTool from '../../../../src/components/tools/inline';
+
+describe('InlineTool', () => {
+ /**
+ * Mock for InlineTool constructor options
+ */
+ const options = {
+ name: 'inlineTool',
+ constructable: class {
+ public static sanitize = {
+ rule1: 'rule1',
+ }
+
+ public static title = 'Title'
+
+ public static reset;
+ public static prepare;
+
+ public static shortcut = 'CTRL+N';
+
+ public api: object;
+ public config: ToolSettings;
+
+ /**
+ *
+ */
+ constructor({ api, config }) {
+ this.api = api;
+ this.config = config;
+ }
+ },
+ config: {
+ config: {
+ option1: 'option1',
+ option2: 'option2',
+ },
+ shortcut: 'CMD+SHIFT+B',
+ },
+ api: {
+ getMethodsForTool(): object {
+ return {
+ prop1: 'prop1',
+ prop2: 'prop2',
+ };
+ },
+ },
+ isDefault: false,
+ isInternal: false,
+ defaultPlaceholder: 'Default placeholder',
+ };
+
+ it('.type should return ToolType.Inline', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.type).to.be.eq(ToolType.Inline);
+ });
+
+ it('.name should return correct value', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.name).to.be.eq(options.name);
+ });
+
+ it('.title should return correct title', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.title).to.be.eq(options.constructable.title);
+ });
+
+ it('.isInternal should return correct value', () => {
+ const tool1 = new InlineTool(options as any);
+ const tool2 = new InlineTool({
+ ...options,
+ isInternal: true,
+ } as any);
+
+ expect(tool1.isInternal).to.be.false;
+ expect(tool2.isInternal).to.be.true;
+ });
+
+ it('.settings should return correct value', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.settings).to.be.deep.eq(options.config.config);
+ });
+
+ it('.sanitizeConfig should return correct value', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.sanitizeConfig).to.be.deep.eq(options.constructable.sanitize);
+ });
+
+ it('.isBlock() should return false', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.isBlock()).to.be.false;
+ });
+
+ it('.isInline() should return true', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.isInline()).to.be.true;
+ });
+
+ it('.isTune() should return false', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.isTune()).to.be.false;
+ });
+
+ context('.prepare()', () => {
+ it('should call Tool prepare method', () => {
+ options.constructable.prepare = cy.stub();
+ const tool = new InlineTool(options as any);
+
+ tool.prepare();
+
+ expect(options.constructable.prepare).to.have.been.calledWithMatch({
+ toolName: tool.name,
+ config: tool.settings,
+ });
+ });
+
+ it('should not fail if Tool prepare method is not exist', () => {
+ const tool = new InlineTool({
+ ...options,
+ constructable: {},
+ } as any);
+
+ expect(tool.prepare).to.not.throw;
+ });
+ });
+
+ context('.reset()', () => {
+ it('should call Tool reset method', () => {
+ options.constructable.reset = cy.stub();
+ const tool = new InlineTool(options as any);
+
+ tool.reset();
+
+ expect(options.constructable.reset).to.be.calledOnce;
+ });
+
+ it('should not fail if Tool reset method is not exist', () => {
+ const tool = new InlineTool({
+ ...options,
+ constructable: {},
+ } as any);
+
+ expect(tool.reset).to.not.throw;
+ });
+ });
+
+ context('.shortcut', () => {
+ it('should return user provided shortcut', () => {
+ const tool = new InlineTool(options as any);
+
+ expect(tool.shortcut).to.be.eq(options.config.shortcut);
+ });
+
+ it('should return Tool provided shortcut if user one is not specified', () => {
+ const tool = new InlineTool({
+ ...options,
+ config: {
+ ...options.config,
+ shortcut: undefined,
+ },
+ } as any);
+
+ expect(tool.shortcut).to.be.eq(options.constructable.shortcut);
+ });
+ });
+
+ context('.create()', () => {
+ const tool = new InlineTool(options as any);
+
+ it('should return Tool instance', () => {
+ expect(tool.create()).to.be.instanceOf(options.constructable);
+ });
+
+ it('should return Tool instance with passed API object', () => {
+ const instance = tool.create() as any;
+
+ expect(instance.api).to.be.deep.eq(options.api.getMethodsForTool());
+ });
+
+ it('should return Tool instance with passed config', () => {
+ const instance = tool.create() as any;
+
+ expect(instance.config).to.be.deep.eq(options.config.config);
+ });
+ });
+});
diff --git a/test/cypress/tests/tools/ToolsCollection.spec.ts b/test/cypress/tests/tools/ToolsCollection.spec.ts
new file mode 100644
index 00000000..1cc62dd8
--- /dev/null
+++ b/test/cypress/tests/tools/ToolsCollection.spec.ts
@@ -0,0 +1,185 @@
+import ToolsCollection from '../../../../src/components/tools/collection';
+import BlockTool from '../../../../src/components/tools/block';
+import InlineTool from '../../../../src/components/tools/inline';
+import BlockTune from '../../../../src/components/tools/tune';
+import BaseTool from '../../../../src/components/tools/base';
+
+const FakeTool = {
+ isBlock(): boolean {
+ return false;
+ },
+ isInline(): boolean {
+ return false;
+ },
+ isTune(): boolean {
+ return false;
+ },
+ isInternal: false,
+};
+
+const FakeBlockTool = {
+ ...FakeTool,
+ isBlock(): boolean {
+ return true;
+ },
+};
+
+const FakeInlineTool = {
+ ...FakeTool,
+ isInline(): boolean {
+ return true;
+ },
+};
+
+const FakeBlockTune = {
+ ...FakeTool,
+ isTune(): boolean {
+ return true;
+ },
+};
+
+/**
+ * Unit tests for ToolsCollection class
+ */
+describe('ToolsCollection', (): void => {
+ let collection;
+
+ /**
+ * Mock for Tools in collection
+ */
+ const fakeTools = [
+ ['block1', FakeBlockTool],
+ ['inline1', FakeInlineTool],
+ ['block2', {
+ ...FakeBlockTool,
+ isInternal: true,
+ } ],
+ ['tune1', FakeBlockTune],
+ ['block3', FakeBlockTool],
+ ['inline2', {
+ ...FakeInlineTool,
+ isInternal: true,
+ } ],
+ ['tune2', FakeBlockTune],
+ ['tune3', {
+ ...FakeBlockTune,
+ isInternal: true,
+ } ],
+ ['block3', FakeInlineTool],
+ ['block4', FakeBlockTool],
+ ];
+
+ beforeEach((): void => {
+ collection = new ToolsCollection(fakeTools as any);
+ });
+
+ it('should be instance of Map', (): void => {
+ expect(collection instanceof Map).to.be.true;
+ });
+
+ context('.blockTools', (): void => {
+ it('should return new instance of ToolsCollection', (): void => {
+ expect(collection.blockTools instanceof ToolsCollection).to.be.true;
+ });
+
+ it('result should contain only block tools', (): void => {
+ expect(
+ Array
+ .from(
+ collection.blockTools.values()
+ )
+ .every((tool: BlockTool) => tool.isBlock())
+ ).to.be.true;
+ });
+ });
+
+ context('.inlineTools', (): void => {
+ it('should return new instance of ToolsCollection', (): void => {
+ expect(collection.inlineTools instanceof ToolsCollection).to.be.true;
+ });
+
+ it('result should contain only inline tools', (): void => {
+ expect(
+ Array
+ .from(
+ collection.inlineTools.values()
+ )
+ .every((tool: InlineTool) => tool.isInline())
+ ).to.be.true;
+ });
+ });
+
+ context('.blockTunes', (): void => {
+ it('should return new instance of ToolsCollection', (): void => {
+ expect(collection.blockTunes instanceof ToolsCollection).to.be.true;
+ });
+
+ it('result should contain only block tools', (): void => {
+ expect(
+ Array
+ .from(
+ collection.blockTunes.values()
+ )
+ .every((tool: BlockTune) => tool.isTune())
+ ).to.be.true;
+ });
+ });
+
+ context('.internalTools', (): void => {
+ it('should return new instance of ToolsCollection', (): void => {
+ expect(collection.internalTools instanceof ToolsCollection).to.be.true;
+ });
+
+ it('result should contain only internal tools', (): void => {
+ expect(
+ Array
+ .from(
+ collection.internalTools.values()
+ )
+ .every((tool: BaseTool) => tool.isInternal)
+ ).to.be.true;
+ });
+ });
+
+ context('.externalTools', (): void => {
+ it('should return new instance of ToolsCollection', (): void => {
+ expect(collection.externalTools instanceof ToolsCollection).to.be.true;
+ });
+
+ it('result should contain only external tools', (): void => {
+ expect(
+ Array
+ .from(
+ collection.externalTools.values()
+ )
+ .every((tool: BaseTool) => !tool.isInternal)
+ ).to.be.true;
+ });
+ });
+
+ context('mixed access', (): void => {
+ context('.blockTunes.internalTools', (): void => {
+ it('should return only internal tunes', (): void => {
+ expect(
+ Array
+ .from(
+ collection.blockTunes.internalTools.values()
+ )
+ .every((tool: BlockTune) => tool.isTune() && tool.isInternal)
+ ).to.be.true;
+ });
+ });
+
+ context('.externalTools.blockTools', (): void => {
+ it('should return only external block tools', (): void => {
+ expect(
+ Array
+ .from(
+ collection.externalTools.blockTools.values()
+ )
+ .every((tool: BlockTool) => tool.isBlock() && !tool.isInternal)
+ ).to.be.true;
+ });
+ });
+ });
+});
diff --git a/test/cypress/tests/tools/ToolsFactory.spec.ts b/test/cypress/tests/tools/ToolsFactory.spec.ts
new file mode 100644
index 00000000..84d2ff56
--- /dev/null
+++ b/test/cypress/tests/tools/ToolsFactory.spec.ts
@@ -0,0 +1,59 @@
+import LinkInlineTool from '../../../../src/components/inline-tools/inline-tool-link';
+import MoveUpTune from '../../../../src/components/block-tunes/block-tune-move-up';
+import ToolsFactory from '../../../../src/components/tools/factory';
+import InlineTool from '../../../../src/components/tools/inline';
+import BlockTool from '../../../../src/components/tools/block';
+import BlockTune from '../../../../src/components/tools/tune';
+import Paragraph from '../../../../src/tools/paragraph/dist/bundle';
+
+describe('ToolsFactory', (): void => {
+ let factory;
+ const config = {
+ paragraph: {
+ class: Paragraph,
+ },
+ link: {
+ class: LinkInlineTool,
+ },
+ moveUp: {
+ class: MoveUpTune,
+ },
+ };
+
+ beforeEach((): void => {
+ factory = new ToolsFactory(
+ config,
+ {
+ placeholder: 'Placeholder',
+ defaultBlock: 'paragraph',
+ } as any,
+ {} as any
+ );
+ });
+
+ context('.get', (): void => {
+ it('should return appropriate tool object', (): void => {
+ const tool = factory.get('link');
+
+ expect(tool.name).to.be.eq('link');
+ });
+
+ it('should return InlineTool object for inline tool', (): void => {
+ const tool = factory.get('link');
+
+ expect(tool instanceof InlineTool).to.be.true;
+ });
+
+ it('should return BlockTool object for block tool', (): void => {
+ const tool = factory.get('paragraph');
+
+ expect(tool instanceof BlockTool).to.be.true;
+ });
+
+ it('should return BlockTune object for tune', (): void => {
+ const tool = factory.get('moveUp');
+
+ expect(tool instanceof BlockTune).to.be.true;
+ });
+ });
+});
diff --git a/test/cypress/tsconfig.json b/test/cypress/tsconfig.json
index 86b00a57..1a73982a 100644
--- a/test/cypress/tsconfig.json
+++ b/test/cypress/tsconfig.json
@@ -1,10 +1,12 @@
{
"compilerOptions": {
"target": "es2017",
- "lib": ["es2017", "dom"],
- "types": ["cypress"]
+ "lib": ["dom", "es2017", "es2018"],
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "allowSyntheticDefaultImports": true
},
"include": [
- "**/*.ts"
+ "../../**/*.ts"
]
- }
\ No newline at end of file
+ }
diff --git a/types/block-tunes/block-tune-data.d.ts b/types/block-tunes/block-tune-data.d.ts
new file mode 100644
index 00000000..d9c9805b
--- /dev/null
+++ b/types/block-tunes/block-tune-data.d.ts
@@ -0,0 +1 @@
+export type BlockTuneData = any;
diff --git a/types/block-tunes/block-tune.d.ts b/types/block-tunes/block-tune.d.ts
index 17618a9b..c4ec7589 100644
--- a/types/block-tunes/block-tune.d.ts
+++ b/types/block-tunes/block-tune.d.ts
@@ -1,4 +1,5 @@
-import {API, ToolConfig} from '../index';
+import {API, BlockAPI, ToolConfig} from '../index';
+import { BlockTuneData } from './block-tune-data';
/**
* Describes BLockTune blueprint
@@ -10,11 +11,56 @@ export interface BlockTune {
* @return {HTMLElement}
*/
render(): HTMLElement;
+
+ /**
+ * Method called on Tool render. Pass Tool content as an argument.
+ *
+ * You can wrap Tool's content with any wrapper you want to provide Tune's UI
+ *
+ * @param {HTMLElement} pluginsContent — Tool's content wrapper
+ *
+ * @return {HTMLElement}
+ */
+ wrap?(pluginsContent: HTMLElement): HTMLElement;
+
+ /**
+ * Called on Tool's saving. Should return any data Tune needs to save
+ *
+ * @return {BlockTuneData}
+ */
+ save?(): BlockTuneData;
}
/**
* Describes BlockTune class constructor function
*/
export interface BlockTuneConstructable {
- new (config: {api: API, settings?: ToolConfig}): BlockTune;
+
+ /**
+ * Flag show Tool is Block Tune
+ */
+ isTune: boolean;
+
+ /**
+ * @constructor
+ *
+ * @param config - Block Tune config
+ */
+ new(config: {
+ api: API,
+ settings?: ToolConfig,
+ block: BlockAPI,
+ data: BlockTuneData,
+ }): BlockTune;
+
+ /**
+ * Tune`s prepare method. Can be async
+ * @param data
+ */
+ prepare?(): Promise | void;
+
+ /**
+ * Tune`s reset method to clean up anything set by prepare. Can be async
+ */
+ reset?(): void | Promise;
}
diff --git a/types/configs/editor-config.d.ts b/types/configs/editor-config.d.ts
index a9353f57..dcb213e7 100644
--- a/types/configs/editor-config.d.ts
+++ b/types/configs/editor-config.d.ts
@@ -95,4 +95,9 @@ export interface EditorConfig {
* Defines default toolbar for all tools.
*/
inlineToolbar?: string[]|boolean;
+
+ /**
+ * Common Block Tunes list. Will be added to all the blocks which do not specify their own 'tunes' set
+ */
+ tunes?: string[];
}
diff --git a/types/data-formats/output-data.d.ts b/types/data-formats/output-data.d.ts
index 1e2c0a64..05961e1f 100644
--- a/types/data-formats/output-data.d.ts
+++ b/types/data-formats/output-data.d.ts
@@ -1,4 +1,5 @@
import {BlockToolData} from '../tools';
+import {BlockTuneData} from "../block-tunes/block-tune-data";
/**
* Output of one Tool
@@ -15,6 +16,11 @@ export interface OutputBlockData;
+
+ /**
+ * Block Tunes data
+ */
+ tunes?: {[name: string]: BlockTuneData};
}
export interface OutputData {
diff --git a/types/tools/index.d.ts b/types/tools/index.d.ts
index 4d43d407..b50dd40e 100644
--- a/types/tools/index.d.ts
+++ b/types/tools/index.d.ts
@@ -1,6 +1,6 @@
-import {BlockTool, BlockToolConstructable} from './block-tool';
-import {InlineTool, InlineToolConstructable} from './inline-tool';
-import {BaseTool, BaseToolConstructable} from './tool';
+import { BlockTool, BlockToolConstructable } from './block-tool';
+import { InlineTool, InlineToolConstructable } from './inline-tool';
+import { BlockTune, BlockTuneConstructable } from '../block-tunes';
export * from './block-tool';
export * from './block-tool-data';
@@ -11,5 +11,5 @@ export * from './tool-settings';
export * from './paste-events';
export * from './hook-events';
-export type Tool = BlockTool | InlineTool;
-export type ToolConstructable = BlockToolConstructable | InlineToolConstructable;
+export type Tool = BlockTool | InlineTool | BlockTune;
+export type ToolConstructable = BlockToolConstructable | InlineToolConstructable | BlockTuneConstructable;
diff --git a/types/tools/tool-settings.d.ts b/types/tools/tool-settings.d.ts
index 53b8f8c1..dd5af253 100644
--- a/types/tools/tool-settings.d.ts
+++ b/types/tools/tool-settings.d.ts
@@ -39,6 +39,12 @@ export interface ToolSettings {
*/
inlineToolbar?: boolean | string[];
+ /**
+ * BlockTunes for Tool
+ * Can accept array of tune names or boolean.
+ */
+ tunes?: boolean | string[];
+
/**
* Define shortcut that will render Tool
*/
diff --git a/yarn.lock b/yarn.lock
index dc468281..efbfc224 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8,6 +8,18 @@
dependencies:
"@babel/highlight" "^7.8.3"
+"@babel/code-frame@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
+ integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
+ dependencies:
+ "@babel/highlight" "^7.12.13"
+
+"@babel/compat-data@^7.13.8":
+ version "7.13.11"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.11.tgz#9c8fe523c206979c9a81b1e12fe50c1254f1aa35"
+ integrity sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg==
+
"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c"
@@ -16,6 +28,26 @@
invariant "^2.2.4"
semver "^5.5.0"
+"@babel/core@7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a"
+ integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/generator" "^7.4.4"
+ "@babel/helpers" "^7.4.4"
+ "@babel/parser" "^7.4.5"
+ "@babel/template" "^7.4.4"
+ "@babel/traverse" "^7.4.5"
+ "@babel/types" "^7.4.4"
+ convert-source-map "^1.1.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
+ lodash "^4.17.11"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
"@babel/core@>=7.9.0", "@babel/core@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e"
@@ -37,6 +69,37 @@
semver "^5.4.1"
source-map "^0.5.0"
+"@babel/core@^7.7.5":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559"
+ integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.13.9"
+ "@babel/helper-compilation-targets" "^7.13.10"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helpers" "^7.13.10"
+ "@babel/parser" "^7.13.10"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ lodash "^4.17.19"
+ semver "^6.3.0"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.13.0", "@babel/generator@^7.13.9", "@babel/generator@^7.4.4":
+ version "7.13.9"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39"
+ integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==
+ dependencies:
+ "@babel/types" "^7.13.0"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
"@babel/generator@^7.9.0", "@babel/generator@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9"
@@ -46,12 +109,27 @@
lodash "^4.17.13"
source-map "^0.5.0"
+"@babel/helper-annotate-as-pure@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
+ integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
"@babel/helper-annotate-as-pure@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee"
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc"
+ integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503"
@@ -59,6 +137,16 @@
"@babel/helper-explode-assignable-expression" "^7.8.3"
"@babel/types" "^7.8.3"
+"@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.8":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c"
+ integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==
+ dependencies:
+ "@babel/compat-data" "^7.13.8"
+ "@babel/helper-validator-option" "^7.12.17"
+ browserslist "^4.14.5"
+ semver "^6.3.0"
+
"@babel/helper-compilation-targets@^7.8.7":
version "7.8.7"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde"
@@ -69,6 +157,25 @@
levenary "^1.1.1"
semver "^5.5.0"
+"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.3.0":
+ version "7.13.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6"
+ integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==
+ dependencies:
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-member-expression-to-functions" "^7.13.0"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.13.0"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+
+"@babel/helper-create-regexp-features-plugin@^7.12.13":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7"
+ integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ regexpu-core "^4.7.1"
+
"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8":
version "7.8.8"
resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087"
@@ -85,6 +192,13 @@
"@babel/types" "^7.8.3"
lodash "^4.17.13"
+"@babel/helper-explode-assignable-expression@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f"
+ integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==
+ dependencies:
+ "@babel/types" "^7.13.0"
+
"@babel/helper-explode-assignable-expression@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982"
@@ -92,6 +206,15 @@
"@babel/traverse" "^7.8.3"
"@babel/types" "^7.8.3"
+"@babel/helper-function-name@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
+ integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.12.13"
+ "@babel/template" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c"
@@ -100,30 +223,74 @@
"@babel/template" "^7.8.3"
"@babel/types" "^7.9.5"
+"@babel/helper-get-function-arity@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
+ integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
"@babel/helper-get-function-arity@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5"
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-hoist-variables@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8"
+ integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==
+ dependencies:
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
"@babel/helper-hoist-variables@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134"
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-member-expression-to-functions@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091"
+ integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==
+ dependencies:
+ "@babel/types" "^7.13.0"
+
"@babel/helper-member-expression-to-functions@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c"
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0"
+ integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
"@babel/helper-module-imports@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498"
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-module-transforms@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1"
+ integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.13.0"
+ "@babel/helper-simple-access" "^7.12.13"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/helper-validator-identifier" "^7.12.11"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+ lodash "^4.17.19"
+
"@babel/helper-module-transforms@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5"
@@ -136,6 +303,13 @@
"@babel/types" "^7.9.0"
lodash "^4.17.13"
+"@babel/helper-optimise-call-expression@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
+ integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
"@babel/helper-optimise-call-expression@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9"
@@ -146,12 +320,26 @@
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670"
+"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
+ integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
+
"@babel/helper-regex@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965"
dependencies:
lodash "^4.17.13"
+"@babel/helper-remap-async-to-generator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209"
+ integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-wrap-function" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
"@babel/helper-remap-async-to-generator@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86"
@@ -162,6 +350,16 @@
"@babel/traverse" "^7.8.3"
"@babel/types" "^7.8.3"
+"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24"
+ integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.13.0"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6":
version "7.8.6"
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8"
@@ -171,6 +369,13 @@
"@babel/traverse" "^7.8.6"
"@babel/types" "^7.8.6"
+"@babel/helper-simple-access@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4"
+ integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
"@babel/helper-simple-access@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae"
@@ -178,16 +383,50 @@
"@babel/template" "^7.8.3"
"@babel/types" "^7.8.3"
+"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
+ integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
+ dependencies:
+ "@babel/types" "^7.12.1"
+
+"@babel/helper-split-export-declaration@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
+ integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
"@babel/helper-split-export-declaration@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9"
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-validator-identifier@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
+ integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
+
"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80"
+"@babel/helper-validator-option@^7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
+ integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
+
+"@babel/helper-wrap-function@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4"
+ integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==
+ dependencies:
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
"@babel/helper-wrap-function@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610"
@@ -197,6 +436,15 @@
"@babel/traverse" "^7.8.3"
"@babel/types" "^7.8.3"
+"@babel/helpers@^7.13.10", "@babel/helpers@^7.4.4":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8"
+ integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==
+ dependencies:
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
"@babel/helpers@^7.9.0":
version "7.9.2"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f"
@@ -205,6 +453,15 @@
"@babel/traverse" "^7.9.0"
"@babel/types" "^7.9.0"
+"@babel/highlight@^7.12.13":
+ version "7.13.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1"
+ integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
"@babel/highlight@^7.8.3":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079"
@@ -213,10 +470,24 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
+"@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10", "@babel/parser@^7.4.5":
+ version "7.13.11"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88"
+ integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q==
+
"@babel/parser@^7.8.6", "@babel/parser@^7.9.0":
version "7.9.4"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8"
+"@babel/plugin-proposal-async-generator-functions@^7.2.0":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1"
+ integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
"@babel/plugin-proposal-async-generator-functions@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f"
@@ -225,6 +496,14 @@
"@babel/helper-remap-async-to-generator" "^7.8.3"
"@babel/plugin-syntax-async-generators" "^7.8.0"
+"@babel/plugin-proposal-class-properties@7.3.0":
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz#272636bc0fa19a0bc46e601ec78136a173ea36cd"
+ integrity sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.3.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
"@babel/plugin-proposal-dynamic-import@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054"
@@ -232,6 +511,14 @@
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/plugin-syntax-dynamic-import" "^7.8.0"
+"@babel/plugin-proposal-json-strings@^7.2.0":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b"
+ integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
"@babel/plugin-proposal-json-strings@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b"
@@ -253,6 +540,25 @@
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/plugin-syntax-numeric-separator" "^7.8.3"
+"@babel/plugin-proposal-object-rest-spread@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1"
+ integrity sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
+
+"@babel/plugin-proposal-object-rest-spread@^7.4.4":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a"
+ integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==
+ dependencies:
+ "@babel/compat-data" "^7.13.8"
+ "@babel/helper-compilation-targets" "^7.13.8"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.13.0"
+
"@babel/plugin-proposal-object-rest-spread@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz#3fd65911306d8746014ec0d0cf78f0e39a149116"
@@ -261,6 +567,14 @@
"@babel/plugin-syntax-object-rest-spread" "^7.8.0"
"@babel/plugin-transform-parameters" "^7.9.5"
+"@babel/plugin-proposal-optional-catch-binding@^7.2.0":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107"
+ integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
"@babel/plugin-proposal-optional-catch-binding@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9"
@@ -282,7 +596,7 @@
"@babel/helper-create-regexp-features-plugin" "^7.8.8"
"@babel/helper-plugin-utils" "^7.8.3"
-"@babel/plugin-syntax-async-generators@^7.8.0":
+"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
dependencies:
@@ -294,12 +608,19 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-json-strings@^7.8.0":
+"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
+"@babel/plugin-syntax-jsx@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15"
+ integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
@@ -312,13 +633,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
-"@babel/plugin-syntax-object-rest-spread@^7.8.0":
+"@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-optional-catch-binding@^7.8.0":
+"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
dependencies:
@@ -336,12 +657,35 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-syntax-typescript@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474"
+ integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-arrow-functions@^7.2.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae"
+ integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
"@babel/plugin-transform-arrow-functions@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-async-to-generator@^7.4.4":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f"
+ integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
+
"@babel/plugin-transform-async-to-generator@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086"
@@ -350,12 +694,26 @@
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/helper-remap-async-to-generator" "^7.8.3"
+"@babel/plugin-transform-block-scoped-functions@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4"
+ integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-block-scoped-functions@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-block-scoping@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61"
+ integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-block-scoping@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a"
@@ -363,6 +721,19 @@
"@babel/helper-plugin-utils" "^7.8.3"
lodash "^4.17.13"
+"@babel/plugin-transform-classes@^7.4.4":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b"
+ integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-replace-supers" "^7.13.0"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ globals "^11.1.0"
+
"@babel/plugin-transform-classes@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c"
@@ -376,12 +747,26 @@
"@babel/helper-split-export-declaration" "^7.8.3"
globals "^11.1.0"
+"@babel/plugin-transform-computed-properties@^7.2.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed"
+ integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
"@babel/plugin-transform-computed-properties@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-destructuring@^7.4.4":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963"
+ integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
"@babel/plugin-transform-destructuring@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50"
@@ -395,12 +780,27 @@
"@babel/helper-create-regexp-features-plugin" "^7.8.3"
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-duplicate-keys@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de"
+ integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-duplicate-keys@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-exponentiation-operator@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1"
+ integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-exponentiation-operator@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7"
@@ -408,12 +808,27 @@
"@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3"
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-for-of@^7.4.4":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062"
+ integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
"@babel/plugin-transform-for-of@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-function-name@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051"
+ integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==
+ dependencies:
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-function-name@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b"
@@ -421,18 +836,41 @@
"@babel/helper-function-name" "^7.8.3"
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-literals@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9"
+ integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-literals@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-member-expression-literals@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40"
+ integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-member-expression-literals@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-modules-amd@^7.2.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3"
+ integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
"@babel/plugin-transform-modules-amd@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4"
@@ -441,6 +879,16 @@
"@babel/helper-plugin-utils" "^7.8.3"
babel-plugin-dynamic-import-node "^2.3.0"
+"@babel/plugin-transform-modules-commonjs@^7.4.4":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b"
+ integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-simple-access" "^7.12.13"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
"@babel/plugin-transform-modules-commonjs@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940"
@@ -450,6 +898,17 @@
"@babel/helper-simple-access" "^7.8.3"
babel-plugin-dynamic-import-node "^2.3.0"
+"@babel/plugin-transform-modules-systemjs@^7.4.4":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3"
+ integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.13.0"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-validator-identifier" "^7.12.11"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
"@babel/plugin-transform-modules-systemjs@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90"
@@ -459,6 +918,14 @@
"@babel/helper-plugin-utils" "^7.8.3"
babel-plugin-dynamic-import-node "^2.3.0"
+"@babel/plugin-transform-modules-umd@^7.2.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b"
+ integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+
"@babel/plugin-transform-modules-umd@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697"
@@ -466,18 +933,40 @@
"@babel/helper-module-transforms" "^7.9.0"
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9"
+ integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+
"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c"
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.8.3"
+"@babel/plugin-transform-new-target@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c"
+ integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-new-target@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-object-super@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7"
+ integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.12.13"
+
"@babel/plugin-transform-object-super@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725"
@@ -485,6 +974,13 @@
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/helper-replace-supers" "^7.8.3"
+"@babel/plugin-transform-parameters@^7.13.0", "@babel/plugin-transform-parameters@^7.4.4":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007"
+ integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
"@babel/plugin-transform-parameters@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795"
@@ -492,24 +988,87 @@
"@babel/helper-get-function-arity" "^7.8.3"
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-property-literals@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81"
+ integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-property-literals@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-react-display-name@^7.0.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd"
+ integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-react-jsx-self@^7.0.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60"
+ integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-react-jsx-source@^7.0.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz#051d76126bee5c9a6aa3ba37be2f6c1698856bcb"
+ integrity sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-react-jsx@^7.0.0":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24"
+ integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/plugin-syntax-jsx" "^7.12.13"
+ "@babel/types" "^7.12.17"
+
+"@babel/plugin-transform-regenerator@^7.4.5":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5"
+ integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==
+ dependencies:
+ regenerator-transform "^0.14.2"
+
"@babel/plugin-transform-regenerator@^7.8.7":
version "7.8.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8"
dependencies:
regenerator-transform "^0.14.2"
+"@babel/plugin-transform-reserved-words@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695"
+ integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-reserved-words@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-runtime@7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea"
+ integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ resolve "^1.8.1"
+ semver "^5.5.1"
+
"@babel/plugin-transform-runtime@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b"
@@ -519,18 +1078,40 @@
resolve "^1.8.1"
semver "^5.5.1"
+"@babel/plugin-transform-shorthand-properties@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad"
+ integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-shorthand-properties@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-spread@^7.2.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd"
+ integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+
"@babel/plugin-transform-spread@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-sticky-regex@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f"
+ integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-sticky-regex@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100"
@@ -538,6 +1119,13 @@
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/helper-regex" "^7.8.3"
+"@babel/plugin-transform-template-literals@^7.4.4":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d"
+ integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
"@babel/plugin-transform-template-literals@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80"
@@ -545,12 +1133,36 @@
"@babel/helper-annotate-as-pure" "^7.8.3"
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-typeof-symbol@^7.2.0":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f"
+ integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-typeof-symbol@^7.8.4":
version "7.8.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412"
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
+"@babel/plugin-transform-typescript@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853"
+ integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-typescript" "^7.12.13"
+
+"@babel/plugin-transform-unicode-regex@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac"
+ integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
"@babel/plugin-transform-unicode-regex@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad"
@@ -565,6 +1177,60 @@
core-js "^2.6.5"
regenerator-runtime "^0.13.4"
+"@babel/preset-env@7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58"
+ integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-async-generator-functions" "^7.2.0"
+ "@babel/plugin-proposal-json-strings" "^7.2.0"
+ "@babel/plugin-proposal-object-rest-spread" "^7.4.4"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.2.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-syntax-async-generators" "^7.2.0"
+ "@babel/plugin-syntax-json-strings" "^7.2.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
+ "@babel/plugin-transform-arrow-functions" "^7.2.0"
+ "@babel/plugin-transform-async-to-generator" "^7.4.4"
+ "@babel/plugin-transform-block-scoped-functions" "^7.2.0"
+ "@babel/plugin-transform-block-scoping" "^7.4.4"
+ "@babel/plugin-transform-classes" "^7.4.4"
+ "@babel/plugin-transform-computed-properties" "^7.2.0"
+ "@babel/plugin-transform-destructuring" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/plugin-transform-duplicate-keys" "^7.2.0"
+ "@babel/plugin-transform-exponentiation-operator" "^7.2.0"
+ "@babel/plugin-transform-for-of" "^7.4.4"
+ "@babel/plugin-transform-function-name" "^7.4.4"
+ "@babel/plugin-transform-literals" "^7.2.0"
+ "@babel/plugin-transform-member-expression-literals" "^7.2.0"
+ "@babel/plugin-transform-modules-amd" "^7.2.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.4.4"
+ "@babel/plugin-transform-modules-systemjs" "^7.4.4"
+ "@babel/plugin-transform-modules-umd" "^7.2.0"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5"
+ "@babel/plugin-transform-new-target" "^7.4.4"
+ "@babel/plugin-transform-object-super" "^7.2.0"
+ "@babel/plugin-transform-parameters" "^7.4.4"
+ "@babel/plugin-transform-property-literals" "^7.2.0"
+ "@babel/plugin-transform-regenerator" "^7.4.5"
+ "@babel/plugin-transform-reserved-words" "^7.2.0"
+ "@babel/plugin-transform-shorthand-properties" "^7.2.0"
+ "@babel/plugin-transform-spread" "^7.2.0"
+ "@babel/plugin-transform-sticky-regex" "^7.2.0"
+ "@babel/plugin-transform-template-literals" "^7.4.4"
+ "@babel/plugin-transform-typeof-symbol" "^7.2.0"
+ "@babel/plugin-transform-unicode-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ browserslist "^4.6.0"
+ core-js-compat "^3.1.1"
+ invariant "^2.2.2"
+ js-levenshtein "^1.1.3"
+ semver "^5.5.0"
+
"@babel/preset-env@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.5.tgz#8ddc76039bc45b774b19e2fc548f6807d8a8919f"
@@ -640,6 +1306,26 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
+"@babel/preset-react@7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0"
+ integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-transform-react-display-name" "^7.0.0"
+ "@babel/plugin-transform-react-jsx" "^7.0.0"
+ "@babel/plugin-transform-react-jsx-self" "^7.0.0"
+ "@babel/plugin-transform-react-jsx-source" "^7.0.0"
+
+"@babel/preset-typescript@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a"
+ integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-validator-option" "^7.12.17"
+ "@babel/plugin-transform-typescript" "^7.13.0"
+
"@babel/register@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.9.0.tgz#02464ede57548bddbb5e9f705d263b7c3f43d48b"
@@ -650,12 +1336,28 @@
pirates "^4.0.0"
source-map-support "^0.5.16"
+"@babel/runtime@7.3.1":
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a"
+ integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==
+ dependencies:
+ regenerator-runtime "^0.12.0"
+
"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
version "7.9.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/template@^7.12.13", "@babel/template@^7.4.4":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
+ integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/parser" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
"@babel/template@^7.8.3", "@babel/template@^7.8.6":
version "7.8.6"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b"
@@ -664,6 +1366,21 @@
"@babel/parser" "^7.8.6"
"@babel/types" "^7.8.6"
+"@babel/traverse@^7.13.0", "@babel/traverse@^7.4.5":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc"
+ integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.13.0"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/parser" "^7.13.0"
+ "@babel/types" "^7.13.0"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.19"
+
"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2"
@@ -678,6 +1395,15 @@
globals "^11.1.0"
lodash "^4.17.13"
+"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80"
+ integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
"@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444"
@@ -694,6 +1420,43 @@
version "1.4.0"
resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
+"@cypress/browserify-preprocessor@3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.1.tgz#ab86335b0c061d11f5ad7df03f06b1877b836f71"
+ integrity sha512-sErmFSEr5287bLMRl0POGnyFtJCs/lSk5yxrUIJUIHZ8eDvtTEr0V93xRgLjJVG54gJU4MbpHy1mRPA9VZbtQA==
+ dependencies:
+ "@babel/core" "7.4.5"
+ "@babel/plugin-proposal-class-properties" "7.3.0"
+ "@babel/plugin-proposal-object-rest-spread" "7.3.2"
+ "@babel/plugin-transform-runtime" "7.2.0"
+ "@babel/preset-env" "7.4.5"
+ "@babel/preset-react" "7.0.0"
+ "@babel/runtime" "7.3.1"
+ babel-plugin-add-module-exports "1.0.2"
+ babelify "10.0.0"
+ bluebird "3.5.3"
+ browserify "16.2.3"
+ coffeeify "3.0.1"
+ coffeescript "1.12.7"
+ debug "4.1.1"
+ fs-extra "9.0.0"
+ lodash.clonedeep "4.5.0"
+ through2 "^2.0.0"
+ watchify "3.11.1"
+
+"@cypress/code-coverage@^3.9.2":
+ version "3.9.2"
+ resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.9.2.tgz#582cdb3a7858b3ecf294933b043d0bc236ce0bd9"
+ integrity sha512-YnzkRBxdsY/Ek/68nr+MowqW59UJsd28j10mFOerW/wrSkuxGrWvOldMs8Y4tU70L4fgd4wDPqGGMer3+UzbwA==
+ dependencies:
+ "@cypress/browserify-preprocessor" "3.0.1"
+ debug "4.3.1"
+ execa "4.1.0"
+ globby "11.0.2"
+ istanbul-lib-coverage "3.0.0"
+ js-yaml "3.14.1"
+ nyc "15.1.0"
+
"@cypress/listr-verbose-renderer@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a"
@@ -730,6 +1493,15 @@
tunnel-agent "^0.6.0"
uuid "^3.3.2"
+"@cypress/webpack-preprocessor@^5.6.0":
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.6.0.tgz#9648ae22d2e52f17a604e2a493af27a9c96568bd"
+ integrity sha512-kSelTDe6gs3Skp4vPP2vfTvAl+Ua+9rR/AMTir7bgJihDvzFESqnjWtF6N1TrPo+vCFVGx0VUA6JUvDkhvpwhA==
+ dependencies:
+ bluebird "^3.7.1"
+ debug "4.3.2"
+ lodash "^4.17.20"
+
"@cypress/xvfb@^1.2.4":
version "1.2.4"
resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a"
@@ -738,6 +1510,22 @@
debug "^3.1.0"
lodash.once "^4.1.1"
+"@istanbuljs/load-nyc-config@^1.0.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
+ integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
+ dependencies:
+ camelcase "^5.3.1"
+ find-up "^4.1.0"
+ get-package-type "^0.1.0"
+ js-yaml "^3.13.1"
+ resolve-from "^5.0.0"
+
+"@istanbuljs/schema@^0.1.2":
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
+ integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
+
"@nodelib/fs.scandir@2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
@@ -800,6 +1588,16 @@
version "13.13.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.2.tgz#160d82623610db590a64e8ca81784e11117e5a54"
+"@types/node@12.12.50":
+ version "12.12.50"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.50.tgz#e9b2e85fafc15f2a8aa8fdd41091b983da5fd6ee"
+ integrity sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w==
+
+"@types/node@^14.14.35":
+ version "14.14.35"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313"
+ integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==
+
"@types/normalize-package-data@^2.4.0":
version "2.4.0"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
@@ -1037,14 +1835,41 @@
version "4.2.2"
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+JSONStream@^1.0.3:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
acorn-jsx@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
+acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
+ integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
+ dependencies:
+ acorn "^7.0.0"
+ acorn-walk "^7.0.0"
+ xtend "^4.0.2"
+
+acorn-walk@^7.0.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
+ integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+
acorn@^6.4.1:
version "6.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
+acorn@^7.0.0:
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
acorn@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
@@ -1136,6 +1961,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
+ansi-styles@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
ansi-styles@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
@@ -1155,6 +1987,13 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
+append-transform@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12"
+ integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==
+ dependencies:
+ default-require-extensions "^3.0.0"
+
aproba@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
@@ -1164,6 +2003,11 @@ arch@^2.1.2:
resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
+archy@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
+ integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
+
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -1229,7 +2073,7 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-assert@^1.1.1:
+assert@^1.1.1, assert@^1.4.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
dependencies:
@@ -1309,7 +2153,7 @@ babel-loader@^8.1.0:
pify "^4.0.1"
schema-utils "^2.6.5"
-babel-plugin-add-module-exports@^1.0.0:
+babel-plugin-add-module-exports@1.0.2, babel-plugin-add-module-exports@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz#96cd610d089af664f016467fc4567c099cce2d9c"
optionalDependencies:
@@ -1319,12 +2163,28 @@ babel-plugin-class-display-name@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/babel-plugin-class-display-name/-/babel-plugin-class-display-name-2.1.0.tgz#198ff12b9eabd33e011ee13f2f9898985608b4d1"
-babel-plugin-dynamic-import-node@^2.3.0:
+babel-plugin-dynamic-import-node@^2.3.0, babel-plugin-dynamic-import-node@^2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
dependencies:
object.assign "^4.1.0"
+babel-plugin-istanbul@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765"
+ integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@istanbuljs/load-nyc-config" "^1.0.0"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-instrument "^4.0.0"
+ test-exclude "^6.0.0"
+
+babelify@10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5"
+ integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==
+
bail@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
@@ -1337,6 +2197,11 @@ base64-js@^1.0.2:
version "1.3.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
base@^0.11.1:
version "0.11.2"
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
@@ -1375,7 +2240,12 @@ blob-util@2.0.2:
resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb"
integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==
-bluebird@^3.5.5, bluebird@^3.7.2:
+bluebird@3.5.3:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
+ integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
+
+bluebird@^3.5.5, bluebird@^3.7.1, bluebird@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
@@ -1421,6 +2291,32 @@ brorand@^1.0.1, brorand@^1.1.0:
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+browser-pack@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774"
+ integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==
+ dependencies:
+ JSONStream "^1.0.3"
+ combine-source-map "~0.8.0"
+ defined "^1.0.0"
+ safe-buffer "^5.1.1"
+ through2 "^2.0.0"
+ umd "^3.0.0"
+
+browser-resolve@^1.11.0:
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
+ integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
+ dependencies:
+ resolve "1.1.7"
+
+browser-resolve@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b"
+ integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==
+ dependencies:
+ resolve "^1.17.0"
+
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
version "1.2.0"
resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
@@ -1468,12 +2364,120 @@ browserify-sign@^4.0.0:
inherits "^2.0.1"
parse-asn1 "^5.0.0"
-browserify-zlib@^0.2.0:
+browserify-zlib@^0.2.0, browserify-zlib@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
dependencies:
pako "~1.0.5"
+browserify@16.2.3:
+ version "16.2.3"
+ resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.3.tgz#7ee6e654ba4f92bce6ab3599c3485b1cc7a0ad0b"
+ integrity sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ==
+ dependencies:
+ JSONStream "^1.0.3"
+ assert "^1.4.0"
+ browser-pack "^6.0.1"
+ browser-resolve "^1.11.0"
+ browserify-zlib "~0.2.0"
+ buffer "^5.0.2"
+ cached-path-relative "^1.0.0"
+ concat-stream "^1.6.0"
+ console-browserify "^1.1.0"
+ constants-browserify "~1.0.0"
+ crypto-browserify "^3.0.0"
+ defined "^1.0.0"
+ deps-sort "^2.0.0"
+ domain-browser "^1.2.0"
+ duplexer2 "~0.1.2"
+ events "^2.0.0"
+ glob "^7.1.0"
+ has "^1.0.0"
+ htmlescape "^1.1.0"
+ https-browserify "^1.0.0"
+ inherits "~2.0.1"
+ insert-module-globals "^7.0.0"
+ labeled-stream-splicer "^2.0.0"
+ mkdirp "^0.5.0"
+ module-deps "^6.0.0"
+ os-browserify "~0.3.0"
+ parents "^1.0.1"
+ path-browserify "~0.0.0"
+ process "~0.11.0"
+ punycode "^1.3.2"
+ querystring-es3 "~0.2.0"
+ read-only-stream "^2.0.0"
+ readable-stream "^2.0.2"
+ resolve "^1.1.4"
+ shasum "^1.0.0"
+ shell-quote "^1.6.1"
+ stream-browserify "^2.0.0"
+ stream-http "^2.0.0"
+ string_decoder "^1.1.1"
+ subarg "^1.0.0"
+ syntax-error "^1.1.1"
+ through2 "^2.0.0"
+ timers-browserify "^1.0.1"
+ tty-browserify "0.0.1"
+ url "~0.11.0"
+ util "~0.10.1"
+ vm-browserify "^1.0.0"
+ xtend "^4.0.0"
+
+browserify@^16.1.0:
+ version "16.5.2"
+ resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.5.2.tgz#d926835e9280fa5fd57f5bc301f2ef24a972ddfe"
+ integrity sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==
+ dependencies:
+ JSONStream "^1.0.3"
+ assert "^1.4.0"
+ browser-pack "^6.0.1"
+ browser-resolve "^2.0.0"
+ browserify-zlib "~0.2.0"
+ buffer "~5.2.1"
+ cached-path-relative "^1.0.0"
+ concat-stream "^1.6.0"
+ console-browserify "^1.1.0"
+ constants-browserify "~1.0.0"
+ crypto-browserify "^3.0.0"
+ defined "^1.0.0"
+ deps-sort "^2.0.0"
+ domain-browser "^1.2.0"
+ duplexer2 "~0.1.2"
+ events "^2.0.0"
+ glob "^7.1.0"
+ has "^1.0.0"
+ htmlescape "^1.1.0"
+ https-browserify "^1.0.0"
+ inherits "~2.0.1"
+ insert-module-globals "^7.0.0"
+ labeled-stream-splicer "^2.0.0"
+ mkdirp-classic "^0.5.2"
+ module-deps "^6.2.3"
+ os-browserify "~0.3.0"
+ parents "^1.0.1"
+ path-browserify "~0.0.0"
+ process "~0.11.0"
+ punycode "^1.3.2"
+ querystring-es3 "~0.2.0"
+ read-only-stream "^2.0.0"
+ readable-stream "^2.0.2"
+ resolve "^1.1.4"
+ shasum "^1.0.0"
+ shell-quote "^1.6.1"
+ stream-browserify "^2.0.0"
+ stream-http "^3.0.0"
+ string_decoder "^1.1.1"
+ subarg "^1.0.0"
+ syntax-error "^1.1.1"
+ through2 "^2.0.0"
+ timers-browserify "^1.0.1"
+ tty-browserify "0.0.1"
+ url "~0.11.0"
+ util "~0.10.1"
+ vm-browserify "^1.0.0"
+ xtend "^4.0.0"
+
browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.6.4, browserslist@^4.8.5, browserslist@^4.9.1:
version "4.12.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d"
@@ -1483,6 +2487,17 @@ browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.6.4, browserslist@^4.
node-releases "^1.1.53"
pkg-up "^2.0.0"
+browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.0:
+ version "4.16.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
+ integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==
+ dependencies:
+ caniuse-lite "^1.0.30001181"
+ colorette "^1.2.1"
+ electron-to-chromium "^1.3.649"
+ escalade "^3.1.1"
+ node-releases "^1.1.70"
+
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
@@ -1504,6 +2519,22 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
+buffer@^5.0.2:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
+buffer@~5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6"
+ integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+
builtin-modules@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -1569,11 +2600,26 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"
+cached-path-relative@^1.0.0, cached-path-relative@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db"
+ integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==
+
cachedir@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
+caching-transform@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f"
+ integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==
+ dependencies:
+ hasha "^5.0.0"
+ make-dir "^3.0.0"
+ package-hash "^4.0.0"
+ write-file-atomic "^3.0.0"
+
caller-callsite@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
@@ -1619,6 +2665,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001039, can
version "1.0.30001048"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e"
+caniuse-lite@^1.0.30001181:
+ version "1.0.30001202"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz#4cb3bd5e8a808e8cd89e4e66c549989bc8137201"
+ integrity sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ==
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -1704,7 +2755,7 @@ cheerio@^0.19.0:
htmlparser2 "~3.8.1"
lodash "^3.2.0"
-chokidar@^2.0.4, chokidar@^2.1.8:
+chokidar@^2.0.4, chokidar@^2.1.1, chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
dependencies:
@@ -1807,6 +2858,15 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
clone-regexp@^2.1.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f"
@@ -1839,6 +2899,19 @@ codex-tooltip@^1.0.1:
resolved "https://registry.yarnpkg.com/codex-tooltip/-/codex-tooltip-1.0.1.tgz#f6e4f39d81507f9c455b667f1287746d14ee8056"
integrity sha512-1xLb1NZbxguNtf02xBRhDphq/EXvMMeEbY0ievjQTHqf8UjXsD41evGk9rqcbjpl+JOjNgtwnp1OaU/X/h6fhQ==
+coffeeify@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/coffeeify/-/coffeeify-3.0.1.tgz#5e2753000c50bd24c693115f33864248dd11136c"
+ integrity sha512-Qjnr7UX6ldK1PHV7wCnv7AuCd4q19KTUtwJnu/6JRJB4rfm12zvcXtKdacUoePOKr1I4ka/ydKiwWpNAdsQb0g==
+ dependencies:
+ convert-source-map "^1.3.0"
+ through2 "^2.0.0"
+
+coffeescript@1.12.7:
+ version "1.12.7"
+ resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz#e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27"
+ integrity sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==
+
collapse-white-space@^1.0.2:
version "1.0.6"
resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
@@ -1884,11 +2957,26 @@ color@^3.0.0:
color-convert "^1.9.1"
color-string "^1.5.2"
+colorette@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
+ integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
+
colors@^1.1.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+combine-source-map@^0.8.0, combine-source-map@~0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b"
+ integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=
+ dependencies:
+ convert-source-map "~1.1.0"
+ inline-source-map "~0.6.0"
+ lodash.memoize "~3.0.3"
+ source-map "~0.5.3"
+
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -1900,10 +2988,10 @@ commander@^2.12.1, commander@^2.20.0, commander@^2.8.1:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
-commander@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
- integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+commander@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
+ integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
comment-parser@^0.7.2:
version "0.7.2"
@@ -1926,7 +3014,7 @@ concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-concat-stream@^1.5.0, concat-stream@^1.6.2:
+concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@^1.6.2, concat-stream@~1.6.0:
version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
dependencies:
@@ -1939,7 +3027,7 @@ console-browserify@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
-constants-browserify@^1.0.0:
+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"
@@ -1947,12 +3035,17 @@ 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.7.0:
+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"
dependencies:
safe-buffer "~5.1.1"
+convert-source-map@~1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
+ integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=
+
copy-concurrently@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
@@ -1968,6 +3061,14 @@ copy-descriptor@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+core-js-compat@^3.1.1:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455"
+ integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==
+ dependencies:
+ browserslist "^4.16.3"
+ semver "7.0.0"
+
core-js-compat@^3.6.2:
version "3.6.5"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c"
@@ -2053,7 +3154,7 @@ cross-spawn@^7.0.0:
shebang-command "^2.0.0"
which "^2.0.1"
-crypto-browserify@^3.11.0:
+crypto-browserify@^3.0.0, crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
dependencies:
@@ -2245,14 +3346,15 @@ cyclist@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
-cypress@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.5.0.tgz#1da0355794a43247f8a80cb7f505e83e1cf847cb"
- integrity sha512-UHEiTca8AUTevbT2pWkHQlxoHtXmbq+h6Eiu/Mz8DqpNkF98zjTBLv/HFiKJUU5rQzp9EwSWtms33p5TWCJ8tQ==
+cypress@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/cypress/-/cypress-6.8.0.tgz#8338f39212a8f71e91ff8c017a1b6e22d823d8c1"
+ integrity sha512-W2e9Oqi7DmF48QtOD0LfsOLVq6ef2hcXZvJXI/E3PgFNmZXEVwBefhAxVCW9yTPortjYA2XkM20KyC4HRkOm9w==
dependencies:
"@cypress/listr-verbose-renderer" "^0.4.1"
"@cypress/request" "^2.88.5"
"@cypress/xvfb" "^1.2.4"
+ "@types/node" "12.12.50"
"@types/sinonjs__fake-timers" "^6.0.1"
"@types/sizzle" "^2.3.2"
arch "^2.1.2"
@@ -2262,9 +3364,10 @@ cypress@^5.5.0:
chalk "^4.1.0"
check-more-types "^2.24.0"
cli-table3 "~0.6.0"
- commander "^4.1.1"
+ commander "^5.1.0"
common-tags "^1.8.0"
- debug "^4.1.1"
+ dayjs "^1.9.3"
+ debug "4.3.2"
eventemitter2 "^6.4.2"
execa "^4.0.2"
executable "^4.1.1"
@@ -2278,10 +3381,10 @@ cypress@^5.5.0:
lodash "^4.17.19"
log-symbols "^4.0.0"
minimist "^1.2.5"
- moment "^2.27.0"
+ moment "^2.29.1"
ospath "^1.2.2"
pretty-bytes "^5.4.1"
- ramda "~0.26.1"
+ ramda "~0.27.1"
request-progress "^3.0.0"
supports-color "^7.2.0"
tmp "~0.2.1"
@@ -2289,6 +3392,11 @@ cypress@^5.5.0:
url "^0.11.0"
yauzl "^2.10.0"
+dash-ast@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37"
+ integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==
+
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
@@ -2301,6 +3409,31 @@ date-fns@^1.27.2:
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
+dayjs@^1.9.3:
+ version "1.10.4"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
+ integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==
+
+debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ dependencies:
+ ms "^2.1.1"
+
+debug@4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
+ dependencies:
+ ms "2.1.2"
+
+debug@4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
+ integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
+ dependencies:
+ ms "2.1.2"
+
debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -2314,12 +3447,6 @@ debug@^3.1.0:
dependencies:
ms "^2.1.1"
-debug@^4.0.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:
- ms "^2.1.1"
-
decamelize-keys@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
@@ -2339,6 +3466,13 @@ deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+default-require-extensions@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96"
+ integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==
+ dependencies:
+ strip-bom "^4.0.0"
+
define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -2364,11 +3498,26 @@ define-property@^2.0.2:
is-descriptor "^1.0.2"
isobject "^3.0.1"
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+ integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
+
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+deps-sort@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.1.tgz#9dfdc876d2bcec3386b6829ac52162cda9fa208d"
+ integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==
+ dependencies:
+ JSONStream "^1.0.3"
+ shasum-object "^1.0.0"
+ subarg "^1.0.0"
+ through2 "^2.0.0"
+
des.js@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
@@ -2380,6 +3529,15 @@ detect-file@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
+detective@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b"
+ integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==
+ dependencies:
+ acorn-node "^1.6.1"
+ defined "^1.0.0"
+ minimist "^1.1.1"
+
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
@@ -2425,7 +3583,7 @@ dom-serializer@~0.1.0:
domelementtype "^1.3.0"
entities "^1.1.1"
-domain-browser@^1.1.1:
+domain-browser@^1.1.1, domain-browser@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
@@ -2475,6 +3633,13 @@ dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
+duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+ integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
+ dependencies:
+ readable-stream "^2.0.2"
+
duplexify@^3.4.2, duplexify@^3.6.0:
version "3.7.1"
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
@@ -2496,6 +3661,11 @@ electron-to-chromium@^1.3.413:
version "1.3.418"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.418.tgz#840021191f466b803a873e154113620c9f53cec6"
+electron-to-chromium@^1.3.649:
+ version "1.3.690"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.690.tgz#54df63ec42fba6b8e9e05fe4be52caeeedb6e634"
+ integrity sha512-zPbaSv1c8LUKqQ+scNxJKv01RYFkVVF1xli+b+3Ty8ONujHjAMg+t/COmdZqrtnS1gT+g4hbSodHillymt1Lww==
+
elegant-spinner@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
@@ -2600,10 +3770,20 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
+es6-error@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
+ integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
+
es6-promise@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-2.3.0.tgz#96edb9f2fdb01995822b263dd8aadab6748181bc"
+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@^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"
@@ -2650,6 +3830,11 @@ eslint-module-utils@^2.4.1:
debug "^2.6.9"
pkg-dir "^2.0.0"
+eslint-plugin-chai-friendly@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.6.0.tgz#54052fab79302ed0cea76ab997351ea4809bfb77"
+ integrity sha512-Uvvv1gkbRGp/qfN15B0kQyQWg+oFA8buDSqrwmW3egNSk/FpqH2MjQqKOuKwmEL6w4QIQrIjDp+gg6kGGmD3oQ==
+
eslint-plugin-cypress@^2.11.2:
version "2.11.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.2.tgz#a8f3fe7ec840f55e4cea37671f93293e6c3e76a0"
@@ -2825,6 +4010,11 @@ eventemitter2@^6.4.2:
resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820"
integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==
+events@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5"
+ integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==
+
events@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59"
@@ -2836,6 +4026,21 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
+execa@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
@@ -2993,6 +4198,11 @@ fast-levenshtein@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+fast-safe-stringify@^2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743"
+ integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==
+
fastq@^1.6.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.7.0.tgz#fcd79a08c5bd7ec5b55cd3f5c4720db551929801"
@@ -3064,7 +4274,7 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0:
make-dir "^2.0.0"
pkg-dir "^3.0.0"
-find-cache-dir@^3.3.1:
+find-cache-dir@^3.2.0, find-cache-dir@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
dependencies:
@@ -3127,6 +4337,14 @@ for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+foreground-child@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53"
+ integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==
+ dependencies:
+ cross-spawn "^7.0.0"
+ signal-exit "^3.0.2"
+
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -3154,6 +4372,21 @@ from2@^2.1.0:
inherits "^2.0.1"
readable-stream "^2.0.0"
+fromentries@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a"
+ integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==
+
+fs-extra@9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3"
+ integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^1.0.0"
+
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
@@ -3210,10 +4443,25 @@ gensync@^1.0.0-beta.1:
version "1.0.0-beta.1"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-assigned-identifiers@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1"
+ integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==
+
get-caller-file@^2.0.1:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+get-package-type@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
+ integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
+
get-stdin@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
@@ -3262,7 +4510,7 @@ glob-parent@^5.0.0, glob-parent@^5.1.0:
dependencies:
is-glob "^4.0.1"
-glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, 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"
dependencies:
@@ -3322,6 +4570,18 @@ globals@^12.1.0:
dependencies:
type-fest "^0.8.1"
+globby@11.0.2:
+ version "11.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83"
+ integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
globby@^11.0.0:
version "11.0.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154"
@@ -3431,6 +4691,14 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
+hasha@^5.0.0:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1"
+ integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==
+ dependencies:
+ is-stream "^2.0.0"
+ type-fest "^0.8.0"
+
hex-color-regex@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
@@ -3466,6 +4734,11 @@ html-comment-regex@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
+html-escaper@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
+ integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
+
html-janitor@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/html-janitor/-/html-janitor-2.0.4.tgz#ae5a115cdf3331cd5501edd7b5471b18ea44cdbb"
@@ -3474,6 +4747,11 @@ html-tags@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
+htmlescape@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
+ integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=
+
htmlparser2@^3.10.0:
version "3.10.1"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
@@ -3525,6 +4803,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.1:
dependencies:
postcss "^7.0.14"
+ieee754@^1.1.13:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
ieee754@^1.1.4:
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
@@ -3624,6 +4907,13 @@ ini@^1.3.4, ini@^1.3.5:
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+inline-source-map@~0.6.0:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
+ integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=
+ dependencies:
+ source-map "~0.5.3"
+
inquirer@^7.0.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29"
@@ -3642,6 +4932,22 @@ inquirer@^7.0.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"
+ integrity sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==
+ dependencies:
+ JSONStream "^1.0.3"
+ acorn-node "^1.5.2"
+ combine-source-map "^0.8.0"
+ concat-stream "^1.6.1"
+ is-buffer "^1.1.0"
+ path-is-absolute "^1.0.1"
+ process "~0.11.0"
+ through2 "^2.0.0"
+ undeclared-identifiers "^1.1.2"
+ xtend "^4.0.0"
+
interpret@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
@@ -3701,7 +5007,7 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
-is-buffer@^1.1.5:
+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"
@@ -3731,6 +5037,13 @@ is-color-stop@^1.0.0:
rgb-regex "^1.0.1"
rgba-regex "^1.0.0"
+is-core-module@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
+ integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
+ dependencies:
+ has "^1.0.3"
+
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -3954,6 +5267,67 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+istanbul-lib-coverage@3.0.0, istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec"
+ integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
+
+istanbul-lib-hook@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6"
+ integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==
+ dependencies:
+ append-transform "^2.0.0"
+
+istanbul-lib-instrument@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
+ integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
+ dependencies:
+ "@babel/core" "^7.7.5"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-coverage "^3.0.0"
+ semver "^6.3.0"
+
+istanbul-lib-processinfo@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c"
+ integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==
+ dependencies:
+ archy "^1.0.0"
+ cross-spawn "^7.0.0"
+ istanbul-lib-coverage "^3.0.0-alpha.1"
+ make-dir "^3.0.0"
+ p-map "^3.0.0"
+ rimraf "^3.0.0"
+ uuid "^3.3.3"
+
+istanbul-lib-report@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
+ integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
+ dependencies:
+ istanbul-lib-coverage "^3.0.0"
+ make-dir "^3.0.0"
+ supports-color "^7.1.0"
+
+istanbul-lib-source-maps@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9"
+ integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==
+ dependencies:
+ debug "^4.1.1"
+ istanbul-lib-coverage "^3.0.0"
+ source-map "^0.6.1"
+
+istanbul-reports@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
+ integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
+ dependencies:
+ html-escaper "^2.0.0"
+ istanbul-lib-report "^3.0.0"
+
jest-worker@^25.4.0:
version "25.4.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384"
@@ -3961,10 +5335,23 @@ jest-worker@^25.4.0:
merge-stream "^2.0.0"
supports-color "^7.0.0"
+js-levenshtein@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
+ integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+js-yaml@3.14.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
js-yaml@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
@@ -4010,6 +5397,13 @@ json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+json-stable-stringify@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
+ integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=
+ dependencies:
+ jsonify "~0.0.0"
+
json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
@@ -4021,6 +5415,13 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
+json5@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
json5@^2.1.2:
version "2.1.3"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
@@ -4042,6 +5443,16 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
+jsonify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+ integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
+
+jsonparse@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -4076,6 +5487,14 @@ known-css-properties@^0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.18.0.tgz#d6e00b56ee1d5b0d171fd86df1583cfb012c521f"
+labeled-stream-splicer@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21"
+ integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==
+ dependencies:
+ inherits "^2.0.1"
+ stream-splicer "^2.0.0"
+
lazy-ass@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
@@ -4220,10 +5639,25 @@ lodash._reinterpolate@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+lodash.clonedeep@4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.flattendeep@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
+ integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
+
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+lodash.memoize@~3.0.3:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
+ integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=
+
lodash.once@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
@@ -4259,6 +5693,11 @@ lodash@^4.17.19:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+lodash@^4.17.20:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
log-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
@@ -4317,7 +5756,7 @@ make-dir@^2.0.0, make-dir@^2.1.0:
pify "^4.0.1"
semver "^5.6.0"
-make-dir@^3.0.2:
+make-dir@^3.0.0, make-dir@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
dependencies:
@@ -4509,7 +5948,7 @@ minimist-options@^4.0.1:
arrify "^1.0.1"
is-plain-obj "^1.1.0"
-minimist@^1.2.0, minimist@^1.2.5:
+minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
@@ -4559,7 +5998,12 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
-mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1:
+mkdirp-classic@^0.5.2:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
+ integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
+
+mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
dependencies:
@@ -4570,7 +6014,28 @@ mkdirp@^1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-moment@^2.27.0:
+module-deps@^6.0.0, module-deps@^6.2.3:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.3.tgz#15490bc02af4b56cf62299c7c17cba32d71a96ee"
+ integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==
+ dependencies:
+ JSONStream "^1.0.3"
+ browser-resolve "^2.0.0"
+ cached-path-relative "^1.0.2"
+ concat-stream "~1.6.0"
+ defined "^1.0.0"
+ detective "^5.2.0"
+ duplexer2 "^0.1.2"
+ inherits "^2.0.1"
+ parents "^1.0.0"
+ readable-stream "^2.0.2"
+ resolve "^1.4.0"
+ stream-combiner2 "^1.1.1"
+ subarg "^1.0.0"
+ through2 "^2.0.0"
+ xtend "^4.0.0"
+
+moment@^2.29.1:
version "2.29.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
@@ -4590,7 +6055,7 @@ ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-ms@^2.1.1:
+ms@2.1.2, ms@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
@@ -4662,10 +6127,22 @@ node-modules-regexp@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
+node-preload@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301"
+ integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==
+ dependencies:
+ process-on-spawn "^1.0.0"
+
node-releases@^1.1.53:
version "1.1.53"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
+node-releases@^1.1.70:
+ version "1.1.71"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
+ integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
+
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
@@ -4725,6 +6202,39 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+nyc@15.1.0:
+ version "15.1.0"
+ resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02"
+ integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==
+ dependencies:
+ "@istanbuljs/load-nyc-config" "^1.0.0"
+ "@istanbuljs/schema" "^0.1.2"
+ caching-transform "^4.0.0"
+ convert-source-map "^1.7.0"
+ decamelize "^1.2.0"
+ find-cache-dir "^3.2.0"
+ find-up "^4.1.0"
+ foreground-child "^2.0.0"
+ get-package-type "^0.1.0"
+ glob "^7.1.6"
+ istanbul-lib-coverage "^3.0.0"
+ istanbul-lib-hook "^3.0.0"
+ istanbul-lib-instrument "^4.0.0"
+ istanbul-lib-processinfo "^2.0.2"
+ istanbul-lib-report "^3.0.0"
+ istanbul-lib-source-maps "^4.0.0"
+ istanbul-reports "^3.0.2"
+ make-dir "^3.0.0"
+ node-preload "^0.2.1"
+ p-map "^3.0.0"
+ process-on-spawn "^1.0.0"
+ resolve-from "^5.0.0"
+ rimraf "^3.0.0"
+ signal-exit "^3.0.2"
+ spawn-wrap "^2.0.0"
+ test-exclude "^6.0.0"
+ yargs "^15.0.2"
+
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
@@ -4826,7 +6336,7 @@ optionator@^0.8.3:
type-check "~0.3.2"
word-wrap "~1.2.3"
-os-browserify@^0.3.0:
+os-browserify@^0.3.0, os-browserify@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
@@ -4847,6 +6357,13 @@ ospath@^1.2.2:
resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b"
integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=
+outpipe@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/outpipe/-/outpipe-1.1.1.tgz#50cf8616365e87e031e29a5ec9339a3da4725fa2"
+ integrity sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=
+ dependencies:
+ shell-quote "^1.4.2"
+
p-defer@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
@@ -4908,6 +6425,16 @@ p-try@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+package-hash@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506"
+ integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==
+ dependencies:
+ graceful-fs "^4.1.15"
+ hasha "^5.0.0"
+ lodash.flattendeep "^4.4.0"
+ release-zalgo "^1.0.0"
+
pako@~1.0.5:
version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
@@ -4926,6 +6453,13 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
+parents@^1.0.0, parents@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
+ integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=
+ dependencies:
+ path-platform "~0.11.15"
+
parse-asn1@^5.0.0:
version "5.1.5"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e"
@@ -4978,7 +6512,7 @@ pascalcase@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
-path-browserify@0.0.1:
+path-browserify@0.0.1, path-browserify@~0.0.0:
version "0.0.1"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
@@ -4994,7 +6528,7 @@ path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
-path-is-absolute@^1.0.0:
+path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -5011,6 +6545,11 @@ path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+path-platform@~0.11.15:
+ version "0.11.15"
+ resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
+ integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=
+
path-type@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
@@ -5745,7 +7284,14 @@ process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
-process@^0.11.10:
+process-on-spawn@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93"
+ integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==
+ dependencies:
+ fromentries "^1.2.0"
+
+process@^0.11.10, process@~0.11.0:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
@@ -5803,7 +7349,7 @@ punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-punycode@^1.2.4:
+punycode@^1.2.4, punycode@^1.3.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
@@ -5820,7 +7366,7 @@ qs@~6.5.2:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-querystring-es3@^0.2.0:
+querystring-es3@^0.2.0, querystring-es3@~0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
@@ -5832,10 +7378,10 @@ quick-lru@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
-ramda@~0.26.1:
- version "0.26.1"
- resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06"
- integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==
+ramda@~0.27.1:
+ version "0.27.1"
+ resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9"
+ integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
version "2.1.0"
@@ -5863,6 +7409,13 @@ read-cache@^1.0.0:
dependencies:
pify "^2.3.0"
+read-only-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
+ integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=
+ dependencies:
+ readable-stream "^2.0.2"
+
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"
@@ -5916,7 +7469,7 @@ readable-stream@1.1:
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@^3.1.1:
+readable-stream@^3.1.1, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
dependencies:
@@ -5949,6 +7502,11 @@ regenerate@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
+regenerator-runtime@^0.12.0:
+ version "0.12.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
+ integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
+
regenerator-runtime@^0.13.4:
version "0.13.5"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
@@ -5986,6 +7544,18 @@ regexpu-core@^4.7.0:
unicode-match-property-ecmascript "^1.0.4"
unicode-match-property-value-ecmascript "^1.2.0"
+regexpu-core@^4.7.1:
+ version "4.7.1"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
+ integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
+ dependencies:
+ regenerate "^1.4.0"
+ regenerate-unicode-properties "^8.2.0"
+ regjsgen "^0.5.1"
+ regjsparser "^0.6.4"
+ 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"
@@ -6000,6 +7570,13 @@ regjsparser@^0.6.4:
dependencies:
jsesc "~0.5.0"
+release-zalgo@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730"
+ integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=
+ dependencies:
+ es6-error "^4.0.1"
+
remark-parse@^8.0.0:
version "8.0.2"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.2.tgz#5999bc0b9c2e3edc038800a64ff103d0890b318b"
@@ -6108,6 +7685,19 @@ resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+resolve@1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+ integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+
+resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0:
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
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:
version "1.17.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
@@ -6287,13 +7877,28 @@ setimmediate@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
-sha.js@^2.4.0, sha.js@^2.4.8:
+sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4:
version "2.4.11"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
dependencies:
inherits "^2.0.1"
safe-buffer "^5.0.1"
+shasum-object@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e"
+ integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==
+ dependencies:
+ fast-safe-stringify "^2.0.7"
+
+shasum@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
+ integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8=
+ dependencies:
+ json-stable-stringify "~0.0.0"
+ sha.js "~2.4.4"
+
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -6316,10 +7921,20 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+shell-quote@^1.4.2, shell-quote@^1.6.1:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
+ integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
+
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+simple-concat@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
+ integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
+
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
@@ -6395,7 +8010,7 @@ source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-source-map@^0.5.0, source-map@^0.5.6:
+source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.3:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -6403,6 +8018,18 @@ 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"
+spawn-wrap@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e"
+ integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==
+ dependencies:
+ foreground-child "^2.0.0"
+ is-windows "^1.0.2"
+ make-dir "^3.0.0"
+ rimraf "^3.0.0"
+ signal-exit "^3.0.2"
+ which "^2.0.1"
+
spdx-correct@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
@@ -6482,13 +8109,21 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
-stream-browserify@^2.0.1:
+stream-browserify@^2.0.0, stream-browserify@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
dependencies:
inherits "~2.0.1"
readable-stream "^2.0.2"
+stream-combiner2@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
+ integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4=
+ dependencies:
+ duplexer2 "~0.1.0"
+ readable-stream "^2.0.2"
+
stream-each@^1.1.0:
version "1.2.3"
resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
@@ -6496,7 +8131,7 @@ stream-each@^1.1.0:
end-of-stream "^1.1.0"
stream-shift "^1.0.0"
-stream-http@^2.7.2:
+stream-http@^2.0.0, stream-http@^2.7.2:
version "2.8.3"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
dependencies:
@@ -6506,10 +8141,28 @@ stream-http@^2.7.2:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
+stream-http@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564"
+ integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ xtend "^4.0.2"
+
stream-shift@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+stream-splicer@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd"
+ integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.2"
+
string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -6629,6 +8282,11 @@ strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+strip-bom@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
+ integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
+
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
@@ -6713,6 +8371,13 @@ stylelint@^13.3.3:
v8-compile-cache "^2.1.0"
write-file-atomic "^3.0.3"
+subarg@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
+ integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI=
+ dependencies:
+ minimist "^1.1.0"
+
sugarss@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d"
@@ -6785,6 +8450,13 @@ symbol-observable@^1.1.0:
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+syntax-error@^1.1.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c"
+ integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==
+ dependencies:
+ acorn-node "^1.2.0"
+
table@^5.2.3, table@^5.4.6:
version "5.4.6"
resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
@@ -6834,6 +8506,15 @@ terser@^4.1.2, terser@^4.6.12:
source-map "~0.6.1"
source-map-support "~0.5.12"
+test-exclude@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
+ integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
+ dependencies:
+ "@istanbuljs/schema" "^0.1.2"
+ glob "^7.1.4"
+ minimatch "^3.0.4"
+
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -6850,10 +8531,17 @@ through2@^2.0.0:
readable-stream "~2.3.6"
xtend "~4.0.1"
-through@^2.3.6:
+"through@>=2.2.7 <3", through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+timers-browserify@^1.0.1:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
+ integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=
+ dependencies:
+ process "~0.11.0"
+
timers-browserify@^2.0.4:
version "2.0.11"
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
@@ -6985,6 +8673,11 @@ tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+tty-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
+ integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==
+
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -7011,7 +8704,7 @@ type-fest@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
-type-fest@^0.8.1:
+type-fest@^0.8.0, type-fest@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
@@ -7029,6 +8722,22 @@ typescript@3.8.3, typescript@^3.7.3:
version "3.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
+umd@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf"
+ integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==
+
+undeclared-identifiers@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f"
+ integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==
+ dependencies:
+ acorn-node "^1.3.0"
+ dash-ast "^1.0.0"
+ get-assigned-identifiers "^1.2.0"
+ simple-concat "^1.0.0"
+ xtend "^4.0.1"
+
unherit@^1.0.4:
version "1.1.3"
resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22"
@@ -7171,7 +8880,7 @@ urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-url@^0.11.0:
+url@^0.11.0, url@~0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
dependencies:
@@ -7207,7 +8916,14 @@ util@^0.11.0:
dependencies:
inherits "2.0.3"
-uuid@^3.3.2:
+util@~0.10.1:
+ version "0.10.4"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
+ integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
+ dependencies:
+ inherits "2.0.3"
+
+uuid@^3.3.2, uuid@^3.3.3:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
@@ -7261,10 +8977,23 @@ vfile@^4.0.0:
unist-util-stringify-position "^2.0.0"
vfile-message "^2.0.0"
-vm-browserify@^1.0.1:
+vm-browserify@^1.0.0, vm-browserify@^1.0.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
+watchify@3.11.1:
+ version "3.11.1"
+ resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.11.1.tgz#8e4665871fff1ef64c0430d1a2c9d084d9721881"
+ integrity sha512-WwnUClyFNRMB2NIiHgJU9RQPQNqVeFk7OmZaWf5dC5EnNa0Mgr7imBydbaJ7tGTuPM2hz1Cb4uiBvK9NVxMfog==
+ dependencies:
+ anymatch "^2.0.0"
+ browserify "^16.1.0"
+ chokidar "^2.1.1"
+ defined "^1.0.0"
+ outpipe "^1.1.0"
+ through2 "^2.0.0"
+ xtend "^4.0.0"
+
watchpack@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2"
@@ -7367,11 +9096,20 @@ wrap-ansi@^5.1.0:
string-width "^3.0.0"
strip-ansi "^5.0.0"
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-write-file-atomic@^3.0.3:
+write-file-atomic@^3.0.0, write-file-atomic@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
dependencies:
@@ -7386,7 +9124,7 @@ write@1.0.3:
dependencies:
mkdirp "^0.5.1"
-xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
+xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
@@ -7415,7 +9153,7 @@ yargs-parser@^13.1.0:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs-parser@^18.1.1:
+yargs-parser@^18.1.1, yargs-parser@^18.1.2:
version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
dependencies:
@@ -7438,6 +9176,23 @@ yargs@13.2.4:
y18n "^4.0.0"
yargs-parser "^13.1.0"
+yargs@^15.0.2:
+ version "15.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
yauzl@^2.10.0:
version "2.10.0"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"