diff --git a/.gitignore b/.gitignore index 6704566..adb2c19 100644 --- a/.gitignore +++ b/.gitignore @@ -80,7 +80,6 @@ typings/ # Nuxt.js build / generate output .nuxt -dist # Gatsby files .cache/ diff --git a/package.json b/package.json index da16669..1df4f31 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,6 @@ "workspaces": [ "packages/*" ], - "husky": { - "hooks": { - "pre-commit": "eslint packages/" - } - }, "scripts": { "bootstrap": "lerna bootstrap --use-workspaces", "example": "yarn workspace example serve", diff --git a/packages/vue-prism-editor/.gitignore b/packages/vue-prism-editor/.gitignore index 4c9d7c3..f4fa561 100644 --- a/packages/vue-prism-editor/.gitignore +++ b/packages/vue-prism-editor/.gitignore @@ -1,4 +1,3 @@ *.log .DS_Store node_modules -dist diff --git a/packages/vue-prism-editor/dist/Editor.d.ts b/packages/vue-prism-editor/dist/Editor.d.ts new file mode 100644 index 0000000..d0a4cef --- /dev/null +++ b/packages/vue-prism-editor/dist/Editor.d.ts @@ -0,0 +1,70 @@ +import Vue from 'vue'; +import './styles.css'; +export interface EditorProps { + lineNumbers: boolean; + autoStyleLineNumbers: boolean; + readonly: boolean; + value: string; + highlight: () => string; + tabSize: number; + insertSpaces: boolean; + ignoreTabKey: boolean; + placeholder: string; +} +export interface Record { + value: string; + selectionStart: number; + selectionEnd: number; +} +export interface History { + stack: Array; + offset: number; +} +interface AutocompleteEntry { + text: string; + overlap: number; + label?: string; +} +export declare const PrismEditor: import("vue/types/vue").ExtendedVue; + _recordStateIfChange(): void; + _applyEdits(record: Record): void; + _recordChange(record: Record, overwrite?: boolean): void; + _updateInput(record: Record): void; + handleChange(e: KeyboardEvent): void; + _undoEdit(): void; + _redoEdit(): void; + handleKeyDown(e: KeyboardEvent): void; +}, { + isEmpty: boolean; + content: string; + lineNumbersCount: number; + cursorOffset: number[]; +}, { + lineNumbers: boolean; + autoStyleLineNumbers: boolean; + readonly: boolean; + value: string; + highlight: Function; + tabSize: number; + insertSpaces: boolean; + ignoreTabKey: boolean; + placeholder: string; + autocomplete: Function; +}>; +export {}; diff --git a/packages/vue-prism-editor/dist/index.d.ts b/packages/vue-prism-editor/dist/index.d.ts new file mode 100644 index 0000000..8b7c4c2 --- /dev/null +++ b/packages/vue-prism-editor/dist/index.d.ts @@ -0,0 +1 @@ +export * from './Editor'; diff --git a/packages/vue-prism-editor/dist/index.js b/packages/vue-prism-editor/dist/index.js new file mode 100644 index 0000000..8731bdb --- /dev/null +++ b/packages/vue-prism-editor/dist/index.js @@ -0,0 +1,8 @@ + +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./prismeditor.cjs.production.min.js') +} else { + module.exports = require('./prismeditor.cjs.development.js') +} diff --git a/packages/vue-prism-editor/dist/prismeditor.cjs.development.js b/packages/vue-prism-editor/dist/prismeditor.cjs.development.js new file mode 100644 index 0000000..101ed01 --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.cjs.development.js @@ -0,0 +1,710 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var Vue = _interopDefault(require('vue')); + +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +var KEYCODE_ENTER = 13; +var KEYCODE_TAB = 9; +var KEYCODE_BACKSPACE = 8; +var KEYCODE_Y = 89; +var KEYCODE_Z = 90; +var KEYCODE_M = 77; +var KEYCODE_ESCAPE = 27; +var BRACKET_PAIRS = { + '(': ')', + '{': '}', + '[': ']', + '"': '"', + "'": "'" +}; +var HISTORY_LIMIT = 100; +var HISTORY_TIME_GAP = 3000; +var isWindows = 'navigator' in global && /*#__PURE__*/ /Win/i.test(navigator.platform); +var isMacLike = 'navigator' in global && /*#__PURE__*/ /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform); +var PrismEditor = /*#__PURE__*/Vue.extend({ + props: { + lineNumbers: { + type: Boolean, + "default": false + }, + autoStyleLineNumbers: { + type: Boolean, + "default": true + }, + readonly: { + type: Boolean, + "default": false + }, + value: { + type: String, + "default": '' + }, + highlight: { + type: Function, + required: true + }, + tabSize: { + type: Number, + "default": 2 + }, + insertSpaces: { + type: Boolean, + "default": true + }, + ignoreTabKey: { + type: Boolean, + "default": false + }, + placeholder: { + type: String, + "default": '' + }, + autocomplete: { + type: Function, + "default": function _default() { + return []; + } + } + }, + data: function data() { + return { + capture: true, + history: { + stack: [], + offset: -1 + }, + lineNumbersHeight: '20px', + codeData: '', + autocompleteOpen: false, + autocompleteIndex: 0, + autocompleteData: [] + }; + }, + watch: { + value: { + immediate: true, + handler: function handler(newVal) { + if (!newVal) { + this.codeData = ''; + } else { + this.codeData = newVal; + } + } + }, + content: { + immediate: true, + handler: function handler() { + var _this = this; + + if (this.lineNumbers) { + this.$nextTick(function () { + _this.setLineNumbersHeight(); + }); + } + } + }, + lineNumbers: function lineNumbers() { + var _this2 = this; + + this.$nextTick(function () { + _this2.styleLineNumbers(); + + _this2.setLineNumbersHeight(); + }); + }, + autocompleteIndex: function autocompleteIndex() { + var _this3 = this; + + Vue.nextTick(function () { + var node = _this3.$el.querySelector('ul.prism-editor__autocomplete > li.selected'); + + if (node) node.scrollIntoView({ + block: 'nearest' + }); + }); + } + }, + computed: { + isEmpty: function isEmpty() { + return this.codeData.length === 0; + }, + content: function content() { + var result = this.highlight(this.codeData) + '
'; // todo: VNode support? + + return result; + }, + lineNumbersCount: function lineNumbersCount() { + var totalLines = this.codeData.split(/\r\n|\n/).length; + return totalLines; + }, + cursorOffset: function cursorOffset() { + var text = this.codeData; + var input = this.$refs.textarea; + var wrapper = this.$refs.wrapper; + var lines = text.substring(0, input.selectionEnd || 0).split(/\r\n|\n/); + var font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size')); + var line = lines.length; + var column = lines[lines.length - 1].length; + return [Math.min(column * 8.85 * (font_size / 16) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)), line * 24.0 * (font_size / 16) + 2 - wrapper.scrollTop]; + } + }, + mounted: function mounted() { + this._recordCurrentState(); + + this.styleLineNumbers(); + }, + methods: { + updateAutocompleteData: function updateAutocompleteData() { + var _this$autocompleteDat; + + var input = this.$refs.textarea; + var data = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : []; + var old_length = this.autocompleteData.length; + + (_this$autocompleteDat = this.autocompleteData).splice.apply(_this$autocompleteDat, [0, Infinity].concat(data)); + + this.autocompleteOpen = true; + this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length - 1)); + if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0; + }, + acceptAutocomplete: function acceptAutocomplete(event, option) { + var _this4 = this; + + event.preventDefault(); + if (option == undefined) option = this.autocompleteIndex; + var input = this.$refs.textarea; + var wrapper = this.$refs.wrapper; + var suggestion = this.autocompleteData[option] || this.autocompleteData[0]; + if (!suggestion) return; + var overlap = suggestion.overlap || 0; + var new_text = [this.codeData.substr(0, input.selectionEnd - overlap), suggestion.text, this.codeData.substring(input.selectionEnd)]; + var result = new_text.join(''); + var cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0); + input.selectionStart = input.selectionEnd = cursor_pos; + + this._applyEdits({ + value: result, + selectionStart: cursor_pos, + selectionEnd: cursor_pos + }); + + var inserted_characters = suggestion.text.length - suggestion.overlap; + Vue.nextTick(function () { + wrapper.scrollLeft += inserted_characters * 8.85; + }); + + if (suggestion.text.endsWith('.')) { + setTimeout(function () { + _this4.updateAutocompleteData(); + }, 1); + } else { + this.autocompleteOpen = false; + } + }, + setLineNumbersHeight: function setLineNumbersHeight() { + this.lineNumbersHeight = getComputedStyle(this.$refs.pre).height; + }, + styleLineNumbers: function styleLineNumbers() { + if (!this.lineNumbers || !this.autoStyleLineNumbers) return; + var $editor = this.$refs.pre; + var $lineNumbers = this.$el.querySelector('.prism-editor__line-numbers'); + var editorStyles = window.getComputedStyle($editor); + this.$nextTick(function () { + var btlr = 'border-top-left-radius'; + var bblr = 'border-bottom-left-radius'; + if (!$lineNumbers) return; + $lineNumbers.style[btlr] = editorStyles[btlr]; + $lineNumbers.style[bblr] = editorStyles[bblr]; + $editor.style[btlr] = '0'; + $editor.style[bblr] = '0'; + var stylesList = ['background-color', 'margin-top', 'padding-top', 'font-family', 'font-size', 'line-height']; + stylesList.forEach(function (style) { + $lineNumbers.style[style] = editorStyles[style]; + }); + $lineNumbers.style['margin-bottom'] = '-' + editorStyles['padding-top']; + }); + }, + _recordCurrentState: function _recordCurrentState() { + var input = this.$refs.textarea; + if (!input) return; // Save current state of the input + + var value = input.value, + selectionStart = input.selectionStart, + selectionEnd = input.selectionEnd; + + this._recordChange({ + value: value, + selectionStart: selectionStart, + selectionEnd: selectionEnd + }); + }, + _getLines: function _getLines(text, position) { + return text.substring(0, position).split('\n'); + }, + _recordStateIfChange: function _recordStateIfChange() { + if (this.history.stack[this.history.offset].value != this.codeData) { + this._recordChange({ + value: this.codeData, + selectionStart: this.codeData.length, + selectionEnd: this.codeData.length + }); + } + }, + _applyEdits: function _applyEdits(record) { + // Save last selection state + var input = this.$refs.textarea; + var last = this.history.stack[this.history.offset]; + + if (last && input) { + this.history.stack[this.history.offset] = _extends({}, last, { + selectionStart: input.selectionStart, + selectionEnd: input.selectionEnd + }); + } // Save the changes + + + this._recordChange(record); + + this._updateInput(record); + }, + _recordChange: function _recordChange(record, overwrite) { + if (overwrite === void 0) { + overwrite = false; + } + + var _this$history = this.history, + stack = _this$history.stack, + offset = _this$history.offset; + + if (stack.length && offset > -1) { + // When something updates, drop the redo operations + this.history.stack = stack.slice(0, offset + 1); // Limit the number of operations to 100 + + var count = this.history.stack.length; + + if (count > HISTORY_LIMIT) { + var extras = count - HISTORY_LIMIT; + this.history.stack = stack.slice(extras, count); + this.history.offset = Math.max(this.history.offset - extras, 0); + } + } + + var timestamp = Date.now(); + + if (overwrite) { + var last = this.history.stack[this.history.offset]; + + if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) { + var _this$_getLines$pop, _this$_getLines$pop2; + + // A previous entry exists and was in short interval + // Match the last word in the line + var re = /[^a-z0-9]([a-z0-9]+)$/i; // Get the previous line + + var previous = (_this$_getLines$pop = this._getLines(last.value, last.selectionStart).pop()) === null || _this$_getLines$pop === void 0 ? void 0 : _this$_getLines$pop.match(re); // Get the current line + + var current = (_this$_getLines$pop2 = this._getLines(record.value, record.selectionStart).pop()) === null || _this$_getLines$pop2 === void 0 ? void 0 : _this$_getLines$pop2.match(re); + + if (previous && current && current[1].startsWith(previous[1])) { + // The last word of the previous line and current line match + // Overwrite previous entry so that undo will remove whole word + this.history.stack[this.history.offset] = _extends({}, record, { + timestamp: timestamp + }); + return; + } + } + } // Add the new operation to the stack + + + this.history.stack.push(_extends({}, record, { + timestamp: timestamp + })); + this.history.offset++; + }, + _updateInput: function _updateInput(record) { + var input = this.$refs.textarea; + if (!input) return; // Update values and selection state + + input.value = record.value; + input.selectionStart = record.selectionStart; + input.selectionEnd = record.selectionEnd; + this.$emit('input', record.value); // this.props.onValueChange(record.value); + }, + handleChange: function handleChange(e) { + var _e$target = e.target, + value = _e$target.value, + selectionStart = _e$target.selectionStart, + selectionEnd = _e$target.selectionEnd; + + this._recordChange({ + value: value, + selectionStart: selectionStart, + selectionEnd: selectionEnd + }, true); + + this.$emit('input', value); // this.props.onValueChange(value); + }, + _undoEdit: function _undoEdit() { + var _this$history2 = this.history, + stack = _this$history2.stack, + offset = _this$history2.offset; // Get the previous edit + + var record = stack[offset - 1]; + + if (record) { + // Apply the changes and update the offset + this._updateInput(record); + + this.history.offset = Math.max(offset - 1, 0); + } + }, + _redoEdit: function _redoEdit() { + var _this$history3 = this.history, + stack = _this$history3.stack, + offset = _this$history3.offset; // Get the next edit + + var record = stack[offset + 1]; + + if (record) { + // Apply the changes and update the offset + this._updateInput(record); + + this.history.offset = Math.min(offset + 1, stack.length - 1); + } + }, + handleKeyDown: function handleKeyDown(e) { + var _this5 = this; + + // console.log(navigator.platform); + var tabSize = this.tabSize, + insertSpaces = this.insertSpaces, + ignoreTabKey = this.ignoreTabKey; + + if (this.$listeners.keydown) { + // onKeyDown(e); + this.$emit('keydown', e); + + if (e.defaultPrevented) { + return; + } + } + + if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) { + this.acceptAutocomplete(e); + e.preventDefault(); + e.stopPropagation(); + return; + } + + if (e.keyCode === 27) { + // Escape + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteOpen = false; + return; + } + } else if (e.keyCode === 38) { + // Up + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1; + return; + } + } else if (e.keyCode === 40) { + // Down + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length; + return; + } + } + + if (e.keyCode === KEYCODE_ESCAPE) { + e.target.blur(); + this.$emit('blur', e); + } + + var _e$target2 = e.target, + value = _e$target2.value, + selectionStart = _e$target2.selectionStart, + selectionEnd = _e$target2.selectionEnd; + var tabCharacter = (insertSpaces ? ' ' : '\t').repeat(tabSize); + + if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) { + // Prevent focus change + e.preventDefault(); + + if (e.shiftKey) { + // Unindent selected lines + var linesBeforeCaret = this._getLines(value, selectionStart); + + var startLine = linesBeforeCaret.length - 1; + var endLine = this._getLines(value, selectionEnd).length - 1; + var nextValue = value.split('\n').map(function (line, i) { + if (i >= startLine && i <= endLine && line.startsWith(tabCharacter)) { + return line.substring(tabCharacter.length); + } + + return line; + }).join('\n'); + + if (value !== nextValue) { + var startLineText = linesBeforeCaret[startLine]; + + this._applyEdits({ + value: nextValue, + // Move the start cursor if first line in selection was modified + // It was modified only if it started with a tab + selectionStart: startLineText.startsWith(tabCharacter) ? selectionStart - tabCharacter.length : selectionStart, + // Move the end cursor by total number of characters removed + selectionEnd: selectionEnd - (value.length - nextValue.length) + }); + } + } else if (selectionStart !== selectionEnd) { + // Indent selected lines + var _linesBeforeCaret = this._getLines(value, selectionStart); + + var _startLine = _linesBeforeCaret.length - 1; + + var _endLine = this._getLines(value, selectionEnd).length - 1; + + var _startLineText = _linesBeforeCaret[_startLine]; + + this._applyEdits({ + value: value.split('\n').map(function (line, i) { + if (i >= _startLine && i <= _endLine) { + return tabCharacter + line; + } + + return line; + }).join('\n'), + // Move the start cursor by number of characters added in first line of selection + // Don't move it if it there was no text before cursor + selectionStart: /\S/.test(_startLineText) ? selectionStart + tabCharacter.length : selectionStart, + // Move the end cursor by total number of characters added + selectionEnd: selectionEnd + tabCharacter.length * (_endLine - _startLine + 1) + }); + } else { + var updatedSelection = selectionStart + tabCharacter.length; + + this._applyEdits({ + // Insert tab character at caret + value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd), + // Update caret position + selectionStart: updatedSelection, + selectionEnd: updatedSelection + }); + } + } else if (e.keyCode === KEYCODE_BACKSPACE) { + var hasSelection = selectionStart !== selectionEnd; + var textBeforeCaret = value.substring(0, selectionStart); + + if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) { + // Prevent default delete behaviour + e.preventDefault(); + + var _updatedSelection = selectionStart - tabCharacter.length; + + this._applyEdits({ + // Remove tab character at caret + value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd), + // Update caret position + selectionStart: _updatedSelection, + selectionEnd: _updatedSelection + }); + } + } else if (e.keyCode === KEYCODE_ENTER) { + if (this.autocompleteData.length && this.autocompleteOpen) { + this.acceptAutocomplete(e); + } else if (selectionStart === selectionEnd) { + // Get the current line + var line = this._getLines(value, selectionStart).pop(); + + var matches = line === null || line === void 0 ? void 0 : line.match(/^\s+/); + + if (matches && matches[0]) { + e.preventDefault(); // Preserve indentation on inserting a new line + + var indent = '\n' + matches[0]; + + var _updatedSelection2 = selectionStart + indent.length; + + this._applyEdits({ + // Insert indentation character at caret + value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd), + // Update caret position + selectionStart: _updatedSelection2, + selectionEnd: _updatedSelection2 + }); + } + } + } else if (BRACKET_PAIRS[e.key]) { + // If text is selected, wrap them in the characters + if (selectionStart !== selectionEnd) { + e.preventDefault(); + + this._applyEdits({ + value: value.substring(0, selectionStart) + e.key + value.substring(selectionStart, selectionEnd) + BRACKET_PAIRS[e.key] + value.substring(selectionEnd), + // Update caret position + selectionStart: selectionStart + 1, + selectionEnd: selectionEnd + 1 + }); + } + } else if ((isMacLike ? // Trigger undo with ⌘+Z on Mac + e.metaKey && e.keyCode === KEYCODE_Z : // Trigger undo with Ctrl+Z on other platforms + e.ctrlKey && e.keyCode === KEYCODE_Z) && !e.shiftKey && !e.altKey) { + e.preventDefault(); + + this._undoEdit(); + } else if ((isMacLike ? // Trigger redo with ⌘+Shift+Z on Mac + e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey : isWindows ? // Trigger redo with Ctrl+Y on Windows + e.ctrlKey && e.keyCode === KEYCODE_Y : // Trigger redo with Ctrl+Shift+Z on other platforms + e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) && !e.altKey) { + e.preventDefault(); + + this._redoEdit(); + } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) { + e.preventDefault(); // Toggle capturing tab key so users can focus away + + this.capture = !this.capture; + } + + if (e.keyCode !== 13 && e.keyCode !== 9) { + setTimeout(function () { + _this5.updateAutocompleteData(); + }, 1); + } + } + }, + render: function render(h) { + var _this6 = this; + + var lineNumberWidthCalculator = h('div', { + attrs: { + "class": 'prism-editor__line-width-calc', + style: 'height: 0px; visibility: hidden; pointer-events: none;' + } + }, '999'); + var lineNumbers = h('div', { + staticClass: 'prism-editor__line-numbers', + style: { + 'min-height': this.lineNumbersHeight + }, + attrs: { + 'aria-hidden': 'true' + } + }, [lineNumberWidthCalculator, Array.from(Array(this.lineNumbersCount).keys()).map(function (_, index) { + return h('div', { + attrs: { + "class": 'prism-editor__line-number token comment' + } + }, "" + ++index); + })]); + var autocompleteList = this.autocompleteOpen && this.autocompleteData.length ? h('ul', { + staticClass: 'prism-editor__autocomplete', + style: { + left: this.cursorOffset[0] + 'px', + top: this.cursorOffset[1] + 'px' + } + }, this.autocompleteData.map(function (data, i) { + return h('li', { + key: data.text, + "class": { + selected: i == _this6.autocompleteIndex + }, + on: { + mousedown: function mousedown($event) { + _this6.acceptAutocomplete($event, i); + } + } + }, [data.label || data.text]); + })) : undefined; + var textarea = h('textarea', { + ref: 'textarea', + on: { + input: this.handleChange, + keydown: this.handleKeyDown, + click: function click($event) { + _this6.autocompleteOpen = false; + + _this6.$emit('click', $event); + }, + keyup: function keyup($event) { + _this6.$emit('keyup', $event); + }, + focus: function focus($event) { + _this6._recordStateIfChange(); + + _this6.$emit('focus', $event); + }, + blur: function blur($event) { + _this6.autocompleteOpen = false; + + _this6.$emit('blur', $event); + } + }, + staticClass: 'prism-editor__textarea', + "class": { + 'prism-editor__textarea--empty': this.isEmpty + }, + attrs: { + spellCheck: 'false', + autocapitalize: 'off', + autocomplete: 'off', + autocorrect: 'off', + 'data-gramm': 'false', + placeholder: this.placeholder, + 'data-testid': 'textarea', + readonly: this.readonly + }, + domProps: { + value: this.codeData + } + }); + var preview = h('pre', { + ref: 'pre', + staticClass: 'prism-editor__editor', + attrs: { + 'data-testid': 'preview' + }, + domProps: { + innerHTML: this.content + } + }); + var editorContainer = h('div', { + staticClass: 'prism-editor__container' + }, [textarea, preview]); + var wrapper = h('div', { + staticClass: 'prism-editor-wrapper', + ref: 'wrapper' + }, [this.lineNumbers && lineNumbers, editorContainer]); + return h('div', { + staticClass: 'prism-editor-component' + }, [wrapper, autocompleteList]); + } +}); + +exports.PrismEditor = PrismEditor; +//# sourceMappingURL=prismeditor.cjs.development.js.map diff --git a/packages/vue-prism-editor/dist/prismeditor.cjs.development.js.map b/packages/vue-prism-editor/dist/prismeditor.cjs.development.js.map new file mode 100644 index 0000000..b5c0a31 --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.cjs.development.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prismeditor.cjs.development.js","sources":["../src/Editor.ts"],"sourcesContent":["import Vue, { VNode } from 'vue';\r\n\r\nimport './styles.css';\r\nconst KEYCODE_ENTER = 13;\r\nconst KEYCODE_TAB = 9;\r\nconst KEYCODE_BACKSPACE = 8;\r\nconst KEYCODE_Y = 89;\r\nconst KEYCODE_Z = 90;\r\nconst KEYCODE_M = 77;\r\nconst KEYCODE_ESCAPE = 27;\r\n\r\nconst BRACKET_PAIRS: {[opening: string]: string} = {\r\n '(':')',\r\n '{':'}',\r\n '[':']',\r\n '\"':'\"',\r\n \"'\":\"'\",\r\n};\r\n\r\nconst HISTORY_LIMIT = 100;\r\nconst HISTORY_TIME_GAP = 3000;\r\n\r\nconst isWindows = 'navigator' in global && /Win/i.test(navigator.platform);\r\nconst isMacLike = 'navigator' in global && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\r\n\r\nexport interface EditorProps {\r\n lineNumbers: boolean;\r\n autoStyleLineNumbers: boolean;\r\n readonly: boolean;\r\n value: string;\r\n highlight: () => string;\r\n tabSize: number;\r\n insertSpaces: boolean;\r\n ignoreTabKey: boolean;\r\n placeholder: string;\r\n}\r\nexport interface Record {\r\n value: string;\r\n selectionStart: number;\r\n selectionEnd: number;\r\n}\r\n\r\nexport interface History {\r\n stack: Array;\r\n offset: number;\r\n}\r\ninterface AutocompleteEntry {\r\n text: string\r\n overlap: number\r\n label?: string\r\n}\r\n\r\nexport const PrismEditor = Vue.extend({\r\n props: {\r\n lineNumbers: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n autoStyleLineNumbers: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n value: {\r\n type: String,\r\n default: '',\r\n },\r\n highlight: {\r\n type: Function,\r\n required: true,\r\n },\r\n tabSize: {\r\n type: Number,\r\n default: 2,\r\n },\r\n insertSpaces: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n ignoreTabKey: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n placeholder: {\r\n type: String,\r\n default: '',\r\n },\r\n autocomplete: {\r\n type: Function,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n capture: true,\r\n history: {\r\n stack: [],\r\n offset: -1,\r\n } as History,\r\n lineNumbersHeight: '20px',\r\n codeData: '',\r\n\r\n autocompleteOpen: false,\r\n autocompleteIndex: 0,\r\n autocompleteData: [] as AutocompleteEntry[]\r\n };\r\n },\r\n watch: {\r\n value: {\r\n immediate: true,\r\n handler(newVal: string): void {\r\n if (!newVal) {\r\n this.codeData = '';\r\n } else {\r\n this.codeData = newVal;\r\n }\r\n },\r\n },\r\n content: {\r\n immediate: true,\r\n handler(): void {\r\n if (this.lineNumbers) {\r\n this.$nextTick(() => {\r\n this.setLineNumbersHeight();\r\n });\r\n }\r\n },\r\n },\r\n lineNumbers(): void {\r\n this.$nextTick(() => {\r\n this.styleLineNumbers();\r\n this.setLineNumbersHeight();\r\n });\r\n },\r\n autocompleteIndex() {\r\n Vue.nextTick(() => {\r\n let node = this.$el.querySelector('ul.prism-editor__autocomplete > li.selected');\r\n if (node) node.scrollIntoView({block: 'nearest'});\r\n })\r\n },\r\n },\r\n computed: {\r\n isEmpty(): boolean {\r\n return this.codeData.length === 0;\r\n },\r\n content(): string {\r\n const result = this.highlight(this.codeData) + '
';\r\n // todo: VNode support?\r\n return result;\r\n },\r\n lineNumbersCount(): number {\r\n const totalLines = this.codeData.split(/\\r\\n|\\n/).length;\r\n return totalLines;\r\n },\r\n cursorOffset() {\r\n let text: string = this.codeData;\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let lines = text.substring(0, input.selectionEnd || 0).split(/\\r\\n|\\n/);\r\n let font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size'));\r\n let line = lines.length;\r\n let column = lines[lines.length-1].length;\r\n return [\r\n Math.min((column * 8.85 * (font_size / 16)) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)),\r\n (line * 24.0 * (font_size / 16)) + 2 - wrapper.scrollTop,\r\n ]\r\n },\r\n },\r\n mounted() {\r\n this._recordCurrentState();\r\n this.styleLineNumbers();\r\n },\r\n\r\n methods: {\r\n updateAutocompleteData() {\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let data: AutocompleteEntry[] = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : [];\r\n let old_length = this.autocompleteData.length;\r\n this.autocompleteData.splice(0, Infinity, ...data);\r\n this.autocompleteOpen = true;\r\n this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length-1));\r\n if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0;\r\n },\r\n acceptAutocomplete(event: Event, option?: number) {\r\n event.preventDefault()\r\n if (option == undefined) option = this.autocompleteIndex;\r\n\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let suggestion = this.autocompleteData[option] || this.autocompleteData[0];\r\n if (!suggestion) return;\r\n \r\n let overlap = suggestion.overlap || 0;\r\n let new_text = [\r\n this.codeData.substr(0, input.selectionEnd - overlap),\r\n suggestion.text,\r\n this.codeData.substring(input.selectionEnd),\r\n ]\r\n let result: string = new_text.join('');\r\n let cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0);\r\n input.selectionStart = input.selectionEnd = cursor_pos;\r\n\r\n this._applyEdits({\r\n value: result,\r\n selectionStart: cursor_pos,\r\n selectionEnd: cursor_pos,\r\n });\r\n let inserted_characters = suggestion.text.length - suggestion.overlap;\r\n Vue.nextTick(() => {\r\n wrapper.scrollLeft += inserted_characters * 8.85;\r\n })\r\n\r\n if (suggestion.text.endsWith('.')) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n } else {\r\n this.autocompleteOpen = false;\r\n }\r\n },\r\n setLineNumbersHeight(): void {\r\n this.lineNumbersHeight = getComputedStyle(this.$refs.pre as HTMLTextAreaElement).height;\r\n },\r\n styleLineNumbers(): void {\r\n if (!this.lineNumbers || !this.autoStyleLineNumbers) return;\r\n\r\n const $editor = this.$refs.pre as HTMLTextAreaElement;\r\n const $lineNumbers: HTMLDivElement | null = this.$el.querySelector('.prism-editor__line-numbers');\r\n const editorStyles = window.getComputedStyle($editor);\r\n\r\n this.$nextTick(() => {\r\n const btlr: any = 'border-top-left-radius';\r\n const bblr: any = 'border-bottom-left-radius';\r\n if (!$lineNumbers) return;\r\n $lineNumbers.style[btlr] = editorStyles[btlr];\r\n $lineNumbers.style[bblr] = editorStyles[bblr];\r\n $editor.style[btlr] = '0';\r\n $editor.style[bblr] = '0';\r\n\r\n const stylesList = ['background-color', 'margin-top', 'padding-top', 'font-family', 'font-size', 'line-height'];\r\n stylesList.forEach((style: any) => {\r\n $lineNumbers.style[style] = editorStyles[style];\r\n });\r\n $lineNumbers.style['margin-bottom' as any] = '-' + editorStyles['padding-top' as any];\r\n });\r\n },\r\n _recordCurrentState(): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n // Save current state of the input\r\n const { value, selectionStart, selectionEnd } = input;\r\n\r\n this._recordChange({\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n });\r\n },\r\n _getLines(text: string, position: number): Array {\r\n return text.substring(0, position).split('\\n');\r\n },\r\n _recordStateIfChange(): void {\r\n if (this.history.stack[this.history.offset].value != this.codeData) {\r\n this._recordChange({\r\n value: this.codeData,\r\n selectionStart: this.codeData.length,\r\n selectionEnd: this.codeData.length,\r\n });\r\n }\r\n },\r\n _applyEdits(record: Record): void {\r\n // Save last selection state\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && input) {\r\n this.history.stack[this.history.offset] = {\r\n ...last,\r\n selectionStart: input.selectionStart,\r\n selectionEnd: input.selectionEnd,\r\n };\r\n }\r\n\r\n // Save the changes\r\n this._recordChange(record);\r\n this._updateInput(record);\r\n },\r\n _recordChange(record: Record, overwrite = false): void {\r\n const { stack, offset } = this.history;\r\n\r\n if (stack.length && offset > -1) {\r\n // When something updates, drop the redo operations\r\n this.history.stack = stack.slice(0, offset + 1);\r\n\r\n // Limit the number of operations to 100\r\n const count = this.history.stack.length;\r\n\r\n if (count > HISTORY_LIMIT) {\r\n const extras = count - HISTORY_LIMIT;\r\n\r\n this.history.stack = stack.slice(extras, count);\r\n this.history.offset = Math.max(this.history.offset - extras, 0);\r\n }\r\n }\r\n\r\n const timestamp = Date.now();\r\n\r\n if (overwrite) {\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) {\r\n // A previous entry exists and was in short interval\r\n\r\n // Match the last word in the line\r\n const re = /[^a-z0-9]([a-z0-9]+)$/i;\r\n\r\n // Get the previous line\r\n const previous = this._getLines(last.value, last.selectionStart).pop()?.match(re);\r\n\r\n // Get the current line\r\n const current = this._getLines(record.value, record.selectionStart).pop()?.match(re);\r\n\r\n if (previous && current && current[1].startsWith(previous[1])) {\r\n // The last word of the previous line and current line match\r\n // Overwrite previous entry so that undo will remove whole word\r\n this.history.stack[this.history.offset] = {\r\n ...record,\r\n timestamp,\r\n };\r\n\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Add the new operation to the stack\r\n this.history.stack.push({ ...record, timestamp });\r\n this.history.offset++;\r\n },\r\n\r\n _updateInput(record: Record): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n\r\n // Update values and selection state\r\n input.value = record.value;\r\n input.selectionStart = record.selectionStart;\r\n input.selectionEnd = record.selectionEnd;\r\n\r\n this.$emit('input', record.value);\r\n // this.props.onValueChange(record.value);\r\n },\r\n handleChange(e: KeyboardEvent): void {\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n this._recordChange(\r\n {\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n },\r\n true\r\n );\r\n this.$emit('input', value);\r\n // this.props.onValueChange(value);\r\n },\r\n _undoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the previous edit\r\n const record = stack[offset - 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.max(offset - 1, 0);\r\n }\r\n },\r\n _redoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the next edit\r\n const record = stack[offset + 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.min(offset + 1, stack.length - 1);\r\n }\r\n },\r\n handleKeyDown(e: KeyboardEvent): void {\r\n // console.log(navigator.platform);\r\n const { tabSize, insertSpaces, ignoreTabKey } = this;\r\n\r\n if (this.$listeners.keydown) {\r\n // onKeyDown(e);\r\n this.$emit('keydown', e);\r\n\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n if (e.keyCode === 27) {\r\n // Escape\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteOpen = false;\r\n return;\r\n }\r\n } else if (e.keyCode === 38) {\r\n // Up\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1;\r\n return;\r\n }\r\n } else if (e.keyCode === 40) {\r\n // Down\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length;\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === KEYCODE_ESCAPE) {\r\n (e.target).blur();\r\n this.$emit('blur', e);\r\n }\r\n\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n const tabCharacter = (insertSpaces ? ' ' : '\\t').repeat(tabSize);\r\n\r\n if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) {\r\n // Prevent focus change\r\n e.preventDefault();\r\n\r\n if (e.shiftKey) {\r\n // Unindent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const nextValue = value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine && line.startsWith(tabCharacter)) {\r\n return line.substring(tabCharacter.length);\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n');\r\n\r\n if (value !== nextValue) {\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: nextValue,\r\n // Move the start cursor if first line in selection was modified\r\n // It was modified only if it started with a tab\r\n selectionStart: startLineText.startsWith(tabCharacter)\r\n ? selectionStart - tabCharacter.length\r\n : selectionStart,\r\n // Move the end cursor by total number of characters removed\r\n selectionEnd: selectionEnd - (value.length - nextValue.length),\r\n });\r\n }\r\n } else if (selectionStart !== selectionEnd) {\r\n // Indent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine) {\r\n return tabCharacter + line;\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n'),\r\n // Move the start cursor by number of characters added in first line of selection\r\n // Don't move it if it there was no text before cursor\r\n selectionStart: /\\S/.test(startLineText) ? selectionStart + tabCharacter.length : selectionStart,\r\n // Move the end cursor by total number of characters added\r\n selectionEnd: selectionEnd + tabCharacter.length * (endLine - startLine + 1),\r\n });\r\n } else {\r\n const updatedSelection = selectionStart + tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Insert tab character at caret\r\n value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_BACKSPACE) {\r\n const hasSelection = selectionStart !== selectionEnd;\r\n const textBeforeCaret = value.substring(0, selectionStart);\r\n\r\n if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) {\r\n // Prevent default delete behaviour\r\n e.preventDefault();\r\n\r\n const updatedSelection = selectionStart - tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Remove tab character at caret\r\n value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_ENTER) {\r\n \r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n\r\n } else if (selectionStart === selectionEnd) {\r\n // Get the current line\r\n const line = this._getLines(value, selectionStart).pop();\r\n const matches = line?.match(/^\\s+/);\r\n\r\n if (matches && matches[0]) {\r\n e.preventDefault();\r\n\r\n // Preserve indentation on inserting a new line\r\n const indent = '\\n' + matches[0];\r\n const updatedSelection = selectionStart + indent.length;\r\n\r\n this._applyEdits({\r\n // Insert indentation character at caret\r\n value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n }\r\n } else if (BRACKET_PAIRS[e.key]) {\r\n // If text is selected, wrap them in the characters\r\n if (selectionStart !== selectionEnd) {\r\n e.preventDefault();\r\n\r\n this._applyEdits({\r\n value:\r\n value.substring(0, selectionStart) +\r\n e.key +\r\n value.substring(selectionStart, selectionEnd) +\r\n BRACKET_PAIRS[e.key] +\r\n value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: selectionStart + 1,\r\n selectionEnd: selectionEnd + 1,\r\n });\r\n }\r\n } else if (\r\n (isMacLike\r\n ? // Trigger undo with ⌘+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z\r\n : // Trigger undo with Ctrl+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z) &&\r\n !e.shiftKey &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._undoEdit();\r\n } else if (\r\n (isMacLike\r\n ? // Trigger redo with ⌘+Shift+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey\r\n : isWindows\r\n ? // Trigger redo with Ctrl+Y on Windows\r\n e.ctrlKey && e.keyCode === KEYCODE_Y\r\n : // Trigger redo with Ctrl+Shift+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._redoEdit();\r\n } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) {\r\n e.preventDefault();\r\n\r\n // Toggle capturing tab key so users can focus away\r\n this.capture = !this.capture;\r\n }\r\n if (e.keyCode !== 13 && e.keyCode !== 9) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n }\r\n },\r\n },\r\n render(h): VNode {\r\n const lineNumberWidthCalculator = h(\r\n 'div',\r\n {\r\n attrs: {\r\n class: 'prism-editor__line-width-calc',\r\n style: 'height: 0px; visibility: hidden; pointer-events: none;',\r\n },\r\n },\r\n '999'\r\n );\r\n const lineNumbers = h(\r\n 'div',\r\n {\r\n staticClass: 'prism-editor__line-numbers',\r\n style: {\r\n 'min-height': this.lineNumbersHeight,\r\n },\r\n attrs: {\r\n 'aria-hidden': 'true',\r\n },\r\n },\r\n [\r\n lineNumberWidthCalculator,\r\n Array.from(Array(this.lineNumbersCount).keys()).map((_, index) => {\r\n return h('div', { attrs: { class: 'prism-editor__line-number token comment' } }, `${++index}`);\r\n }),\r\n ]\r\n );\r\n\r\n const autocompleteList = (this.autocompleteOpen && this.autocompleteData.length) ? h(\r\n 'ul',\r\n {\r\n staticClass: 'prism-editor__autocomplete',\r\n style: {left: this.cursorOffset[0] + 'px', top: this.cursorOffset[1] + 'px'}\r\n },\r\n this.autocompleteData.map((data: AutocompleteEntry, i) => {\r\n return h('li', {\r\n key: data.text,\r\n class: {selected: i == this.autocompleteIndex},\r\n on: {\r\n mousedown: ($event: MouseEvent) => {\r\n this.acceptAutocomplete($event, i);\r\n }\r\n }\r\n }, [data.label || data.text]);\r\n })\r\n ) : undefined;\r\n\r\n const textarea = h('textarea', {\r\n ref: 'textarea',\r\n on: {\r\n input: this.handleChange,\r\n keydown: this.handleKeyDown,\r\n click: ($event: MouseEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('click', $event);\r\n },\r\n keyup: ($event: KeyboardEvent) => {\r\n this.$emit('keyup', $event);\r\n },\r\n focus: ($event: FocusEvent) => {\r\n this._recordStateIfChange();\r\n this.$emit('focus', $event);\r\n },\r\n blur: ($event: FocusEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('blur', $event);\r\n },\r\n },\r\n staticClass: 'prism-editor__textarea',\r\n class: {\r\n 'prism-editor__textarea--empty': this.isEmpty,\r\n },\r\n attrs: {\r\n spellCheck: 'false',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n autocorrect: 'off',\r\n 'data-gramm': 'false',\r\n placeholder: this.placeholder,\r\n 'data-testid': 'textarea',\r\n readonly: this.readonly,\r\n },\r\n domProps: {\r\n value: this.codeData,\r\n },\r\n });\r\n const preview = h('pre', {\r\n ref: 'pre',\r\n staticClass: 'prism-editor__editor',\r\n attrs: {\r\n 'data-testid': 'preview',\r\n },\r\n domProps: {\r\n innerHTML: this.content,\r\n },\r\n });\r\n const editorContainer = h('div', { staticClass: 'prism-editor__container' }, [textarea, preview]);\r\n const wrapper = h('div', { staticClass: 'prism-editor-wrapper', ref: 'wrapper' }, [this.lineNumbers && lineNumbers, editorContainer]);\r\n return h('div', { staticClass: 'prism-editor-component' }, [wrapper, autocompleteList]);\r\n },\r\n});\r\n"],"names":["KEYCODE_ENTER","KEYCODE_TAB","KEYCODE_BACKSPACE","KEYCODE_Y","KEYCODE_Z","KEYCODE_M","KEYCODE_ESCAPE","BRACKET_PAIRS","HISTORY_LIMIT","HISTORY_TIME_GAP","isWindows","global","test","navigator","platform","isMacLike","PrismEditor","Vue","extend","props","lineNumbers","type","Boolean","autoStyleLineNumbers","readonly","value","String","highlight","Function","required","tabSize","Number","insertSpaces","ignoreTabKey","placeholder","autocomplete","data","capture","history","stack","offset","lineNumbersHeight","codeData","autocompleteOpen","autocompleteIndex","autocompleteData","watch","immediate","handler","newVal","content","$nextTick","setLineNumbersHeight","styleLineNumbers","nextTick","node","$el","querySelector","scrollIntoView","block","computed","isEmpty","length","result","lineNumbersCount","totalLines","split","cursorOffset","text","input","$refs","textarea","wrapper","lines","substring","selectionEnd","font_size","parseFloat","getComputedStyle","getPropertyValue","line","column","Math","min","scrollLeft","clientWidth","scrollTop","mounted","_recordCurrentState","methods","updateAutocompleteData","old_length","splice","Infinity","max","acceptAutocomplete","event","option","preventDefault","undefined","suggestion","overlap","new_text","substr","join","cursor_pos","endsWith","selectionStart","_applyEdits","inserted_characters","setTimeout","pre","height","$editor","$lineNumbers","editorStyles","window","btlr","bblr","style","stylesList","forEach","_recordChange","_getLines","position","_recordStateIfChange","record","last","_updateInput","overwrite","slice","count","extras","timestamp","Date","now","re","previous","pop","match","current","startsWith","push","$emit","handleChange","e","target","_undoEdit","_redoEdit","handleKeyDown","$listeners","keydown","defaultPrevented","keyCode","stopPropagation","blur","tabCharacter","repeat","shiftKey","linesBeforeCaret","startLine","endLine","nextValue","map","i","startLineText","updatedSelection","hasSelection","textBeforeCaret","matches","indent","key","metaKey","ctrlKey","altKey","render","h","lineNumberWidthCalculator","attrs","staticClass","Array","from","keys","_","index","autocompleteList","left","top","selected","on","mousedown","$event","label","ref","click","keyup","focus","spellCheck","autocapitalize","autocorrect","domProps","preview","innerHTML","editorContainer"],"mappings":"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"} \ No newline at end of file diff --git a/packages/vue-prism-editor/dist/prismeditor.cjs.production.min.js b/packages/vue-prism-editor/dist/prismeditor.cjs.production.min.js new file mode 100644 index 0000000..f4e4dd6 --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.cjs.production.min.js @@ -0,0 +1,2 @@ +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t,e=(t=require("vue"))&&"object"==typeof t&&"default"in t?t.default:t;function i(){return(i=Object.assign||function(t){for(var e=1;e li.selected");e&&e.scrollIntoView({block:"nearest"})}))}},computed:{isEmpty:function(){return 0===this.codeData.length},content:function(){return this.highlight(this.codeData)+"
"},lineNumbersCount:function(){return this.codeData.split(/\r\n|\n/).length},cursorOffset:function(){var t=this.$refs.textarea,e=this.$refs.wrapper,i=this.codeData.substring(0,t.selectionEnd||0).split(/\r\n|\n/),s=parseFloat(getComputedStyle(t).getPropertyValue("font-size")),n=i.length;return[Math.min(8.85*i[i.length-1].length*(s/16)-e.scrollLeft,e.clientWidth-Math.min(240,e.clientWidth)),24*n*(s/16)+2-e.scrollTop]}},mounted:function(){this._recordCurrentState(),this.styleLineNumbers()},methods:{updateAutocompleteData:function(){var t,e="function"==typeof this.autocomplete?this.autocomplete(this.codeData,this.$refs.textarea.selectionEnd):[],i=this.autocompleteData.length;(t=this.autocompleteData).splice.apply(t,[0,Infinity].concat(e)),this.autocompleteOpen=!0,this.autocompleteIndex=Math.max(0,Math.min(this.autocompleteIndex,this.autocompleteData.length-1)),i>this.autocompleteData.length&&(this.autocompleteIndex=0)},acceptAutocomplete:function(t,i){var s=this;t.preventDefault(),null==i&&(i=this.autocompleteIndex);var n=this.$refs.textarea,a=this.$refs.wrapper,o=this.autocompleteData[i]||this.autocompleteData[0];if(o){var r=o.overlap||0,l=[this.codeData.substr(0,n.selectionEnd-r),o.text,this.codeData.substring(n.selectionEnd)].join(""),h=n.selectionEnd-r+o.text.length+(o.text.endsWith(")")?-1:0);n.selectionStart=n.selectionEnd=h,this._applyEdits({value:l,selectionStart:h,selectionEnd:h});var u=o.text.length-o.overlap;e.nextTick((function(){a.scrollLeft+=8.85*u})),o.text.endsWith(".")?setTimeout((function(){s.updateAutocompleteData()}),1):this.autocompleteOpen=!1}},setLineNumbersHeight:function(){this.lineNumbersHeight=getComputedStyle(this.$refs.pre).height},styleLineNumbers:function(){if(this.lineNumbers&&this.autoStyleLineNumbers){var t=this.$refs.pre,e=this.$el.querySelector(".prism-editor__line-numbers"),i=window.getComputedStyle(t);this.$nextTick((function(){var s="border-top-left-radius",n="border-bottom-left-radius";e&&(e.style[s]=i[s],e.style[n]=i[n],t.style[s]="0",t.style[n]="0",["background-color","margin-top","padding-top","font-family","font-size","line-height"].forEach((function(t){e.style[t]=i[t]})),e.style["margin-bottom"]="-"+i["padding-top"])}))}},_recordCurrentState:function(){var t=this.$refs.textarea;t&&this._recordChange({value:t.value,selectionStart:t.selectionStart,selectionEnd:t.selectionEnd})},_getLines:function(t,e){return t.substring(0,e).split("\n")},_recordStateIfChange:function(){this.history.stack[this.history.offset].value!=this.codeData&&this._recordChange({value:this.codeData,selectionStart:this.codeData.length,selectionEnd:this.codeData.length})},_applyEdits:function(t){var e=this.$refs.textarea,s=this.history.stack[this.history.offset];s&&e&&(this.history.stack[this.history.offset]=i({},s,{selectionStart:e.selectionStart,selectionEnd:e.selectionEnd})),this._recordChange(t),this._updateInput(t)},_recordChange:function(t,e){void 0===e&&(e=!1);var s=this.history,n=s.stack,a=s.offset;if(n.length&&a>-1){this.history.stack=n.slice(0,a+1);var o=this.history.stack.length;if(o>100){var r=o-100;this.history.stack=n.slice(r,o),this.history.offset=Math.max(this.history.offset-r,0)}}var l=Date.now();if(e){var h=this.history.stack[this.history.offset];if(h&&l-h.timestamp<3e3){var u,c,p=/[^a-z0-9]([a-z0-9]+)$/i,d=null===(u=this._getLines(h.value,h.selectionStart).pop())||void 0===u?void 0:u.match(p),f=null===(c=this._getLines(t.value,t.selectionStart).pop())||void 0===c?void 0:c.match(p);if(d&&f&&f[1].startsWith(d[1]))return void(this.history.stack[this.history.offset]=i({},t,{timestamp:l}))}}this.history.stack.push(i({},t,{timestamp:l})),this.history.offset++},_updateInput:function(t){var e=this.$refs.textarea;e&&(e.value=t.value,e.selectionStart=t.selectionStart,e.selectionEnd=t.selectionEnd,this.$emit("input",t.value))},handleChange:function(t){var e=t.target,i=e.value;this._recordChange({value:i,selectionStart:e.selectionStart,selectionEnd:e.selectionEnd},!0),this.$emit("input",i)},_undoEdit:function(){var t=this.history,e=t.offset,i=t.stack[e-1];i&&(this._updateInput(i),this.history.offset=Math.max(e-1,0))},_redoEdit:function(){var t=this.history,e=t.stack,i=t.offset,s=e[i+1];s&&(this._updateInput(s),this.history.offset=Math.min(i+1,e.length-1))},handleKeyDown:function(t){var e=this,i=this.tabSize,o=this.insertSpaces,r=this.ignoreTabKey;if(!this.$listeners.keydown||(this.$emit("keydown",t),!t.defaultPrevented)){if(9===t.keyCode&&this.autocompleteData.length&&this.autocompleteOpen)return this.acceptAutocomplete(t),t.preventDefault(),void t.stopPropagation();if(27===t.keyCode){if(this.autocompleteData.length&&this.autocompleteOpen)return t.preventDefault(),void(this.autocompleteOpen=!1)}else if(38===t.keyCode){if(this.autocompleteData.length&&this.autocompleteOpen)return t.preventDefault(),void(this.autocompleteIndex=(this.autocompleteIndex?this.autocompleteIndex:this.autocompleteData.length)-1)}else if(40===t.keyCode&&this.autocompleteData.length&&this.autocompleteOpen)return t.preventDefault(),void(this.autocompleteIndex=(this.autocompleteIndex+1)%this.autocompleteData.length);27===t.keyCode&&(t.target.blur(),this.$emit("blur",t));var l=t.target,h=l.value,u=l.selectionStart,c=l.selectionEnd,p=(o?" ":"\t").repeat(i);if(9===t.keyCode&&!r&&this.capture)if(t.preventDefault(),t.shiftKey){var d=this._getLines(h,u),f=d.length-1,m=this._getLines(h,c).length-1,y=h.split("\n").map((function(t,e){return e>=f&&e<=m&&t.startsWith(p)?t.substring(p.length):t})).join("\n");h!==y&&this._applyEdits({value:y,selectionStart:d[f].startsWith(p)?u-p.length:u,selectionEnd:c-(h.length-y.length)})}else if(u!==c){var g=this._getLines(h,u),v=g.length-1,b=this._getLines(h,c).length-1,_=g[v];this._applyEdits({value:h.split("\n").map((function(t,e){return e>=v&&e<=b?p+t:t})).join("\n"),selectionStart:/\S/.test(_)?u+p.length:u,selectionEnd:c+p.length*(b-v+1)})}else{var k=u+p.length;this._applyEdits({value:h.substring(0,u)+p+h.substring(c),selectionStart:k,selectionEnd:k})}else if(8===t.keyCode){var D=u!==c;if(h.substring(0,u).endsWith(p)&&!D){t.preventDefault();var x=u-p.length;this._applyEdits({value:h.substring(0,u-p.length)+h.substring(c),selectionStart:x,selectionEnd:x})}}else if(13===t.keyCode){if(this.autocompleteData.length&&this.autocompleteOpen)this.acceptAutocomplete(t);else if(u===c){var C=this._getLines(h,u).pop(),E=null==C?void 0:C.match(/^\s+/);if(E&&E[0]){t.preventDefault();var S="\n"+E[0],$=u+S.length;this._applyEdits({value:h.substring(0,u)+S+h.substring(c),selectionStart:$,selectionEnd:$})}}}else s[t.key]?u!==c&&(t.preventDefault(),this._applyEdits({value:h.substring(0,u)+t.key+h.substring(u,c)+s[t.key]+h.substring(c),selectionStart:u+1,selectionEnd:c+1})):!(a?t.metaKey&&90===t.keyCode:t.ctrlKey&&90===t.keyCode)||t.shiftKey||t.altKey?(a?t.metaKey&&90===t.keyCode&&t.shiftKey:n?t.ctrlKey&&89===t.keyCode:t.ctrlKey&&90===t.keyCode&&t.shiftKey)&&!t.altKey?(t.preventDefault(),this._redoEdit()):77!==t.keyCode||!t.ctrlKey||a&&!t.shiftKey||(t.preventDefault(),this.capture=!this.capture):(t.preventDefault(),this._undoEdit());13!==t.keyCode&&9!==t.keyCode&&setTimeout((function(){e.updateAutocompleteData()}),1)}}},render:function(t){var e=this,i=t("div",{attrs:{class:"prism-editor__line-width-calc",style:"height: 0px; visibility: hidden; pointer-events: none;"}},"999"),s=t("div",{staticClass:"prism-editor__line-numbers",style:{"min-height":this.lineNumbersHeight},attrs:{"aria-hidden":"true"}},[i,Array.from(Array(this.lineNumbersCount).keys()).map((function(e,i){return t("div",{attrs:{class:"prism-editor__line-number token comment"}},""+ ++i)}))]),n=this.autocompleteOpen&&this.autocompleteData.length?t("ul",{staticClass:"prism-editor__autocomplete",style:{left:this.cursorOffset[0]+"px",top:this.cursorOffset[1]+"px"}},this.autocompleteData.map((function(i,s){return t("li",{key:i.text,class:{selected:s==e.autocompleteIndex},on:{mousedown:function(t){e.acceptAutocomplete(t,s)}}},[i.label||i.text])}))):void 0,a=t("textarea",{ref:"textarea",on:{input:this.handleChange,keydown:this.handleKeyDown,click:function(t){e.autocompleteOpen=!1,e.$emit("click",t)},keyup:function(t){e.$emit("keyup",t)},focus:function(t){e._recordStateIfChange(),e.$emit("focus",t)},blur:function(t){e.autocompleteOpen=!1,e.$emit("blur",t)}},staticClass:"prism-editor__textarea",class:{"prism-editor__textarea--empty":this.isEmpty},attrs:{spellCheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off","data-gramm":"false",placeholder:this.placeholder,"data-testid":"textarea",readonly:this.readonly},domProps:{value:this.codeData}}),o=t("pre",{ref:"pre",staticClass:"prism-editor__editor",attrs:{"data-testid":"preview"},domProps:{innerHTML:this.content}}),r=t("div",{staticClass:"prism-editor__container"},[a,o]),l=t("div",{staticClass:"prism-editor-wrapper",ref:"wrapper"},[this.lineNumbers&&s,r]);return t("div",{staticClass:"prism-editor-component"},[l,n])}});exports.PrismEditor=o; +//# sourceMappingURL=prismeditor.cjs.production.min.js.map diff --git a/packages/vue-prism-editor/dist/prismeditor.cjs.production.min.js.map b/packages/vue-prism-editor/dist/prismeditor.cjs.production.min.js.map new file mode 100644 index 0000000..18fabe7 --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.cjs.production.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prismeditor.cjs.production.min.js","sources":["../src/Editor.ts"],"sourcesContent":["import Vue, { VNode } from 'vue';\r\n\r\nimport './styles.css';\r\nconst KEYCODE_ENTER = 13;\r\nconst KEYCODE_TAB = 9;\r\nconst KEYCODE_BACKSPACE = 8;\r\nconst KEYCODE_Y = 89;\r\nconst KEYCODE_Z = 90;\r\nconst KEYCODE_M = 77;\r\nconst KEYCODE_ESCAPE = 27;\r\n\r\nconst BRACKET_PAIRS: {[opening: string]: string} = {\r\n '(':')',\r\n '{':'}',\r\n '[':']',\r\n '\"':'\"',\r\n \"'\":\"'\",\r\n};\r\n\r\nconst HISTORY_LIMIT = 100;\r\nconst HISTORY_TIME_GAP = 3000;\r\n\r\nconst isWindows = 'navigator' in global && /Win/i.test(navigator.platform);\r\nconst isMacLike = 'navigator' in global && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\r\n\r\nexport interface EditorProps {\r\n lineNumbers: boolean;\r\n autoStyleLineNumbers: boolean;\r\n readonly: boolean;\r\n value: string;\r\n highlight: () => string;\r\n tabSize: number;\r\n insertSpaces: boolean;\r\n ignoreTabKey: boolean;\r\n placeholder: string;\r\n}\r\nexport interface Record {\r\n value: string;\r\n selectionStart: number;\r\n selectionEnd: number;\r\n}\r\n\r\nexport interface History {\r\n stack: Array;\r\n offset: number;\r\n}\r\ninterface AutocompleteEntry {\r\n text: string\r\n overlap: number\r\n label?: string\r\n}\r\n\r\nexport const PrismEditor = Vue.extend({\r\n props: {\r\n lineNumbers: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n autoStyleLineNumbers: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n value: {\r\n type: String,\r\n default: '',\r\n },\r\n highlight: {\r\n type: Function,\r\n required: true,\r\n },\r\n tabSize: {\r\n type: Number,\r\n default: 2,\r\n },\r\n insertSpaces: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n ignoreTabKey: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n placeholder: {\r\n type: String,\r\n default: '',\r\n },\r\n autocomplete: {\r\n type: Function,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n capture: true,\r\n history: {\r\n stack: [],\r\n offset: -1,\r\n } as History,\r\n lineNumbersHeight: '20px',\r\n codeData: '',\r\n\r\n autocompleteOpen: false,\r\n autocompleteIndex: 0,\r\n autocompleteData: [] as AutocompleteEntry[]\r\n };\r\n },\r\n watch: {\r\n value: {\r\n immediate: true,\r\n handler(newVal: string): void {\r\n if (!newVal) {\r\n this.codeData = '';\r\n } else {\r\n this.codeData = newVal;\r\n }\r\n },\r\n },\r\n content: {\r\n immediate: true,\r\n handler(): void {\r\n if (this.lineNumbers) {\r\n this.$nextTick(() => {\r\n this.setLineNumbersHeight();\r\n });\r\n }\r\n },\r\n },\r\n lineNumbers(): void {\r\n this.$nextTick(() => {\r\n this.styleLineNumbers();\r\n this.setLineNumbersHeight();\r\n });\r\n },\r\n autocompleteIndex() {\r\n Vue.nextTick(() => {\r\n let node = this.$el.querySelector('ul.prism-editor__autocomplete > li.selected');\r\n if (node) node.scrollIntoView({block: 'nearest'});\r\n })\r\n },\r\n },\r\n computed: {\r\n isEmpty(): boolean {\r\n return this.codeData.length === 0;\r\n },\r\n content(): string {\r\n const result = this.highlight(this.codeData) + '
';\r\n // todo: VNode support?\r\n return result;\r\n },\r\n lineNumbersCount(): number {\r\n const totalLines = this.codeData.split(/\\r\\n|\\n/).length;\r\n return totalLines;\r\n },\r\n cursorOffset() {\r\n let text: string = this.codeData;\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let lines = text.substring(0, input.selectionEnd || 0).split(/\\r\\n|\\n/);\r\n let font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size'));\r\n let line = lines.length;\r\n let column = lines[lines.length-1].length;\r\n return [\r\n Math.min((column * 8.85 * (font_size / 16)) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)),\r\n (line * 24.0 * (font_size / 16)) + 2 - wrapper.scrollTop,\r\n ]\r\n },\r\n },\r\n mounted() {\r\n this._recordCurrentState();\r\n this.styleLineNumbers();\r\n },\r\n\r\n methods: {\r\n updateAutocompleteData() {\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let data: AutocompleteEntry[] = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : [];\r\n let old_length = this.autocompleteData.length;\r\n this.autocompleteData.splice(0, Infinity, ...data);\r\n this.autocompleteOpen = true;\r\n this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length-1));\r\n if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0;\r\n },\r\n acceptAutocomplete(event: Event, option?: number) {\r\n event.preventDefault()\r\n if (option == undefined) option = this.autocompleteIndex;\r\n\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let suggestion = this.autocompleteData[option] || this.autocompleteData[0];\r\n if (!suggestion) return;\r\n \r\n let overlap = suggestion.overlap || 0;\r\n let new_text = [\r\n this.codeData.substr(0, input.selectionEnd - overlap),\r\n suggestion.text,\r\n this.codeData.substring(input.selectionEnd),\r\n ]\r\n let result: string = new_text.join('');\r\n let cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0);\r\n input.selectionStart = input.selectionEnd = cursor_pos;\r\n\r\n this._applyEdits({\r\n value: result,\r\n selectionStart: cursor_pos,\r\n selectionEnd: cursor_pos,\r\n });\r\n let inserted_characters = suggestion.text.length - suggestion.overlap;\r\n Vue.nextTick(() => {\r\n wrapper.scrollLeft += inserted_characters * 8.85;\r\n })\r\n\r\n if (suggestion.text.endsWith('.')) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n } else {\r\n this.autocompleteOpen = false;\r\n }\r\n },\r\n setLineNumbersHeight(): void {\r\n this.lineNumbersHeight = getComputedStyle(this.$refs.pre as HTMLTextAreaElement).height;\r\n },\r\n styleLineNumbers(): void {\r\n if (!this.lineNumbers || !this.autoStyleLineNumbers) return;\r\n\r\n const $editor = this.$refs.pre as HTMLTextAreaElement;\r\n const $lineNumbers: HTMLDivElement | null = this.$el.querySelector('.prism-editor__line-numbers');\r\n const editorStyles = window.getComputedStyle($editor);\r\n\r\n this.$nextTick(() => {\r\n const btlr: any = 'border-top-left-radius';\r\n const bblr: any = 'border-bottom-left-radius';\r\n if (!$lineNumbers) return;\r\n $lineNumbers.style[btlr] = editorStyles[btlr];\r\n $lineNumbers.style[bblr] = editorStyles[bblr];\r\n $editor.style[btlr] = '0';\r\n $editor.style[bblr] = '0';\r\n\r\n const stylesList = ['background-color', 'margin-top', 'padding-top', 'font-family', 'font-size', 'line-height'];\r\n stylesList.forEach((style: any) => {\r\n $lineNumbers.style[style] = editorStyles[style];\r\n });\r\n $lineNumbers.style['margin-bottom' as any] = '-' + editorStyles['padding-top' as any];\r\n });\r\n },\r\n _recordCurrentState(): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n // Save current state of the input\r\n const { value, selectionStart, selectionEnd } = input;\r\n\r\n this._recordChange({\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n });\r\n },\r\n _getLines(text: string, position: number): Array {\r\n return text.substring(0, position).split('\\n');\r\n },\r\n _recordStateIfChange(): void {\r\n if (this.history.stack[this.history.offset].value != this.codeData) {\r\n this._recordChange({\r\n value: this.codeData,\r\n selectionStart: this.codeData.length,\r\n selectionEnd: this.codeData.length,\r\n });\r\n }\r\n },\r\n _applyEdits(record: Record): void {\r\n // Save last selection state\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && input) {\r\n this.history.stack[this.history.offset] = {\r\n ...last,\r\n selectionStart: input.selectionStart,\r\n selectionEnd: input.selectionEnd,\r\n };\r\n }\r\n\r\n // Save the changes\r\n this._recordChange(record);\r\n this._updateInput(record);\r\n },\r\n _recordChange(record: Record, overwrite = false): void {\r\n const { stack, offset } = this.history;\r\n\r\n if (stack.length && offset > -1) {\r\n // When something updates, drop the redo operations\r\n this.history.stack = stack.slice(0, offset + 1);\r\n\r\n // Limit the number of operations to 100\r\n const count = this.history.stack.length;\r\n\r\n if (count > HISTORY_LIMIT) {\r\n const extras = count - HISTORY_LIMIT;\r\n\r\n this.history.stack = stack.slice(extras, count);\r\n this.history.offset = Math.max(this.history.offset - extras, 0);\r\n }\r\n }\r\n\r\n const timestamp = Date.now();\r\n\r\n if (overwrite) {\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) {\r\n // A previous entry exists and was in short interval\r\n\r\n // Match the last word in the line\r\n const re = /[^a-z0-9]([a-z0-9]+)$/i;\r\n\r\n // Get the previous line\r\n const previous = this._getLines(last.value, last.selectionStart).pop()?.match(re);\r\n\r\n // Get the current line\r\n const current = this._getLines(record.value, record.selectionStart).pop()?.match(re);\r\n\r\n if (previous && current && current[1].startsWith(previous[1])) {\r\n // The last word of the previous line and current line match\r\n // Overwrite previous entry so that undo will remove whole word\r\n this.history.stack[this.history.offset] = {\r\n ...record,\r\n timestamp,\r\n };\r\n\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Add the new operation to the stack\r\n this.history.stack.push({ ...record, timestamp });\r\n this.history.offset++;\r\n },\r\n\r\n _updateInput(record: Record): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n\r\n // Update values and selection state\r\n input.value = record.value;\r\n input.selectionStart = record.selectionStart;\r\n input.selectionEnd = record.selectionEnd;\r\n\r\n this.$emit('input', record.value);\r\n // this.props.onValueChange(record.value);\r\n },\r\n handleChange(e: KeyboardEvent): void {\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n this._recordChange(\r\n {\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n },\r\n true\r\n );\r\n this.$emit('input', value);\r\n // this.props.onValueChange(value);\r\n },\r\n _undoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the previous edit\r\n const record = stack[offset - 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.max(offset - 1, 0);\r\n }\r\n },\r\n _redoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the next edit\r\n const record = stack[offset + 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.min(offset + 1, stack.length - 1);\r\n }\r\n },\r\n handleKeyDown(e: KeyboardEvent): void {\r\n // console.log(navigator.platform);\r\n const { tabSize, insertSpaces, ignoreTabKey } = this;\r\n\r\n if (this.$listeners.keydown) {\r\n // onKeyDown(e);\r\n this.$emit('keydown', e);\r\n\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n if (e.keyCode === 27) {\r\n // Escape\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteOpen = false;\r\n return;\r\n }\r\n } else if (e.keyCode === 38) {\r\n // Up\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1;\r\n return;\r\n }\r\n } else if (e.keyCode === 40) {\r\n // Down\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length;\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === KEYCODE_ESCAPE) {\r\n (e.target).blur();\r\n this.$emit('blur', e);\r\n }\r\n\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n const tabCharacter = (insertSpaces ? ' ' : '\\t').repeat(tabSize);\r\n\r\n if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) {\r\n // Prevent focus change\r\n e.preventDefault();\r\n\r\n if (e.shiftKey) {\r\n // Unindent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const nextValue = value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine && line.startsWith(tabCharacter)) {\r\n return line.substring(tabCharacter.length);\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n');\r\n\r\n if (value !== nextValue) {\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: nextValue,\r\n // Move the start cursor if first line in selection was modified\r\n // It was modified only if it started with a tab\r\n selectionStart: startLineText.startsWith(tabCharacter)\r\n ? selectionStart - tabCharacter.length\r\n : selectionStart,\r\n // Move the end cursor by total number of characters removed\r\n selectionEnd: selectionEnd - (value.length - nextValue.length),\r\n });\r\n }\r\n } else if (selectionStart !== selectionEnd) {\r\n // Indent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine) {\r\n return tabCharacter + line;\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n'),\r\n // Move the start cursor by number of characters added in first line of selection\r\n // Don't move it if it there was no text before cursor\r\n selectionStart: /\\S/.test(startLineText) ? selectionStart + tabCharacter.length : selectionStart,\r\n // Move the end cursor by total number of characters added\r\n selectionEnd: selectionEnd + tabCharacter.length * (endLine - startLine + 1),\r\n });\r\n } else {\r\n const updatedSelection = selectionStart + tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Insert tab character at caret\r\n value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_BACKSPACE) {\r\n const hasSelection = selectionStart !== selectionEnd;\r\n const textBeforeCaret = value.substring(0, selectionStart);\r\n\r\n if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) {\r\n // Prevent default delete behaviour\r\n e.preventDefault();\r\n\r\n const updatedSelection = selectionStart - tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Remove tab character at caret\r\n value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_ENTER) {\r\n \r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n\r\n } else if (selectionStart === selectionEnd) {\r\n // Get the current line\r\n const line = this._getLines(value, selectionStart).pop();\r\n const matches = line?.match(/^\\s+/);\r\n\r\n if (matches && matches[0]) {\r\n e.preventDefault();\r\n\r\n // Preserve indentation on inserting a new line\r\n const indent = '\\n' + matches[0];\r\n const updatedSelection = selectionStart + indent.length;\r\n\r\n this._applyEdits({\r\n // Insert indentation character at caret\r\n value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n }\r\n } else if (BRACKET_PAIRS[e.key]) {\r\n // If text is selected, wrap them in the characters\r\n if (selectionStart !== selectionEnd) {\r\n e.preventDefault();\r\n\r\n this._applyEdits({\r\n value:\r\n value.substring(0, selectionStart) +\r\n e.key +\r\n value.substring(selectionStart, selectionEnd) +\r\n BRACKET_PAIRS[e.key] +\r\n value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: selectionStart + 1,\r\n selectionEnd: selectionEnd + 1,\r\n });\r\n }\r\n } else if (\r\n (isMacLike\r\n ? // Trigger undo with ⌘+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z\r\n : // Trigger undo with Ctrl+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z) &&\r\n !e.shiftKey &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._undoEdit();\r\n } else if (\r\n (isMacLike\r\n ? // Trigger redo with ⌘+Shift+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey\r\n : isWindows\r\n ? // Trigger redo with Ctrl+Y on Windows\r\n e.ctrlKey && e.keyCode === KEYCODE_Y\r\n : // Trigger redo with Ctrl+Shift+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._redoEdit();\r\n } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) {\r\n e.preventDefault();\r\n\r\n // Toggle capturing tab key so users can focus away\r\n this.capture = !this.capture;\r\n }\r\n if (e.keyCode !== 13 && e.keyCode !== 9) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n }\r\n },\r\n },\r\n render(h): VNode {\r\n const lineNumberWidthCalculator = h(\r\n 'div',\r\n {\r\n attrs: {\r\n class: 'prism-editor__line-width-calc',\r\n style: 'height: 0px; visibility: hidden; pointer-events: none;',\r\n },\r\n },\r\n '999'\r\n );\r\n const lineNumbers = h(\r\n 'div',\r\n {\r\n staticClass: 'prism-editor__line-numbers',\r\n style: {\r\n 'min-height': this.lineNumbersHeight,\r\n },\r\n attrs: {\r\n 'aria-hidden': 'true',\r\n },\r\n },\r\n [\r\n lineNumberWidthCalculator,\r\n Array.from(Array(this.lineNumbersCount).keys()).map((_, index) => {\r\n return h('div', { attrs: { class: 'prism-editor__line-number token comment' } }, `${++index}`);\r\n }),\r\n ]\r\n );\r\n\r\n const autocompleteList = (this.autocompleteOpen && this.autocompleteData.length) ? h(\r\n 'ul',\r\n {\r\n staticClass: 'prism-editor__autocomplete',\r\n style: {left: this.cursorOffset[0] + 'px', top: this.cursorOffset[1] + 'px'}\r\n },\r\n this.autocompleteData.map((data: AutocompleteEntry, i) => {\r\n return h('li', {\r\n key: data.text,\r\n class: {selected: i == this.autocompleteIndex},\r\n on: {\r\n mousedown: ($event: MouseEvent) => {\r\n this.acceptAutocomplete($event, i);\r\n }\r\n }\r\n }, [data.label || data.text]);\r\n })\r\n ) : undefined;\r\n\r\n const textarea = h('textarea', {\r\n ref: 'textarea',\r\n on: {\r\n input: this.handleChange,\r\n keydown: this.handleKeyDown,\r\n click: ($event: MouseEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('click', $event);\r\n },\r\n keyup: ($event: KeyboardEvent) => {\r\n this.$emit('keyup', $event);\r\n },\r\n focus: ($event: FocusEvent) => {\r\n this._recordStateIfChange();\r\n this.$emit('focus', $event);\r\n },\r\n blur: ($event: FocusEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('blur', $event);\r\n },\r\n },\r\n staticClass: 'prism-editor__textarea',\r\n class: {\r\n 'prism-editor__textarea--empty': this.isEmpty,\r\n },\r\n attrs: {\r\n spellCheck: 'false',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n autocorrect: 'off',\r\n 'data-gramm': 'false',\r\n placeholder: this.placeholder,\r\n 'data-testid': 'textarea',\r\n readonly: this.readonly,\r\n },\r\n domProps: {\r\n value: this.codeData,\r\n },\r\n });\r\n const preview = h('pre', {\r\n ref: 'pre',\r\n staticClass: 'prism-editor__editor',\r\n attrs: {\r\n 'data-testid': 'preview',\r\n },\r\n domProps: {\r\n innerHTML: this.content,\r\n },\r\n });\r\n const editorContainer = h('div', { staticClass: 'prism-editor__container' }, [textarea, preview]);\r\n const wrapper = h('div', { staticClass: 'prism-editor-wrapper', ref: 'wrapper' }, [this.lineNumbers && lineNumbers, editorContainer]);\r\n return h('div', { staticClass: 'prism-editor-component' }, [wrapper, autocompleteList]);\r\n },\r\n});\r\n"],"names":["BRACKET_PAIRS","isWindows","global","test","navigator","platform","isMacLike","PrismEditor","Vue","extend","props","lineNumbers","type","Boolean","autoStyleLineNumbers","readonly","value","String","highlight","Function","required","tabSize","Number","insertSpaces","ignoreTabKey","placeholder","autocomplete","data","capture","history","stack","offset","lineNumbersHeight","codeData","autocompleteOpen","autocompleteIndex","autocompleteData","watch","immediate","handler","newVal","content","this","$nextTick","_this","setLineNumbersHeight","_this2","styleLineNumbers","nextTick","node","_this3","$el","querySelector","scrollIntoView","block","computed","isEmpty","length","lineNumbersCount","split","cursorOffset","input","$refs","textarea","wrapper","lines","substring","selectionEnd","font_size","parseFloat","getComputedStyle","getPropertyValue","line","Math","min","scrollLeft","clientWidth","scrollTop","mounted","_recordCurrentState","methods","updateAutocompleteData","old_length","splice","Infinity","max","acceptAutocomplete","event","option","preventDefault","undefined","suggestion","overlap","result","substr","text","join","cursor_pos","endsWith","selectionStart","_applyEdits","inserted_characters","setTimeout","_this4","pre","height","$editor","$lineNumbers","editorStyles","window","btlr","bblr","style","forEach","_recordChange","_getLines","position","_recordStateIfChange","record","last","_updateInput","overwrite","slice","count","extras","timestamp","Date","now","re","previous","pop","_this$_getLines$pop","match","current","_this$_getLines$pop2","startsWith","push","$emit","handleChange","e","target","_undoEdit","_redoEdit","handleKeyDown","$listeners","keydown","defaultPrevented","keyCode","stopPropagation","blur","tabCharacter","repeat","shiftKey","linesBeforeCaret","startLine","endLine","nextValue","map","i","startLineText","updatedSelection","hasSelection","matches","indent","key","metaKey","ctrlKey","altKey","_this5","render","h","lineNumberWidthCalculator","attrs","staticClass","Array","from","keys","_","index","autocompleteList","left","top","selected","_this6","on","mousedown","$event","label","ref","click","keyup","focus","spellCheck","autocapitalize","autocorrect","domProps","preview","innerHTML","editorContainer"],"mappings":"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"} \ No newline at end of file diff --git a/packages/vue-prism-editor/dist/prismeditor.esm.js b/packages/vue-prism-editor/dist/prismeditor.esm.js new file mode 100644 index 0000000..0f87c75 --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.esm.js @@ -0,0 +1,704 @@ +import Vue from 'vue'; + +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +var KEYCODE_ENTER = 13; +var KEYCODE_TAB = 9; +var KEYCODE_BACKSPACE = 8; +var KEYCODE_Y = 89; +var KEYCODE_Z = 90; +var KEYCODE_M = 77; +var KEYCODE_ESCAPE = 27; +var BRACKET_PAIRS = { + '(': ')', + '{': '}', + '[': ']', + '"': '"', + "'": "'" +}; +var HISTORY_LIMIT = 100; +var HISTORY_TIME_GAP = 3000; +var isWindows = 'navigator' in global && /*#__PURE__*/ /Win/i.test(navigator.platform); +var isMacLike = 'navigator' in global && /*#__PURE__*/ /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform); +var PrismEditor = /*#__PURE__*/Vue.extend({ + props: { + lineNumbers: { + type: Boolean, + "default": false + }, + autoStyleLineNumbers: { + type: Boolean, + "default": true + }, + readonly: { + type: Boolean, + "default": false + }, + value: { + type: String, + "default": '' + }, + highlight: { + type: Function, + required: true + }, + tabSize: { + type: Number, + "default": 2 + }, + insertSpaces: { + type: Boolean, + "default": true + }, + ignoreTabKey: { + type: Boolean, + "default": false + }, + placeholder: { + type: String, + "default": '' + }, + autocomplete: { + type: Function, + "default": function _default() { + return []; + } + } + }, + data: function data() { + return { + capture: true, + history: { + stack: [], + offset: -1 + }, + lineNumbersHeight: '20px', + codeData: '', + autocompleteOpen: false, + autocompleteIndex: 0, + autocompleteData: [] + }; + }, + watch: { + value: { + immediate: true, + handler: function handler(newVal) { + if (!newVal) { + this.codeData = ''; + } else { + this.codeData = newVal; + } + } + }, + content: { + immediate: true, + handler: function handler() { + var _this = this; + + if (this.lineNumbers) { + this.$nextTick(function () { + _this.setLineNumbersHeight(); + }); + } + } + }, + lineNumbers: function lineNumbers() { + var _this2 = this; + + this.$nextTick(function () { + _this2.styleLineNumbers(); + + _this2.setLineNumbersHeight(); + }); + }, + autocompleteIndex: function autocompleteIndex() { + var _this3 = this; + + Vue.nextTick(function () { + var node = _this3.$el.querySelector('ul.prism-editor__autocomplete > li.selected'); + + if (node) node.scrollIntoView({ + block: 'nearest' + }); + }); + } + }, + computed: { + isEmpty: function isEmpty() { + return this.codeData.length === 0; + }, + content: function content() { + var result = this.highlight(this.codeData) + '
'; // todo: VNode support? + + return result; + }, + lineNumbersCount: function lineNumbersCount() { + var totalLines = this.codeData.split(/\r\n|\n/).length; + return totalLines; + }, + cursorOffset: function cursorOffset() { + var text = this.codeData; + var input = this.$refs.textarea; + var wrapper = this.$refs.wrapper; + var lines = text.substring(0, input.selectionEnd || 0).split(/\r\n|\n/); + var font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size')); + var line = lines.length; + var column = lines[lines.length - 1].length; + return [Math.min(column * 8.85 * (font_size / 16) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)), line * 24.0 * (font_size / 16) + 2 - wrapper.scrollTop]; + } + }, + mounted: function mounted() { + this._recordCurrentState(); + + this.styleLineNumbers(); + }, + methods: { + updateAutocompleteData: function updateAutocompleteData() { + var _this$autocompleteDat; + + var input = this.$refs.textarea; + var data = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : []; + var old_length = this.autocompleteData.length; + + (_this$autocompleteDat = this.autocompleteData).splice.apply(_this$autocompleteDat, [0, Infinity].concat(data)); + + this.autocompleteOpen = true; + this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length - 1)); + if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0; + }, + acceptAutocomplete: function acceptAutocomplete(event, option) { + var _this4 = this; + + event.preventDefault(); + if (option == undefined) option = this.autocompleteIndex; + var input = this.$refs.textarea; + var wrapper = this.$refs.wrapper; + var suggestion = this.autocompleteData[option] || this.autocompleteData[0]; + if (!suggestion) return; + var overlap = suggestion.overlap || 0; + var new_text = [this.codeData.substr(0, input.selectionEnd - overlap), suggestion.text, this.codeData.substring(input.selectionEnd)]; + var result = new_text.join(''); + var cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0); + input.selectionStart = input.selectionEnd = cursor_pos; + + this._applyEdits({ + value: result, + selectionStart: cursor_pos, + selectionEnd: cursor_pos + }); + + var inserted_characters = suggestion.text.length - suggestion.overlap; + Vue.nextTick(function () { + wrapper.scrollLeft += inserted_characters * 8.85; + }); + + if (suggestion.text.endsWith('.')) { + setTimeout(function () { + _this4.updateAutocompleteData(); + }, 1); + } else { + this.autocompleteOpen = false; + } + }, + setLineNumbersHeight: function setLineNumbersHeight() { + this.lineNumbersHeight = getComputedStyle(this.$refs.pre).height; + }, + styleLineNumbers: function styleLineNumbers() { + if (!this.lineNumbers || !this.autoStyleLineNumbers) return; + var $editor = this.$refs.pre; + var $lineNumbers = this.$el.querySelector('.prism-editor__line-numbers'); + var editorStyles = window.getComputedStyle($editor); + this.$nextTick(function () { + var btlr = 'border-top-left-radius'; + var bblr = 'border-bottom-left-radius'; + if (!$lineNumbers) return; + $lineNumbers.style[btlr] = editorStyles[btlr]; + $lineNumbers.style[bblr] = editorStyles[bblr]; + $editor.style[btlr] = '0'; + $editor.style[bblr] = '0'; + var stylesList = ['background-color', 'margin-top', 'padding-top', 'font-family', 'font-size', 'line-height']; + stylesList.forEach(function (style) { + $lineNumbers.style[style] = editorStyles[style]; + }); + $lineNumbers.style['margin-bottom'] = '-' + editorStyles['padding-top']; + }); + }, + _recordCurrentState: function _recordCurrentState() { + var input = this.$refs.textarea; + if (!input) return; // Save current state of the input + + var value = input.value, + selectionStart = input.selectionStart, + selectionEnd = input.selectionEnd; + + this._recordChange({ + value: value, + selectionStart: selectionStart, + selectionEnd: selectionEnd + }); + }, + _getLines: function _getLines(text, position) { + return text.substring(0, position).split('\n'); + }, + _recordStateIfChange: function _recordStateIfChange() { + if (this.history.stack[this.history.offset].value != this.codeData) { + this._recordChange({ + value: this.codeData, + selectionStart: this.codeData.length, + selectionEnd: this.codeData.length + }); + } + }, + _applyEdits: function _applyEdits(record) { + // Save last selection state + var input = this.$refs.textarea; + var last = this.history.stack[this.history.offset]; + + if (last && input) { + this.history.stack[this.history.offset] = _extends({}, last, { + selectionStart: input.selectionStart, + selectionEnd: input.selectionEnd + }); + } // Save the changes + + + this._recordChange(record); + + this._updateInput(record); + }, + _recordChange: function _recordChange(record, overwrite) { + if (overwrite === void 0) { + overwrite = false; + } + + var _this$history = this.history, + stack = _this$history.stack, + offset = _this$history.offset; + + if (stack.length && offset > -1) { + // When something updates, drop the redo operations + this.history.stack = stack.slice(0, offset + 1); // Limit the number of operations to 100 + + var count = this.history.stack.length; + + if (count > HISTORY_LIMIT) { + var extras = count - HISTORY_LIMIT; + this.history.stack = stack.slice(extras, count); + this.history.offset = Math.max(this.history.offset - extras, 0); + } + } + + var timestamp = Date.now(); + + if (overwrite) { + var last = this.history.stack[this.history.offset]; + + if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) { + var _this$_getLines$pop, _this$_getLines$pop2; + + // A previous entry exists and was in short interval + // Match the last word in the line + var re = /[^a-z0-9]([a-z0-9]+)$/i; // Get the previous line + + var previous = (_this$_getLines$pop = this._getLines(last.value, last.selectionStart).pop()) === null || _this$_getLines$pop === void 0 ? void 0 : _this$_getLines$pop.match(re); // Get the current line + + var current = (_this$_getLines$pop2 = this._getLines(record.value, record.selectionStart).pop()) === null || _this$_getLines$pop2 === void 0 ? void 0 : _this$_getLines$pop2.match(re); + + if (previous && current && current[1].startsWith(previous[1])) { + // The last word of the previous line and current line match + // Overwrite previous entry so that undo will remove whole word + this.history.stack[this.history.offset] = _extends({}, record, { + timestamp: timestamp + }); + return; + } + } + } // Add the new operation to the stack + + + this.history.stack.push(_extends({}, record, { + timestamp: timestamp + })); + this.history.offset++; + }, + _updateInput: function _updateInput(record) { + var input = this.$refs.textarea; + if (!input) return; // Update values and selection state + + input.value = record.value; + input.selectionStart = record.selectionStart; + input.selectionEnd = record.selectionEnd; + this.$emit('input', record.value); // this.props.onValueChange(record.value); + }, + handleChange: function handleChange(e) { + var _e$target = e.target, + value = _e$target.value, + selectionStart = _e$target.selectionStart, + selectionEnd = _e$target.selectionEnd; + + this._recordChange({ + value: value, + selectionStart: selectionStart, + selectionEnd: selectionEnd + }, true); + + this.$emit('input', value); // this.props.onValueChange(value); + }, + _undoEdit: function _undoEdit() { + var _this$history2 = this.history, + stack = _this$history2.stack, + offset = _this$history2.offset; // Get the previous edit + + var record = stack[offset - 1]; + + if (record) { + // Apply the changes and update the offset + this._updateInput(record); + + this.history.offset = Math.max(offset - 1, 0); + } + }, + _redoEdit: function _redoEdit() { + var _this$history3 = this.history, + stack = _this$history3.stack, + offset = _this$history3.offset; // Get the next edit + + var record = stack[offset + 1]; + + if (record) { + // Apply the changes and update the offset + this._updateInput(record); + + this.history.offset = Math.min(offset + 1, stack.length - 1); + } + }, + handleKeyDown: function handleKeyDown(e) { + var _this5 = this; + + // console.log(navigator.platform); + var tabSize = this.tabSize, + insertSpaces = this.insertSpaces, + ignoreTabKey = this.ignoreTabKey; + + if (this.$listeners.keydown) { + // onKeyDown(e); + this.$emit('keydown', e); + + if (e.defaultPrevented) { + return; + } + } + + if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) { + this.acceptAutocomplete(e); + e.preventDefault(); + e.stopPropagation(); + return; + } + + if (e.keyCode === 27) { + // Escape + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteOpen = false; + return; + } + } else if (e.keyCode === 38) { + // Up + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1; + return; + } + } else if (e.keyCode === 40) { + // Down + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length; + return; + } + } + + if (e.keyCode === KEYCODE_ESCAPE) { + e.target.blur(); + this.$emit('blur', e); + } + + var _e$target2 = e.target, + value = _e$target2.value, + selectionStart = _e$target2.selectionStart, + selectionEnd = _e$target2.selectionEnd; + var tabCharacter = (insertSpaces ? ' ' : '\t').repeat(tabSize); + + if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) { + // Prevent focus change + e.preventDefault(); + + if (e.shiftKey) { + // Unindent selected lines + var linesBeforeCaret = this._getLines(value, selectionStart); + + var startLine = linesBeforeCaret.length - 1; + var endLine = this._getLines(value, selectionEnd).length - 1; + var nextValue = value.split('\n').map(function (line, i) { + if (i >= startLine && i <= endLine && line.startsWith(tabCharacter)) { + return line.substring(tabCharacter.length); + } + + return line; + }).join('\n'); + + if (value !== nextValue) { + var startLineText = linesBeforeCaret[startLine]; + + this._applyEdits({ + value: nextValue, + // Move the start cursor if first line in selection was modified + // It was modified only if it started with a tab + selectionStart: startLineText.startsWith(tabCharacter) ? selectionStart - tabCharacter.length : selectionStart, + // Move the end cursor by total number of characters removed + selectionEnd: selectionEnd - (value.length - nextValue.length) + }); + } + } else if (selectionStart !== selectionEnd) { + // Indent selected lines + var _linesBeforeCaret = this._getLines(value, selectionStart); + + var _startLine = _linesBeforeCaret.length - 1; + + var _endLine = this._getLines(value, selectionEnd).length - 1; + + var _startLineText = _linesBeforeCaret[_startLine]; + + this._applyEdits({ + value: value.split('\n').map(function (line, i) { + if (i >= _startLine && i <= _endLine) { + return tabCharacter + line; + } + + return line; + }).join('\n'), + // Move the start cursor by number of characters added in first line of selection + // Don't move it if it there was no text before cursor + selectionStart: /\S/.test(_startLineText) ? selectionStart + tabCharacter.length : selectionStart, + // Move the end cursor by total number of characters added + selectionEnd: selectionEnd + tabCharacter.length * (_endLine - _startLine + 1) + }); + } else { + var updatedSelection = selectionStart + tabCharacter.length; + + this._applyEdits({ + // Insert tab character at caret + value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd), + // Update caret position + selectionStart: updatedSelection, + selectionEnd: updatedSelection + }); + } + } else if (e.keyCode === KEYCODE_BACKSPACE) { + var hasSelection = selectionStart !== selectionEnd; + var textBeforeCaret = value.substring(0, selectionStart); + + if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) { + // Prevent default delete behaviour + e.preventDefault(); + + var _updatedSelection = selectionStart - tabCharacter.length; + + this._applyEdits({ + // Remove tab character at caret + value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd), + // Update caret position + selectionStart: _updatedSelection, + selectionEnd: _updatedSelection + }); + } + } else if (e.keyCode === KEYCODE_ENTER) { + if (this.autocompleteData.length && this.autocompleteOpen) { + this.acceptAutocomplete(e); + } else if (selectionStart === selectionEnd) { + // Get the current line + var line = this._getLines(value, selectionStart).pop(); + + var matches = line === null || line === void 0 ? void 0 : line.match(/^\s+/); + + if (matches && matches[0]) { + e.preventDefault(); // Preserve indentation on inserting a new line + + var indent = '\n' + matches[0]; + + var _updatedSelection2 = selectionStart + indent.length; + + this._applyEdits({ + // Insert indentation character at caret + value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd), + // Update caret position + selectionStart: _updatedSelection2, + selectionEnd: _updatedSelection2 + }); + } + } + } else if (BRACKET_PAIRS[e.key]) { + // If text is selected, wrap them in the characters + if (selectionStart !== selectionEnd) { + e.preventDefault(); + + this._applyEdits({ + value: value.substring(0, selectionStart) + e.key + value.substring(selectionStart, selectionEnd) + BRACKET_PAIRS[e.key] + value.substring(selectionEnd), + // Update caret position + selectionStart: selectionStart + 1, + selectionEnd: selectionEnd + 1 + }); + } + } else if ((isMacLike ? // Trigger undo with ⌘+Z on Mac + e.metaKey && e.keyCode === KEYCODE_Z : // Trigger undo with Ctrl+Z on other platforms + e.ctrlKey && e.keyCode === KEYCODE_Z) && !e.shiftKey && !e.altKey) { + e.preventDefault(); + + this._undoEdit(); + } else if ((isMacLike ? // Trigger redo with ⌘+Shift+Z on Mac + e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey : isWindows ? // Trigger redo with Ctrl+Y on Windows + e.ctrlKey && e.keyCode === KEYCODE_Y : // Trigger redo with Ctrl+Shift+Z on other platforms + e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) && !e.altKey) { + e.preventDefault(); + + this._redoEdit(); + } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) { + e.preventDefault(); // Toggle capturing tab key so users can focus away + + this.capture = !this.capture; + } + + if (e.keyCode !== 13 && e.keyCode !== 9) { + setTimeout(function () { + _this5.updateAutocompleteData(); + }, 1); + } + } + }, + render: function render(h) { + var _this6 = this; + + var lineNumberWidthCalculator = h('div', { + attrs: { + "class": 'prism-editor__line-width-calc', + style: 'height: 0px; visibility: hidden; pointer-events: none;' + } + }, '999'); + var lineNumbers = h('div', { + staticClass: 'prism-editor__line-numbers', + style: { + 'min-height': this.lineNumbersHeight + }, + attrs: { + 'aria-hidden': 'true' + } + }, [lineNumberWidthCalculator, Array.from(Array(this.lineNumbersCount).keys()).map(function (_, index) { + return h('div', { + attrs: { + "class": 'prism-editor__line-number token comment' + } + }, "" + ++index); + })]); + var autocompleteList = this.autocompleteOpen && this.autocompleteData.length ? h('ul', { + staticClass: 'prism-editor__autocomplete', + style: { + left: this.cursorOffset[0] + 'px', + top: this.cursorOffset[1] + 'px' + } + }, this.autocompleteData.map(function (data, i) { + return h('li', { + key: data.text, + "class": { + selected: i == _this6.autocompleteIndex + }, + on: { + mousedown: function mousedown($event) { + _this6.acceptAutocomplete($event, i); + } + } + }, [data.label || data.text]); + })) : undefined; + var textarea = h('textarea', { + ref: 'textarea', + on: { + input: this.handleChange, + keydown: this.handleKeyDown, + click: function click($event) { + _this6.autocompleteOpen = false; + + _this6.$emit('click', $event); + }, + keyup: function keyup($event) { + _this6.$emit('keyup', $event); + }, + focus: function focus($event) { + _this6._recordStateIfChange(); + + _this6.$emit('focus', $event); + }, + blur: function blur($event) { + _this6.autocompleteOpen = false; + + _this6.$emit('blur', $event); + } + }, + staticClass: 'prism-editor__textarea', + "class": { + 'prism-editor__textarea--empty': this.isEmpty + }, + attrs: { + spellCheck: 'false', + autocapitalize: 'off', + autocomplete: 'off', + autocorrect: 'off', + 'data-gramm': 'false', + placeholder: this.placeholder, + 'data-testid': 'textarea', + readonly: this.readonly + }, + domProps: { + value: this.codeData + } + }); + var preview = h('pre', { + ref: 'pre', + staticClass: 'prism-editor__editor', + attrs: { + 'data-testid': 'preview' + }, + domProps: { + innerHTML: this.content + } + }); + var editorContainer = h('div', { + staticClass: 'prism-editor__container' + }, [textarea, preview]); + var wrapper = h('div', { + staticClass: 'prism-editor-wrapper', + ref: 'wrapper' + }, [this.lineNumbers && lineNumbers, editorContainer]); + return h('div', { + staticClass: 'prism-editor-component' + }, [wrapper, autocompleteList]); + } +}); + +export { PrismEditor }; +//# sourceMappingURL=prismeditor.esm.js.map diff --git a/packages/vue-prism-editor/dist/prismeditor.esm.js.map b/packages/vue-prism-editor/dist/prismeditor.esm.js.map new file mode 100644 index 0000000..8646ae4 --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prismeditor.esm.js","sources":["../src/Editor.ts"],"sourcesContent":["import Vue, { VNode } from 'vue';\r\n\r\nimport './styles.css';\r\nconst KEYCODE_ENTER = 13;\r\nconst KEYCODE_TAB = 9;\r\nconst KEYCODE_BACKSPACE = 8;\r\nconst KEYCODE_Y = 89;\r\nconst KEYCODE_Z = 90;\r\nconst KEYCODE_M = 77;\r\nconst KEYCODE_ESCAPE = 27;\r\n\r\nconst BRACKET_PAIRS: {[opening: string]: string} = {\r\n '(':')',\r\n '{':'}',\r\n '[':']',\r\n '\"':'\"',\r\n \"'\":\"'\",\r\n};\r\n\r\nconst HISTORY_LIMIT = 100;\r\nconst HISTORY_TIME_GAP = 3000;\r\n\r\nconst isWindows = 'navigator' in global && /Win/i.test(navigator.platform);\r\nconst isMacLike = 'navigator' in global && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\r\n\r\nexport interface EditorProps {\r\n lineNumbers: boolean;\r\n autoStyleLineNumbers: boolean;\r\n readonly: boolean;\r\n value: string;\r\n highlight: () => string;\r\n tabSize: number;\r\n insertSpaces: boolean;\r\n ignoreTabKey: boolean;\r\n placeholder: string;\r\n}\r\nexport interface Record {\r\n value: string;\r\n selectionStart: number;\r\n selectionEnd: number;\r\n}\r\n\r\nexport interface History {\r\n stack: Array;\r\n offset: number;\r\n}\r\ninterface AutocompleteEntry {\r\n text: string\r\n overlap: number\r\n label?: string\r\n}\r\n\r\nexport const PrismEditor = Vue.extend({\r\n props: {\r\n lineNumbers: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n autoStyleLineNumbers: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n value: {\r\n type: String,\r\n default: '',\r\n },\r\n highlight: {\r\n type: Function,\r\n required: true,\r\n },\r\n tabSize: {\r\n type: Number,\r\n default: 2,\r\n },\r\n insertSpaces: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n ignoreTabKey: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n placeholder: {\r\n type: String,\r\n default: '',\r\n },\r\n autocomplete: {\r\n type: Function,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n capture: true,\r\n history: {\r\n stack: [],\r\n offset: -1,\r\n } as History,\r\n lineNumbersHeight: '20px',\r\n codeData: '',\r\n\r\n autocompleteOpen: false,\r\n autocompleteIndex: 0,\r\n autocompleteData: [] as AutocompleteEntry[]\r\n };\r\n },\r\n watch: {\r\n value: {\r\n immediate: true,\r\n handler(newVal: string): void {\r\n if (!newVal) {\r\n this.codeData = '';\r\n } else {\r\n this.codeData = newVal;\r\n }\r\n },\r\n },\r\n content: {\r\n immediate: true,\r\n handler(): void {\r\n if (this.lineNumbers) {\r\n this.$nextTick(() => {\r\n this.setLineNumbersHeight();\r\n });\r\n }\r\n },\r\n },\r\n lineNumbers(): void {\r\n this.$nextTick(() => {\r\n this.styleLineNumbers();\r\n this.setLineNumbersHeight();\r\n });\r\n },\r\n autocompleteIndex() {\r\n Vue.nextTick(() => {\r\n let node = this.$el.querySelector('ul.prism-editor__autocomplete > li.selected');\r\n if (node) node.scrollIntoView({block: 'nearest'});\r\n })\r\n },\r\n },\r\n computed: {\r\n isEmpty(): boolean {\r\n return this.codeData.length === 0;\r\n },\r\n content(): string {\r\n const result = this.highlight(this.codeData) + '
';\r\n // todo: VNode support?\r\n return result;\r\n },\r\n lineNumbersCount(): number {\r\n const totalLines = this.codeData.split(/\\r\\n|\\n/).length;\r\n return totalLines;\r\n },\r\n cursorOffset() {\r\n let text: string = this.codeData;\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let lines = text.substring(0, input.selectionEnd || 0).split(/\\r\\n|\\n/);\r\n let font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size'));\r\n let line = lines.length;\r\n let column = lines[lines.length-1].length;\r\n return [\r\n Math.min((column * 8.85 * (font_size / 16)) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)),\r\n (line * 24.0 * (font_size / 16)) + 2 - wrapper.scrollTop,\r\n ]\r\n },\r\n },\r\n mounted() {\r\n this._recordCurrentState();\r\n this.styleLineNumbers();\r\n },\r\n\r\n methods: {\r\n updateAutocompleteData() {\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let data: AutocompleteEntry[] = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : [];\r\n let old_length = this.autocompleteData.length;\r\n this.autocompleteData.splice(0, Infinity, ...data);\r\n this.autocompleteOpen = true;\r\n this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length-1));\r\n if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0;\r\n },\r\n acceptAutocomplete(event: Event, option?: number) {\r\n event.preventDefault()\r\n if (option == undefined) option = this.autocompleteIndex;\r\n\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let suggestion = this.autocompleteData[option] || this.autocompleteData[0];\r\n if (!suggestion) return;\r\n \r\n let overlap = suggestion.overlap || 0;\r\n let new_text = [\r\n this.codeData.substr(0, input.selectionEnd - overlap),\r\n suggestion.text,\r\n this.codeData.substring(input.selectionEnd),\r\n ]\r\n let result: string = new_text.join('');\r\n let cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0);\r\n input.selectionStart = input.selectionEnd = cursor_pos;\r\n\r\n this._applyEdits({\r\n value: result,\r\n selectionStart: cursor_pos,\r\n selectionEnd: cursor_pos,\r\n });\r\n let inserted_characters = suggestion.text.length - suggestion.overlap;\r\n Vue.nextTick(() => {\r\n wrapper.scrollLeft += inserted_characters * 8.85;\r\n })\r\n\r\n if (suggestion.text.endsWith('.')) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n } else {\r\n this.autocompleteOpen = false;\r\n }\r\n },\r\n setLineNumbersHeight(): void {\r\n this.lineNumbersHeight = getComputedStyle(this.$refs.pre as HTMLTextAreaElement).height;\r\n },\r\n styleLineNumbers(): void {\r\n if (!this.lineNumbers || !this.autoStyleLineNumbers) return;\r\n\r\n const $editor = this.$refs.pre as HTMLTextAreaElement;\r\n const $lineNumbers: HTMLDivElement | null = this.$el.querySelector('.prism-editor__line-numbers');\r\n const editorStyles = window.getComputedStyle($editor);\r\n\r\n this.$nextTick(() => {\r\n const btlr: any = 'border-top-left-radius';\r\n const bblr: any = 'border-bottom-left-radius';\r\n if (!$lineNumbers) return;\r\n $lineNumbers.style[btlr] = editorStyles[btlr];\r\n $lineNumbers.style[bblr] = editorStyles[bblr];\r\n $editor.style[btlr] = '0';\r\n $editor.style[bblr] = '0';\r\n\r\n const stylesList = ['background-color', 'margin-top', 'padding-top', 'font-family', 'font-size', 'line-height'];\r\n stylesList.forEach((style: any) => {\r\n $lineNumbers.style[style] = editorStyles[style];\r\n });\r\n $lineNumbers.style['margin-bottom' as any] = '-' + editorStyles['padding-top' as any];\r\n });\r\n },\r\n _recordCurrentState(): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n // Save current state of the input\r\n const { value, selectionStart, selectionEnd } = input;\r\n\r\n this._recordChange({\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n });\r\n },\r\n _getLines(text: string, position: number): Array {\r\n return text.substring(0, position).split('\\n');\r\n },\r\n _recordStateIfChange(): void {\r\n if (this.history.stack[this.history.offset].value != this.codeData) {\r\n this._recordChange({\r\n value: this.codeData,\r\n selectionStart: this.codeData.length,\r\n selectionEnd: this.codeData.length,\r\n });\r\n }\r\n },\r\n _applyEdits(record: Record): void {\r\n // Save last selection state\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && input) {\r\n this.history.stack[this.history.offset] = {\r\n ...last,\r\n selectionStart: input.selectionStart,\r\n selectionEnd: input.selectionEnd,\r\n };\r\n }\r\n\r\n // Save the changes\r\n this._recordChange(record);\r\n this._updateInput(record);\r\n },\r\n _recordChange(record: Record, overwrite = false): void {\r\n const { stack, offset } = this.history;\r\n\r\n if (stack.length && offset > -1) {\r\n // When something updates, drop the redo operations\r\n this.history.stack = stack.slice(0, offset + 1);\r\n\r\n // Limit the number of operations to 100\r\n const count = this.history.stack.length;\r\n\r\n if (count > HISTORY_LIMIT) {\r\n const extras = count - HISTORY_LIMIT;\r\n\r\n this.history.stack = stack.slice(extras, count);\r\n this.history.offset = Math.max(this.history.offset - extras, 0);\r\n }\r\n }\r\n\r\n const timestamp = Date.now();\r\n\r\n if (overwrite) {\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) {\r\n // A previous entry exists and was in short interval\r\n\r\n // Match the last word in the line\r\n const re = /[^a-z0-9]([a-z0-9]+)$/i;\r\n\r\n // Get the previous line\r\n const previous = this._getLines(last.value, last.selectionStart).pop()?.match(re);\r\n\r\n // Get the current line\r\n const current = this._getLines(record.value, record.selectionStart).pop()?.match(re);\r\n\r\n if (previous && current && current[1].startsWith(previous[1])) {\r\n // The last word of the previous line and current line match\r\n // Overwrite previous entry so that undo will remove whole word\r\n this.history.stack[this.history.offset] = {\r\n ...record,\r\n timestamp,\r\n };\r\n\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Add the new operation to the stack\r\n this.history.stack.push({ ...record, timestamp });\r\n this.history.offset++;\r\n },\r\n\r\n _updateInput(record: Record): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n\r\n // Update values and selection state\r\n input.value = record.value;\r\n input.selectionStart = record.selectionStart;\r\n input.selectionEnd = record.selectionEnd;\r\n\r\n this.$emit('input', record.value);\r\n // this.props.onValueChange(record.value);\r\n },\r\n handleChange(e: KeyboardEvent): void {\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n this._recordChange(\r\n {\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n },\r\n true\r\n );\r\n this.$emit('input', value);\r\n // this.props.onValueChange(value);\r\n },\r\n _undoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the previous edit\r\n const record = stack[offset - 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.max(offset - 1, 0);\r\n }\r\n },\r\n _redoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the next edit\r\n const record = stack[offset + 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.min(offset + 1, stack.length - 1);\r\n }\r\n },\r\n handleKeyDown(e: KeyboardEvent): void {\r\n // console.log(navigator.platform);\r\n const { tabSize, insertSpaces, ignoreTabKey } = this;\r\n\r\n if (this.$listeners.keydown) {\r\n // onKeyDown(e);\r\n this.$emit('keydown', e);\r\n\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n if (e.keyCode === 27) {\r\n // Escape\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteOpen = false;\r\n return;\r\n }\r\n } else if (e.keyCode === 38) {\r\n // Up\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1;\r\n return;\r\n }\r\n } else if (e.keyCode === 40) {\r\n // Down\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length;\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === KEYCODE_ESCAPE) {\r\n (e.target).blur();\r\n this.$emit('blur', e);\r\n }\r\n\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n const tabCharacter = (insertSpaces ? ' ' : '\\t').repeat(tabSize);\r\n\r\n if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) {\r\n // Prevent focus change\r\n e.preventDefault();\r\n\r\n if (e.shiftKey) {\r\n // Unindent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const nextValue = value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine && line.startsWith(tabCharacter)) {\r\n return line.substring(tabCharacter.length);\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n');\r\n\r\n if (value !== nextValue) {\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: nextValue,\r\n // Move the start cursor if first line in selection was modified\r\n // It was modified only if it started with a tab\r\n selectionStart: startLineText.startsWith(tabCharacter)\r\n ? selectionStart - tabCharacter.length\r\n : selectionStart,\r\n // Move the end cursor by total number of characters removed\r\n selectionEnd: selectionEnd - (value.length - nextValue.length),\r\n });\r\n }\r\n } else if (selectionStart !== selectionEnd) {\r\n // Indent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine) {\r\n return tabCharacter + line;\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n'),\r\n // Move the start cursor by number of characters added in first line of selection\r\n // Don't move it if it there was no text before cursor\r\n selectionStart: /\\S/.test(startLineText) ? selectionStart + tabCharacter.length : selectionStart,\r\n // Move the end cursor by total number of characters added\r\n selectionEnd: selectionEnd + tabCharacter.length * (endLine - startLine + 1),\r\n });\r\n } else {\r\n const updatedSelection = selectionStart + tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Insert tab character at caret\r\n value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_BACKSPACE) {\r\n const hasSelection = selectionStart !== selectionEnd;\r\n const textBeforeCaret = value.substring(0, selectionStart);\r\n\r\n if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) {\r\n // Prevent default delete behaviour\r\n e.preventDefault();\r\n\r\n const updatedSelection = selectionStart - tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Remove tab character at caret\r\n value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_ENTER) {\r\n \r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n\r\n } else if (selectionStart === selectionEnd) {\r\n // Get the current line\r\n const line = this._getLines(value, selectionStart).pop();\r\n const matches = line?.match(/^\\s+/);\r\n\r\n if (matches && matches[0]) {\r\n e.preventDefault();\r\n\r\n // Preserve indentation on inserting a new line\r\n const indent = '\\n' + matches[0];\r\n const updatedSelection = selectionStart + indent.length;\r\n\r\n this._applyEdits({\r\n // Insert indentation character at caret\r\n value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n }\r\n } else if (BRACKET_PAIRS[e.key]) {\r\n // If text is selected, wrap them in the characters\r\n if (selectionStart !== selectionEnd) {\r\n e.preventDefault();\r\n\r\n this._applyEdits({\r\n value:\r\n value.substring(0, selectionStart) +\r\n e.key +\r\n value.substring(selectionStart, selectionEnd) +\r\n BRACKET_PAIRS[e.key] +\r\n value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: selectionStart + 1,\r\n selectionEnd: selectionEnd + 1,\r\n });\r\n }\r\n } else if (\r\n (isMacLike\r\n ? // Trigger undo with ⌘+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z\r\n : // Trigger undo with Ctrl+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z) &&\r\n !e.shiftKey &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._undoEdit();\r\n } else if (\r\n (isMacLike\r\n ? // Trigger redo with ⌘+Shift+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey\r\n : isWindows\r\n ? // Trigger redo with Ctrl+Y on Windows\r\n e.ctrlKey && e.keyCode === KEYCODE_Y\r\n : // Trigger redo with Ctrl+Shift+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._redoEdit();\r\n } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) {\r\n e.preventDefault();\r\n\r\n // Toggle capturing tab key so users can focus away\r\n this.capture = !this.capture;\r\n }\r\n if (e.keyCode !== 13 && e.keyCode !== 9) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n }\r\n },\r\n },\r\n render(h): VNode {\r\n const lineNumberWidthCalculator = h(\r\n 'div',\r\n {\r\n attrs: {\r\n class: 'prism-editor__line-width-calc',\r\n style: 'height: 0px; visibility: hidden; pointer-events: none;',\r\n },\r\n },\r\n '999'\r\n );\r\n const lineNumbers = h(\r\n 'div',\r\n {\r\n staticClass: 'prism-editor__line-numbers',\r\n style: {\r\n 'min-height': this.lineNumbersHeight,\r\n },\r\n attrs: {\r\n 'aria-hidden': 'true',\r\n },\r\n },\r\n [\r\n lineNumberWidthCalculator,\r\n Array.from(Array(this.lineNumbersCount).keys()).map((_, index) => {\r\n return h('div', { attrs: { class: 'prism-editor__line-number token comment' } }, `${++index}`);\r\n }),\r\n ]\r\n );\r\n\r\n const autocompleteList = (this.autocompleteOpen && this.autocompleteData.length) ? h(\r\n 'ul',\r\n {\r\n staticClass: 'prism-editor__autocomplete',\r\n style: {left: this.cursorOffset[0] + 'px', top: this.cursorOffset[1] + 'px'}\r\n },\r\n this.autocompleteData.map((data: AutocompleteEntry, i) => {\r\n return h('li', {\r\n key: data.text,\r\n class: {selected: i == this.autocompleteIndex},\r\n on: {\r\n mousedown: ($event: MouseEvent) => {\r\n this.acceptAutocomplete($event, i);\r\n }\r\n }\r\n }, [data.label || data.text]);\r\n })\r\n ) : undefined;\r\n\r\n const textarea = h('textarea', {\r\n ref: 'textarea',\r\n on: {\r\n input: this.handleChange,\r\n keydown: this.handleKeyDown,\r\n click: ($event: MouseEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('click', $event);\r\n },\r\n keyup: ($event: KeyboardEvent) => {\r\n this.$emit('keyup', $event);\r\n },\r\n focus: ($event: FocusEvent) => {\r\n this._recordStateIfChange();\r\n this.$emit('focus', $event);\r\n },\r\n blur: ($event: FocusEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('blur', $event);\r\n },\r\n },\r\n staticClass: 'prism-editor__textarea',\r\n class: {\r\n 'prism-editor__textarea--empty': this.isEmpty,\r\n },\r\n attrs: {\r\n spellCheck: 'false',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n autocorrect: 'off',\r\n 'data-gramm': 'false',\r\n placeholder: this.placeholder,\r\n 'data-testid': 'textarea',\r\n readonly: this.readonly,\r\n },\r\n domProps: {\r\n value: this.codeData,\r\n },\r\n });\r\n const preview = h('pre', {\r\n ref: 'pre',\r\n staticClass: 'prism-editor__editor',\r\n attrs: {\r\n 'data-testid': 'preview',\r\n },\r\n domProps: {\r\n innerHTML: this.content,\r\n },\r\n });\r\n const editorContainer = h('div', { staticClass: 'prism-editor__container' }, [textarea, preview]);\r\n const wrapper = h('div', { staticClass: 'prism-editor-wrapper', ref: 'wrapper' }, [this.lineNumbers && lineNumbers, editorContainer]);\r\n return h('div', { staticClass: 'prism-editor-component' }, [wrapper, autocompleteList]);\r\n },\r\n});\r\n"],"names":["KEYCODE_ENTER","KEYCODE_TAB","KEYCODE_BACKSPACE","KEYCODE_Y","KEYCODE_Z","KEYCODE_M","KEYCODE_ESCAPE","BRACKET_PAIRS","HISTORY_LIMIT","HISTORY_TIME_GAP","isWindows","global","test","navigator","platform","isMacLike","PrismEditor","Vue","extend","props","lineNumbers","type","Boolean","autoStyleLineNumbers","readonly","value","String","highlight","Function","required","tabSize","Number","insertSpaces","ignoreTabKey","placeholder","autocomplete","data","capture","history","stack","offset","lineNumbersHeight","codeData","autocompleteOpen","autocompleteIndex","autocompleteData","watch","immediate","handler","newVal","content","$nextTick","setLineNumbersHeight","styleLineNumbers","nextTick","node","$el","querySelector","scrollIntoView","block","computed","isEmpty","length","result","lineNumbersCount","totalLines","split","cursorOffset","text","input","$refs","textarea","wrapper","lines","substring","selectionEnd","font_size","parseFloat","getComputedStyle","getPropertyValue","line","column","Math","min","scrollLeft","clientWidth","scrollTop","mounted","_recordCurrentState","methods","updateAutocompleteData","old_length","splice","Infinity","max","acceptAutocomplete","event","option","preventDefault","undefined","suggestion","overlap","new_text","substr","join","cursor_pos","endsWith","selectionStart","_applyEdits","inserted_characters","setTimeout","pre","height","$editor","$lineNumbers","editorStyles","window","btlr","bblr","style","stylesList","forEach","_recordChange","_getLines","position","_recordStateIfChange","record","last","_updateInput","overwrite","slice","count","extras","timestamp","Date","now","re","previous","pop","match","current","startsWith","push","$emit","handleChange","e","target","_undoEdit","_redoEdit","handleKeyDown","$listeners","keydown","defaultPrevented","keyCode","stopPropagation","blur","tabCharacter","repeat","shiftKey","linesBeforeCaret","startLine","endLine","nextValue","map","i","startLineText","updatedSelection","hasSelection","textBeforeCaret","matches","indent","key","metaKey","ctrlKey","altKey","render","h","lineNumberWidthCalculator","attrs","staticClass","Array","from","keys","_","index","autocompleteList","left","top","selected","on","mousedown","$event","label","ref","click","keyup","focus","spellCheck","autocapitalize","autocorrect","domProps","preview","innerHTML","editorContainer"],"mappings":"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"} \ No newline at end of file diff --git a/packages/vue-prism-editor/dist/prismeditor.min.css b/packages/vue-prism-editor/dist/prismeditor.min.css new file mode 100644 index 0000000..e4c579c --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.min.css @@ -0,0 +1 @@ +.prism-editor-component{align-items:flex-start;display:flex;height:auto;max-height:100%;position:relative;width:100%}.prism-editor-wrapper{display:block;height:100%;overflow:auto;-o-tab-size:1.5em;tab-size:1.5em;-moz-tab-size:1.5em;width:100%}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.prism-editor__textarea{color:transparent!important}.prism-editor__textarea::-moz-selection{background-color:#accef7!important;color:transparent!important}.prism-editor__textarea::selection{background-color:#accef7!important;color:transparent!important}}.prism-editor__autocomplete{max-height:180px;max-width:250px;min-height:12px;min-width:100px;overflow-y:auto;position:absolute;top:25px;width:100%;z-index:4}.prism-editor__autocomplete li{cursor:pointer;overflow:hidden;padding:1px 5px;white-space:nowrap}.prism-editor__container{box-sizing:border-box;min-width:100%;padding:0;position:relative;text-align:left;width:-webkit-max-content;width:-moz-max-content;width:max-content}.prism-editor__line-numbers{flex-shrink:0;height:100%;margin-right:10px;margin-top:0;overflow:hidden;padding-top:4px}.prism-editor__line-number{text-align:right;white-space:nowrap}.prism-editor__textarea{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-text-fill-color:transparent;color:inherit;height:100%;left:0;overflow:hidden;position:absolute;resize:none;top:0;width:100%}.prism-editor__editor,.prism-editor__textarea{text-rendering:inherit;word-wrap:keep-all;background:none;border:0;box-sizing:inherit;display:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-variant-ligatures:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;overflow-wrap:break-word;padding:0;-moz-tab-size:inherit;-o-tab-size:inherit;tab-size:inherit;text-indent:inherit;text-transform:inherit;white-space:pre-wrap}.prism-editor__textarea--empty{-webkit-text-fill-color:inherit!important}.prism-editor__editor{overflow:visible;pointer-events:none;position:relative} \ No newline at end of file diff --git a/packages/vue-prism-editor/dist/prismeditor.umd.development.js b/packages/vue-prism-editor/dist/prismeditor.umd.development.js new file mode 100644 index 0000000..5e92d0c --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.umd.development.js @@ -0,0 +1,726 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) : + typeof define === 'function' && define.amd ? define(['exports', 'vue'], factory) : + (global = global || self, factory(global.PrismEditor = {}, global.Vue)); +}(this, (function (exports, Vue) { 'use strict'; + + var global = typeof self !== undefined ? self : this; + + Vue = Vue && Object.prototype.hasOwnProperty.call(Vue, 'default') ? Vue['default'] : Vue; + + function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); + } + + var KEYCODE_ENTER = 13; + var KEYCODE_TAB = 9; + var KEYCODE_BACKSPACE = 8; + var KEYCODE_Y = 89; + var KEYCODE_Z = 90; + var KEYCODE_M = 77; + var KEYCODE_ESCAPE = 27; + var BRACKET_PAIRS = { + '(': ')', + '{': '}', + '[': ']', + '"': '"', + "'": "'" + }; + var HISTORY_LIMIT = 100; + var HISTORY_TIME_GAP = 3000; + var isWindows = 'navigator' in global && /*#__PURE__*/ /Win/i.test(navigator.platform); + var isMacLike = 'navigator' in global && /*#__PURE__*/ /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform); + var PrismEditor = /*#__PURE__*/Vue.extend({ + props: { + lineNumbers: { + type: Boolean, + "default": false + }, + autoStyleLineNumbers: { + type: Boolean, + "default": true + }, + readonly: { + type: Boolean, + "default": false + }, + value: { + type: String, + "default": '' + }, + highlight: { + type: Function, + required: true + }, + tabSize: { + type: Number, + "default": 2 + }, + insertSpaces: { + type: Boolean, + "default": true + }, + ignoreTabKey: { + type: Boolean, + "default": false + }, + placeholder: { + type: String, + "default": '' + }, + autocomplete: { + type: Function, + "default": function _default() { + return []; + } + } + }, + data: function data() { + return { + capture: true, + history: { + stack: [], + offset: -1 + }, + lineNumbersHeight: '20px', + codeData: '', + autocompleteOpen: false, + autocompleteIndex: 0, + autocompleteData: [] + }; + }, + watch: { + value: { + immediate: true, + handler: function handler(newVal) { + if (!newVal) { + this.codeData = ''; + } else { + this.codeData = newVal; + } + } + }, + content: { + immediate: true, + handler: function handler() { + var _this = this; + + if (this.lineNumbers) { + this.$nextTick(function () { + _this.setLineNumbersHeight(); + }); + } + } + }, + lineNumbers: function lineNumbers() { + var _this2 = this; + + this.$nextTick(function () { + _this2.styleLineNumbers(); + + _this2.setLineNumbersHeight(); + }); + }, + autocompleteIndex: function autocompleteIndex() { + var _this3 = this; + + Vue.nextTick(function () { + var node = _this3.$el.querySelector('ul.prism-editor__autocomplete > li.selected'); + + if (node) node.scrollIntoView({ + block: 'nearest' + }); + }); + } + }, + computed: { + isEmpty: function isEmpty() { + return this.codeData.length === 0; + }, + content: function content() { + var result = this.highlight(this.codeData) + '
'; // todo: VNode support? + + return result; + }, + lineNumbersCount: function lineNumbersCount() { + var totalLines = this.codeData.split(/\r\n|\n/).length; + return totalLines; + }, + cursorOffset: function cursorOffset() { + var text = this.codeData; + var input = this.$refs.textarea; + var wrapper = this.$refs.wrapper; + var lines = text.substring(0, input.selectionEnd || 0).split(/\r\n|\n/); + var font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size')); + var line = lines.length; + var column = lines[lines.length - 1].length; + return [Math.min(column * 8.85 * (font_size / 16) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)), line * 24.0 * (font_size / 16) + 2 - wrapper.scrollTop]; + } + }, + mounted: function mounted() { + this._recordCurrentState(); + + this.styleLineNumbers(); + }, + methods: { + updateAutocompleteData: function updateAutocompleteData() { + var _this$autocompleteDat; + + var input = this.$refs.textarea; + var data = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : []; + var old_length = this.autocompleteData.length; + + (_this$autocompleteDat = this.autocompleteData).splice.apply(_this$autocompleteDat, [0, Infinity].concat(data)); + + this.autocompleteOpen = true; + this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length - 1)); + if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0; + }, + acceptAutocomplete: function acceptAutocomplete(event, option) { + var _this4 = this; + + event.preventDefault(); + if (option == undefined) option = this.autocompleteIndex; + var input = this.$refs.textarea; + var wrapper = this.$refs.wrapper; + var suggestion = this.autocompleteData[option] || this.autocompleteData[0]; + if (!suggestion) return; + var overlap = suggestion.overlap || 0; + var new_text = [this.codeData.substr(0, input.selectionEnd - overlap), suggestion.text, this.codeData.substring(input.selectionEnd)]; + var result = new_text.join(''); + var cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0); + input.selectionStart = input.selectionEnd = cursor_pos; + + this._applyEdits({ + value: result, + selectionStart: cursor_pos, + selectionEnd: cursor_pos + }); + + var inserted_characters = suggestion.text.length - suggestion.overlap; + Vue.nextTick(function () { + wrapper.scrollLeft += inserted_characters * 8.85; + }); + + if (suggestion.text.endsWith('.')) { + setTimeout(function () { + _this4.updateAutocompleteData(); + }, 1); + } else { + this.autocompleteOpen = false; + } + }, + setLineNumbersHeight: function setLineNumbersHeight() { + this.lineNumbersHeight = getComputedStyle(this.$refs.pre).height; + }, + styleLineNumbers: function styleLineNumbers() { + if (!this.lineNumbers || !this.autoStyleLineNumbers) return; + var $editor = this.$refs.pre; + var $lineNumbers = this.$el.querySelector('.prism-editor__line-numbers'); + var editorStyles = window.getComputedStyle($editor); + this.$nextTick(function () { + var btlr = 'border-top-left-radius'; + var bblr = 'border-bottom-left-radius'; + if (!$lineNumbers) return; + $lineNumbers.style[btlr] = editorStyles[btlr]; + $lineNumbers.style[bblr] = editorStyles[bblr]; + $editor.style[btlr] = '0'; + $editor.style[bblr] = '0'; + var stylesList = ['background-color', 'margin-top', 'padding-top', 'font-family', 'font-size', 'line-height']; + stylesList.forEach(function (style) { + $lineNumbers.style[style] = editorStyles[style]; + }); + $lineNumbers.style['margin-bottom'] = '-' + editorStyles['padding-top']; + }); + }, + _recordCurrentState: function _recordCurrentState() { + var input = this.$refs.textarea; + if (!input) return; // Save current state of the input + + var value = input.value, + selectionStart = input.selectionStart, + selectionEnd = input.selectionEnd; + + this._recordChange({ + value: value, + selectionStart: selectionStart, + selectionEnd: selectionEnd + }); + }, + _getLines: function _getLines(text, position) { + return text.substring(0, position).split('\n'); + }, + _recordStateIfChange: function _recordStateIfChange() { + if (this.history.stack[this.history.offset].value != this.codeData) { + this._recordChange({ + value: this.codeData, + selectionStart: this.codeData.length, + selectionEnd: this.codeData.length + }); + } + }, + _applyEdits: function _applyEdits(record) { + // Save last selection state + var input = this.$refs.textarea; + var last = this.history.stack[this.history.offset]; + + if (last && input) { + this.history.stack[this.history.offset] = _extends({}, last, { + selectionStart: input.selectionStart, + selectionEnd: input.selectionEnd + }); + } // Save the changes + + + this._recordChange(record); + + this._updateInput(record); + }, + _recordChange: function _recordChange(record, overwrite) { + if (overwrite === void 0) { + overwrite = false; + } + + var _this$history = this.history, + stack = _this$history.stack, + offset = _this$history.offset; + + if (stack.length && offset > -1) { + // When something updates, drop the redo operations + this.history.stack = stack.slice(0, offset + 1); // Limit the number of operations to 100 + + var count = this.history.stack.length; + + if (count > HISTORY_LIMIT) { + var extras = count - HISTORY_LIMIT; + this.history.stack = stack.slice(extras, count); + this.history.offset = Math.max(this.history.offset - extras, 0); + } + } + + var timestamp = Date.now(); + + if (overwrite) { + var last = this.history.stack[this.history.offset]; + + if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) { + var _this$_getLines$pop, _this$_getLines$pop2; + + // A previous entry exists and was in short interval + // Match the last word in the line + var re = /[^a-z0-9]([a-z0-9]+)$/i; // Get the previous line + + var previous = (_this$_getLines$pop = this._getLines(last.value, last.selectionStart).pop()) === null || _this$_getLines$pop === void 0 ? void 0 : _this$_getLines$pop.match(re); // Get the current line + + var current = (_this$_getLines$pop2 = this._getLines(record.value, record.selectionStart).pop()) === null || _this$_getLines$pop2 === void 0 ? void 0 : _this$_getLines$pop2.match(re); + + if (previous && current && current[1].startsWith(previous[1])) { + // The last word of the previous line and current line match + // Overwrite previous entry so that undo will remove whole word + this.history.stack[this.history.offset] = _extends({}, record, { + timestamp: timestamp + }); + return; + } + } + } // Add the new operation to the stack + + + this.history.stack.push(_extends({}, record, { + timestamp: timestamp + })); + this.history.offset++; + }, + _updateInput: function _updateInput(record) { + var input = this.$refs.textarea; + if (!input) return; // Update values and selection state + + input.value = record.value; + input.selectionStart = record.selectionStart; + input.selectionEnd = record.selectionEnd; + this.$emit('input', record.value); // this.props.onValueChange(record.value); + }, + handleChange: function handleChange(e) { + var _e$target = e.target, + value = _e$target.value, + selectionStart = _e$target.selectionStart, + selectionEnd = _e$target.selectionEnd; + + this._recordChange({ + value: value, + selectionStart: selectionStart, + selectionEnd: selectionEnd + }, true); + + this.$emit('input', value); // this.props.onValueChange(value); + }, + _undoEdit: function _undoEdit() { + var _this$history2 = this.history, + stack = _this$history2.stack, + offset = _this$history2.offset; // Get the previous edit + + var record = stack[offset - 1]; + + if (record) { + // Apply the changes and update the offset + this._updateInput(record); + + this.history.offset = Math.max(offset - 1, 0); + } + }, + _redoEdit: function _redoEdit() { + var _this$history3 = this.history, + stack = _this$history3.stack, + offset = _this$history3.offset; // Get the next edit + + var record = stack[offset + 1]; + + if (record) { + // Apply the changes and update the offset + this._updateInput(record); + + this.history.offset = Math.min(offset + 1, stack.length - 1); + } + }, + handleKeyDown: function handleKeyDown(e) { + var _this5 = this; + + // console.log(navigator.platform); + var tabSize = this.tabSize, + insertSpaces = this.insertSpaces, + ignoreTabKey = this.ignoreTabKey; + + if (this.$listeners.keydown) { + // onKeyDown(e); + this.$emit('keydown', e); + + if (e.defaultPrevented) { + return; + } + } + + if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) { + this.acceptAutocomplete(e); + e.preventDefault(); + e.stopPropagation(); + return; + } + + if (e.keyCode === 27) { + // Escape + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteOpen = false; + return; + } + } else if (e.keyCode === 38) { + // Up + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1; + return; + } + } else if (e.keyCode === 40) { + // Down + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length; + return; + } + } + + if (e.keyCode === KEYCODE_ESCAPE) { + e.target.blur(); + this.$emit('blur', e); + } + + var _e$target2 = e.target, + value = _e$target2.value, + selectionStart = _e$target2.selectionStart, + selectionEnd = _e$target2.selectionEnd; + var tabCharacter = (insertSpaces ? ' ' : '\t').repeat(tabSize); + + if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) { + // Prevent focus change + e.preventDefault(); + + if (e.shiftKey) { + // Unindent selected lines + var linesBeforeCaret = this._getLines(value, selectionStart); + + var startLine = linesBeforeCaret.length - 1; + var endLine = this._getLines(value, selectionEnd).length - 1; + var nextValue = value.split('\n').map(function (line, i) { + if (i >= startLine && i <= endLine && line.startsWith(tabCharacter)) { + return line.substring(tabCharacter.length); + } + + return line; + }).join('\n'); + + if (value !== nextValue) { + var startLineText = linesBeforeCaret[startLine]; + + this._applyEdits({ + value: nextValue, + // Move the start cursor if first line in selection was modified + // It was modified only if it started with a tab + selectionStart: startLineText.startsWith(tabCharacter) ? selectionStart - tabCharacter.length : selectionStart, + // Move the end cursor by total number of characters removed + selectionEnd: selectionEnd - (value.length - nextValue.length) + }); + } + } else if (selectionStart !== selectionEnd) { + // Indent selected lines + var _linesBeforeCaret = this._getLines(value, selectionStart); + + var _startLine = _linesBeforeCaret.length - 1; + + var _endLine = this._getLines(value, selectionEnd).length - 1; + + var _startLineText = _linesBeforeCaret[_startLine]; + + this._applyEdits({ + value: value.split('\n').map(function (line, i) { + if (i >= _startLine && i <= _endLine) { + return tabCharacter + line; + } + + return line; + }).join('\n'), + // Move the start cursor by number of characters added in first line of selection + // Don't move it if it there was no text before cursor + selectionStart: /\S/.test(_startLineText) ? selectionStart + tabCharacter.length : selectionStart, + // Move the end cursor by total number of characters added + selectionEnd: selectionEnd + tabCharacter.length * (_endLine - _startLine + 1) + }); + } else { + var updatedSelection = selectionStart + tabCharacter.length; + + this._applyEdits({ + // Insert tab character at caret + value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd), + // Update caret position + selectionStart: updatedSelection, + selectionEnd: updatedSelection + }); + } + } else if (e.keyCode === KEYCODE_BACKSPACE) { + var hasSelection = selectionStart !== selectionEnd; + var textBeforeCaret = value.substring(0, selectionStart); + + if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) { + // Prevent default delete behaviour + e.preventDefault(); + + var _updatedSelection = selectionStart - tabCharacter.length; + + this._applyEdits({ + // Remove tab character at caret + value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd), + // Update caret position + selectionStart: _updatedSelection, + selectionEnd: _updatedSelection + }); + } + } else if (e.keyCode === KEYCODE_ENTER) { + if (this.autocompleteData.length && this.autocompleteOpen) { + this.acceptAutocomplete(e); + } else if (selectionStart === selectionEnd) { + // Get the current line + var line = this._getLines(value, selectionStart).pop(); + + var matches = line === null || line === void 0 ? void 0 : line.match(/^\s+/); + + if (matches && matches[0]) { + e.preventDefault(); // Preserve indentation on inserting a new line + + var indent = '\n' + matches[0]; + + var _updatedSelection2 = selectionStart + indent.length; + + this._applyEdits({ + // Insert indentation character at caret + value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd), + // Update caret position + selectionStart: _updatedSelection2, + selectionEnd: _updatedSelection2 + }); + } + } + } else if (BRACKET_PAIRS[e.key]) { + // If text is selected, wrap them in the characters + if (selectionStart !== selectionEnd) { + e.preventDefault(); + + this._applyEdits({ + value: value.substring(0, selectionStart) + e.key + value.substring(selectionStart, selectionEnd) + BRACKET_PAIRS[e.key] + value.substring(selectionEnd), + // Update caret position + selectionStart: selectionStart + 1, + selectionEnd: selectionEnd + 1 + }); + } + } else if ((isMacLike ? // Trigger undo with ⌘+Z on Mac + e.metaKey && e.keyCode === KEYCODE_Z : // Trigger undo with Ctrl+Z on other platforms + e.ctrlKey && e.keyCode === KEYCODE_Z) && !e.shiftKey && !e.altKey) { + e.preventDefault(); + + this._undoEdit(); + } else if ((isMacLike ? // Trigger redo with ⌘+Shift+Z on Mac + e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey : isWindows ? // Trigger redo with Ctrl+Y on Windows + e.ctrlKey && e.keyCode === KEYCODE_Y : // Trigger redo with Ctrl+Shift+Z on other platforms + e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) && !e.altKey) { + e.preventDefault(); + + this._redoEdit(); + } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) { + e.preventDefault(); // Toggle capturing tab key so users can focus away + + this.capture = !this.capture; + } + + if (e.keyCode !== 13 && e.keyCode !== 9) { + setTimeout(function () { + _this5.updateAutocompleteData(); + }, 1); + } + } + }, + render: function render(h) { + var _this6 = this; + + var lineNumberWidthCalculator = h('div', { + attrs: { + "class": 'prism-editor__line-width-calc', + style: 'height: 0px; visibility: hidden; pointer-events: none;' + } + }, '999'); + var lineNumbers = h('div', { + staticClass: 'prism-editor__line-numbers', + style: { + 'min-height': this.lineNumbersHeight + }, + attrs: { + 'aria-hidden': 'true' + } + }, [lineNumberWidthCalculator, Array.from(Array(this.lineNumbersCount).keys()).map(function (_, index) { + return h('div', { + attrs: { + "class": 'prism-editor__line-number token comment' + } + }, "" + ++index); + })]); + var autocompleteList = this.autocompleteOpen && this.autocompleteData.length ? h('ul', { + staticClass: 'prism-editor__autocomplete', + style: { + left: this.cursorOffset[0] + 'px', + top: this.cursorOffset[1] + 'px' + } + }, this.autocompleteData.map(function (data, i) { + return h('li', { + key: data.text, + "class": { + selected: i == _this6.autocompleteIndex + }, + on: { + mousedown: function mousedown($event) { + _this6.acceptAutocomplete($event, i); + } + } + }, [data.label || data.text]); + })) : undefined; + var textarea = h('textarea', { + ref: 'textarea', + on: { + input: this.handleChange, + keydown: this.handleKeyDown, + click: function click($event) { + _this6.autocompleteOpen = false; + + _this6.$emit('click', $event); + }, + keyup: function keyup($event) { + _this6.$emit('keyup', $event); + }, + focus: function focus($event) { + _this6._recordStateIfChange(); + + _this6.$emit('focus', $event); + }, + blur: function blur($event) { + _this6.autocompleteOpen = false; + + _this6.$emit('blur', $event); + } + }, + staticClass: 'prism-editor__textarea', + "class": { + 'prism-editor__textarea--empty': this.isEmpty + }, + attrs: { + spellCheck: 'false', + autocapitalize: 'off', + autocomplete: 'off', + autocorrect: 'off', + 'data-gramm': 'false', + placeholder: this.placeholder, + 'data-testid': 'textarea', + readonly: this.readonly + }, + domProps: { + value: this.codeData + } + }); + var preview = h('pre', { + ref: 'pre', + staticClass: 'prism-editor__editor', + attrs: { + 'data-testid': 'preview' + }, + domProps: { + innerHTML: this.content + } + }); + var editorContainer = h('div', { + staticClass: 'prism-editor__container' + }, [textarea, preview]); + var wrapper = h('div', { + staticClass: 'prism-editor-wrapper', + ref: 'wrapper' + }, [this.lineNumbers && lineNumbers, editorContainer]); + return h('div', { + staticClass: 'prism-editor-component' + }, [wrapper, autocompleteList]); + } + }); + + exports.PrismEditor = PrismEditor; + + Object.defineProperty(exports, '__esModule', { value: true }); + + let GlobalVue = null + if (typeof window !== 'undefined') { + GlobalVue = window.Vue + } else if (typeof global !== 'undefined') { + GlobalVue = global.Vue + } + if (GlobalVue) { + GlobalVue.component("PrismEditor", PrismEditor) + } + +}))); +//# sourceMappingURL=prismeditor.umd.development.js.map diff --git a/packages/vue-prism-editor/dist/prismeditor.umd.development.js.map b/packages/vue-prism-editor/dist/prismeditor.umd.development.js.map new file mode 100644 index 0000000..aa40f79 --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.umd.development.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prismeditor.umd.development.js","sources":["../src/Editor.ts"],"sourcesContent":["import Vue, { VNode } from 'vue';\r\n\r\nimport './styles.css';\r\nconst KEYCODE_ENTER = 13;\r\nconst KEYCODE_TAB = 9;\r\nconst KEYCODE_BACKSPACE = 8;\r\nconst KEYCODE_Y = 89;\r\nconst KEYCODE_Z = 90;\r\nconst KEYCODE_M = 77;\r\nconst KEYCODE_ESCAPE = 27;\r\n\r\nconst BRACKET_PAIRS: {[opening: string]: string} = {\r\n '(':')',\r\n '{':'}',\r\n '[':']',\r\n '\"':'\"',\r\n \"'\":\"'\",\r\n};\r\n\r\nconst HISTORY_LIMIT = 100;\r\nconst HISTORY_TIME_GAP = 3000;\r\n\r\nconst isWindows = 'navigator' in global && /Win/i.test(navigator.platform);\r\nconst isMacLike = 'navigator' in global && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\r\n\r\nexport interface EditorProps {\r\n lineNumbers: boolean;\r\n autoStyleLineNumbers: boolean;\r\n readonly: boolean;\r\n value: string;\r\n highlight: () => string;\r\n tabSize: number;\r\n insertSpaces: boolean;\r\n ignoreTabKey: boolean;\r\n placeholder: string;\r\n}\r\nexport interface Record {\r\n value: string;\r\n selectionStart: number;\r\n selectionEnd: number;\r\n}\r\n\r\nexport interface History {\r\n stack: Array;\r\n offset: number;\r\n}\r\ninterface AutocompleteEntry {\r\n text: string\r\n overlap: number\r\n label?: string\r\n}\r\n\r\nexport const PrismEditor = Vue.extend({\r\n props: {\r\n lineNumbers: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n autoStyleLineNumbers: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n value: {\r\n type: String,\r\n default: '',\r\n },\r\n highlight: {\r\n type: Function,\r\n required: true,\r\n },\r\n tabSize: {\r\n type: Number,\r\n default: 2,\r\n },\r\n insertSpaces: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n ignoreTabKey: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n placeholder: {\r\n type: String,\r\n default: '',\r\n },\r\n autocomplete: {\r\n type: Function,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n capture: true,\r\n history: {\r\n stack: [],\r\n offset: -1,\r\n } as History,\r\n lineNumbersHeight: '20px',\r\n codeData: '',\r\n\r\n autocompleteOpen: false,\r\n autocompleteIndex: 0,\r\n autocompleteData: [] as AutocompleteEntry[]\r\n };\r\n },\r\n watch: {\r\n value: {\r\n immediate: true,\r\n handler(newVal: string): void {\r\n if (!newVal) {\r\n this.codeData = '';\r\n } else {\r\n this.codeData = newVal;\r\n }\r\n },\r\n },\r\n content: {\r\n immediate: true,\r\n handler(): void {\r\n if (this.lineNumbers) {\r\n this.$nextTick(() => {\r\n this.setLineNumbersHeight();\r\n });\r\n }\r\n },\r\n },\r\n lineNumbers(): void {\r\n this.$nextTick(() => {\r\n this.styleLineNumbers();\r\n this.setLineNumbersHeight();\r\n });\r\n },\r\n autocompleteIndex() {\r\n Vue.nextTick(() => {\r\n let node = this.$el.querySelector('ul.prism-editor__autocomplete > li.selected');\r\n if (node) node.scrollIntoView({block: 'nearest'});\r\n })\r\n },\r\n },\r\n computed: {\r\n isEmpty(): boolean {\r\n return this.codeData.length === 0;\r\n },\r\n content(): string {\r\n const result = this.highlight(this.codeData) + '
';\r\n // todo: VNode support?\r\n return result;\r\n },\r\n lineNumbersCount(): number {\r\n const totalLines = this.codeData.split(/\\r\\n|\\n/).length;\r\n return totalLines;\r\n },\r\n cursorOffset() {\r\n let text: string = this.codeData;\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let lines = text.substring(0, input.selectionEnd || 0).split(/\\r\\n|\\n/);\r\n let font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size'));\r\n let line = lines.length;\r\n let column = lines[lines.length-1].length;\r\n return [\r\n Math.min((column * 8.85 * (font_size / 16)) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)),\r\n (line * 24.0 * (font_size / 16)) + 2 - wrapper.scrollTop,\r\n ]\r\n },\r\n },\r\n mounted() {\r\n this._recordCurrentState();\r\n this.styleLineNumbers();\r\n },\r\n\r\n methods: {\r\n updateAutocompleteData() {\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let data: AutocompleteEntry[] = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : [];\r\n let old_length = this.autocompleteData.length;\r\n this.autocompleteData.splice(0, Infinity, ...data);\r\n this.autocompleteOpen = true;\r\n this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length-1));\r\n if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0;\r\n },\r\n acceptAutocomplete(event: Event, option?: number) {\r\n event.preventDefault()\r\n if (option == undefined) option = this.autocompleteIndex;\r\n\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let suggestion = this.autocompleteData[option] || this.autocompleteData[0];\r\n if (!suggestion) return;\r\n \r\n let overlap = suggestion.overlap || 0;\r\n let new_text = [\r\n this.codeData.substr(0, input.selectionEnd - overlap),\r\n suggestion.text,\r\n this.codeData.substring(input.selectionEnd),\r\n ]\r\n let result: string = new_text.join('');\r\n let cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0);\r\n input.selectionStart = input.selectionEnd = cursor_pos;\r\n\r\n this._applyEdits({\r\n value: result,\r\n selectionStart: cursor_pos,\r\n selectionEnd: cursor_pos,\r\n });\r\n let inserted_characters = suggestion.text.length - suggestion.overlap;\r\n Vue.nextTick(() => {\r\n wrapper.scrollLeft += inserted_characters * 8.85;\r\n })\r\n\r\n if (suggestion.text.endsWith('.')) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n } else {\r\n this.autocompleteOpen = false;\r\n }\r\n },\r\n setLineNumbersHeight(): void {\r\n this.lineNumbersHeight = getComputedStyle(this.$refs.pre as HTMLTextAreaElement).height;\r\n },\r\n styleLineNumbers(): void {\r\n if (!this.lineNumbers || !this.autoStyleLineNumbers) return;\r\n\r\n const $editor = this.$refs.pre as HTMLTextAreaElement;\r\n const $lineNumbers: HTMLDivElement | null = this.$el.querySelector('.prism-editor__line-numbers');\r\n const editorStyles = window.getComputedStyle($editor);\r\n\r\n this.$nextTick(() => {\r\n const btlr: any = 'border-top-left-radius';\r\n const bblr: any = 'border-bottom-left-radius';\r\n if (!$lineNumbers) return;\r\n $lineNumbers.style[btlr] = editorStyles[btlr];\r\n $lineNumbers.style[bblr] = editorStyles[bblr];\r\n $editor.style[btlr] = '0';\r\n $editor.style[bblr] = '0';\r\n\r\n const stylesList = ['background-color', 'margin-top', 'padding-top', 'font-family', 'font-size', 'line-height'];\r\n stylesList.forEach((style: any) => {\r\n $lineNumbers.style[style] = editorStyles[style];\r\n });\r\n $lineNumbers.style['margin-bottom' as any] = '-' + editorStyles['padding-top' as any];\r\n });\r\n },\r\n _recordCurrentState(): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n // Save current state of the input\r\n const { value, selectionStart, selectionEnd } = input;\r\n\r\n this._recordChange({\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n });\r\n },\r\n _getLines(text: string, position: number): Array {\r\n return text.substring(0, position).split('\\n');\r\n },\r\n _recordStateIfChange(): void {\r\n if (this.history.stack[this.history.offset].value != this.codeData) {\r\n this._recordChange({\r\n value: this.codeData,\r\n selectionStart: this.codeData.length,\r\n selectionEnd: this.codeData.length,\r\n });\r\n }\r\n },\r\n _applyEdits(record: Record): void {\r\n // Save last selection state\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && input) {\r\n this.history.stack[this.history.offset] = {\r\n ...last,\r\n selectionStart: input.selectionStart,\r\n selectionEnd: input.selectionEnd,\r\n };\r\n }\r\n\r\n // Save the changes\r\n this._recordChange(record);\r\n this._updateInput(record);\r\n },\r\n _recordChange(record: Record, overwrite = false): void {\r\n const { stack, offset } = this.history;\r\n\r\n if (stack.length && offset > -1) {\r\n // When something updates, drop the redo operations\r\n this.history.stack = stack.slice(0, offset + 1);\r\n\r\n // Limit the number of operations to 100\r\n const count = this.history.stack.length;\r\n\r\n if (count > HISTORY_LIMIT) {\r\n const extras = count - HISTORY_LIMIT;\r\n\r\n this.history.stack = stack.slice(extras, count);\r\n this.history.offset = Math.max(this.history.offset - extras, 0);\r\n }\r\n }\r\n\r\n const timestamp = Date.now();\r\n\r\n if (overwrite) {\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) {\r\n // A previous entry exists and was in short interval\r\n\r\n // Match the last word in the line\r\n const re = /[^a-z0-9]([a-z0-9]+)$/i;\r\n\r\n // Get the previous line\r\n const previous = this._getLines(last.value, last.selectionStart).pop()?.match(re);\r\n\r\n // Get the current line\r\n const current = this._getLines(record.value, record.selectionStart).pop()?.match(re);\r\n\r\n if (previous && current && current[1].startsWith(previous[1])) {\r\n // The last word of the previous line and current line match\r\n // Overwrite previous entry so that undo will remove whole word\r\n this.history.stack[this.history.offset] = {\r\n ...record,\r\n timestamp,\r\n };\r\n\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Add the new operation to the stack\r\n this.history.stack.push({ ...record, timestamp });\r\n this.history.offset++;\r\n },\r\n\r\n _updateInput(record: Record): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n\r\n // Update values and selection state\r\n input.value = record.value;\r\n input.selectionStart = record.selectionStart;\r\n input.selectionEnd = record.selectionEnd;\r\n\r\n this.$emit('input', record.value);\r\n // this.props.onValueChange(record.value);\r\n },\r\n handleChange(e: KeyboardEvent): void {\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n this._recordChange(\r\n {\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n },\r\n true\r\n );\r\n this.$emit('input', value);\r\n // this.props.onValueChange(value);\r\n },\r\n _undoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the previous edit\r\n const record = stack[offset - 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.max(offset - 1, 0);\r\n }\r\n },\r\n _redoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the next edit\r\n const record = stack[offset + 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.min(offset + 1, stack.length - 1);\r\n }\r\n },\r\n handleKeyDown(e: KeyboardEvent): void {\r\n // console.log(navigator.platform);\r\n const { tabSize, insertSpaces, ignoreTabKey } = this;\r\n\r\n if (this.$listeners.keydown) {\r\n // onKeyDown(e);\r\n this.$emit('keydown', e);\r\n\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n if (e.keyCode === 27) {\r\n // Escape\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteOpen = false;\r\n return;\r\n }\r\n } else if (e.keyCode === 38) {\r\n // Up\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1;\r\n return;\r\n }\r\n } else if (e.keyCode === 40) {\r\n // Down\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length;\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === KEYCODE_ESCAPE) {\r\n (e.target).blur();\r\n this.$emit('blur', e);\r\n }\r\n\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n const tabCharacter = (insertSpaces ? ' ' : '\\t').repeat(tabSize);\r\n\r\n if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) {\r\n // Prevent focus change\r\n e.preventDefault();\r\n\r\n if (e.shiftKey) {\r\n // Unindent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const nextValue = value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine && line.startsWith(tabCharacter)) {\r\n return line.substring(tabCharacter.length);\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n');\r\n\r\n if (value !== nextValue) {\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: nextValue,\r\n // Move the start cursor if first line in selection was modified\r\n // It was modified only if it started with a tab\r\n selectionStart: startLineText.startsWith(tabCharacter)\r\n ? selectionStart - tabCharacter.length\r\n : selectionStart,\r\n // Move the end cursor by total number of characters removed\r\n selectionEnd: selectionEnd - (value.length - nextValue.length),\r\n });\r\n }\r\n } else if (selectionStart !== selectionEnd) {\r\n // Indent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine) {\r\n return tabCharacter + line;\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n'),\r\n // Move the start cursor by number of characters added in first line of selection\r\n // Don't move it if it there was no text before cursor\r\n selectionStart: /\\S/.test(startLineText) ? selectionStart + tabCharacter.length : selectionStart,\r\n // Move the end cursor by total number of characters added\r\n selectionEnd: selectionEnd + tabCharacter.length * (endLine - startLine + 1),\r\n });\r\n } else {\r\n const updatedSelection = selectionStart + tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Insert tab character at caret\r\n value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_BACKSPACE) {\r\n const hasSelection = selectionStart !== selectionEnd;\r\n const textBeforeCaret = value.substring(0, selectionStart);\r\n\r\n if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) {\r\n // Prevent default delete behaviour\r\n e.preventDefault();\r\n\r\n const updatedSelection = selectionStart - tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Remove tab character at caret\r\n value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_ENTER) {\r\n \r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n\r\n } else if (selectionStart === selectionEnd) {\r\n // Get the current line\r\n const line = this._getLines(value, selectionStart).pop();\r\n const matches = line?.match(/^\\s+/);\r\n\r\n if (matches && matches[0]) {\r\n e.preventDefault();\r\n\r\n // Preserve indentation on inserting a new line\r\n const indent = '\\n' + matches[0];\r\n const updatedSelection = selectionStart + indent.length;\r\n\r\n this._applyEdits({\r\n // Insert indentation character at caret\r\n value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n }\r\n } else if (BRACKET_PAIRS[e.key]) {\r\n // If text is selected, wrap them in the characters\r\n if (selectionStart !== selectionEnd) {\r\n e.preventDefault();\r\n\r\n this._applyEdits({\r\n value:\r\n value.substring(0, selectionStart) +\r\n e.key +\r\n value.substring(selectionStart, selectionEnd) +\r\n BRACKET_PAIRS[e.key] +\r\n value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: selectionStart + 1,\r\n selectionEnd: selectionEnd + 1,\r\n });\r\n }\r\n } else if (\r\n (isMacLike\r\n ? // Trigger undo with ⌘+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z\r\n : // Trigger undo with Ctrl+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z) &&\r\n !e.shiftKey &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._undoEdit();\r\n } else if (\r\n (isMacLike\r\n ? // Trigger redo with ⌘+Shift+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey\r\n : isWindows\r\n ? // Trigger redo with Ctrl+Y on Windows\r\n e.ctrlKey && e.keyCode === KEYCODE_Y\r\n : // Trigger redo with Ctrl+Shift+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._redoEdit();\r\n } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) {\r\n e.preventDefault();\r\n\r\n // Toggle capturing tab key so users can focus away\r\n this.capture = !this.capture;\r\n }\r\n if (e.keyCode !== 13 && e.keyCode !== 9) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n }\r\n },\r\n },\r\n render(h): VNode {\r\n const lineNumberWidthCalculator = h(\r\n 'div',\r\n {\r\n attrs: {\r\n class: 'prism-editor__line-width-calc',\r\n style: 'height: 0px; visibility: hidden; pointer-events: none;',\r\n },\r\n },\r\n '999'\r\n );\r\n const lineNumbers = h(\r\n 'div',\r\n {\r\n staticClass: 'prism-editor__line-numbers',\r\n style: {\r\n 'min-height': this.lineNumbersHeight,\r\n },\r\n attrs: {\r\n 'aria-hidden': 'true',\r\n },\r\n },\r\n [\r\n lineNumberWidthCalculator,\r\n Array.from(Array(this.lineNumbersCount).keys()).map((_, index) => {\r\n return h('div', { attrs: { class: 'prism-editor__line-number token comment' } }, `${++index}`);\r\n }),\r\n ]\r\n );\r\n\r\n const autocompleteList = (this.autocompleteOpen && this.autocompleteData.length) ? h(\r\n 'ul',\r\n {\r\n staticClass: 'prism-editor__autocomplete',\r\n style: {left: this.cursorOffset[0] + 'px', top: this.cursorOffset[1] + 'px'}\r\n },\r\n this.autocompleteData.map((data: AutocompleteEntry, i) => {\r\n return h('li', {\r\n key: data.text,\r\n class: {selected: i == this.autocompleteIndex},\r\n on: {\r\n mousedown: ($event: MouseEvent) => {\r\n this.acceptAutocomplete($event, i);\r\n }\r\n }\r\n }, [data.label || data.text]);\r\n })\r\n ) : undefined;\r\n\r\n const textarea = h('textarea', {\r\n ref: 'textarea',\r\n on: {\r\n input: this.handleChange,\r\n keydown: this.handleKeyDown,\r\n click: ($event: MouseEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('click', $event);\r\n },\r\n keyup: ($event: KeyboardEvent) => {\r\n this.$emit('keyup', $event);\r\n },\r\n focus: ($event: FocusEvent) => {\r\n this._recordStateIfChange();\r\n this.$emit('focus', $event);\r\n },\r\n blur: ($event: FocusEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('blur', $event);\r\n },\r\n },\r\n staticClass: 'prism-editor__textarea',\r\n class: {\r\n 'prism-editor__textarea--empty': this.isEmpty,\r\n },\r\n attrs: {\r\n spellCheck: 'false',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n autocorrect: 'off',\r\n 'data-gramm': 'false',\r\n placeholder: this.placeholder,\r\n 'data-testid': 'textarea',\r\n readonly: this.readonly,\r\n },\r\n domProps: {\r\n value: this.codeData,\r\n },\r\n });\r\n const preview = h('pre', {\r\n ref: 'pre',\r\n staticClass: 'prism-editor__editor',\r\n attrs: {\r\n 'data-testid': 'preview',\r\n },\r\n domProps: {\r\n innerHTML: this.content,\r\n },\r\n });\r\n const editorContainer = h('div', { staticClass: 'prism-editor__container' }, [textarea, preview]);\r\n const wrapper = h('div', { staticClass: 'prism-editor-wrapper', ref: 'wrapper' }, [this.lineNumbers && lineNumbers, editorContainer]);\r\n return h('div', { staticClass: 'prism-editor-component' }, [wrapper, autocompleteList]);\r\n },\r\n});\r\n"],"names":["KEYCODE_ENTER","KEYCODE_TAB","KEYCODE_BACKSPACE","KEYCODE_Y","KEYCODE_Z","KEYCODE_M","KEYCODE_ESCAPE","BRACKET_PAIRS","HISTORY_LIMIT","HISTORY_TIME_GAP","isWindows","global","test","navigator","platform","isMacLike","PrismEditor","Vue","extend","props","lineNumbers","type","Boolean","autoStyleLineNumbers","readonly","value","String","highlight","Function","required","tabSize","Number","insertSpaces","ignoreTabKey","placeholder","autocomplete","data","capture","history","stack","offset","lineNumbersHeight","codeData","autocompleteOpen","autocompleteIndex","autocompleteData","watch","immediate","handler","newVal","content","$nextTick","setLineNumbersHeight","styleLineNumbers","nextTick","node","$el","querySelector","scrollIntoView","block","computed","isEmpty","length","result","lineNumbersCount","totalLines","split","cursorOffset","text","input","$refs","textarea","wrapper","lines","substring","selectionEnd","font_size","parseFloat","getComputedStyle","getPropertyValue","line","column","Math","min","scrollLeft","clientWidth","scrollTop","mounted","_recordCurrentState","methods","updateAutocompleteData","old_length","splice","Infinity","max","acceptAutocomplete","event","option","preventDefault","undefined","suggestion","overlap","new_text","substr","join","cursor_pos","endsWith","selectionStart","_applyEdits","inserted_characters","setTimeout","pre","height","$editor","$lineNumbers","editorStyles","window","btlr","bblr","style","stylesList","forEach","_recordChange","_getLines","position","_recordStateIfChange","record","last","_updateInput","overwrite","slice","count","extras","timestamp","Date","now","re","previous","pop","match","current","startsWith","push","$emit","handleChange","e","target","_undoEdit","_redoEdit","handleKeyDown","$listeners","keydown","defaultPrevented","keyCode","stopPropagation","blur","tabCharacter","repeat","shiftKey","linesBeforeCaret","startLine","endLine","nextValue","map","i","startLineText","updatedSelection","hasSelection","textBeforeCaret","matches","indent","key","metaKey","ctrlKey","altKey","render","h","lineNumberWidthCalculator","attrs","staticClass","Array","from","keys","_","index","autocompleteList","left","top","selected","on","mousedown","$event","label","ref","click","keyup","focus","spellCheck","autocapitalize","autocorrect","domProps","preview","innerHTML","editorContainer"],"mappings":"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"} \ No newline at end of file diff --git a/packages/vue-prism-editor/dist/prismeditor.umd.production.min.js b/packages/vue-prism-editor/dist/prismeditor.umd.production.min.js new file mode 100644 index 0000000..7b8e69e --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.umd.production.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],e):e((t=t||self).PrismEditor={},t.Vue)}(this,(function(t,e){"use strict";var i=void 0!==typeof self?self:this;function s(){return(s=Object.assign||function(t){for(var e=1;e li.selected");e&&e.scrollIntoView({block:"nearest"})}))}},computed:{isEmpty:function(){return 0===this.codeData.length},content:function(){return this.highlight(this.codeData)+"
"},lineNumbersCount:function(){return this.codeData.split(/\r\n|\n/).length},cursorOffset:function(){var t=this.$refs.textarea,e=this.$refs.wrapper,i=this.codeData.substring(0,t.selectionEnd||0).split(/\r\n|\n/),s=parseFloat(getComputedStyle(t).getPropertyValue("font-size")),n=i.length;return[Math.min(8.85*i[i.length-1].length*(s/16)-e.scrollLeft,e.clientWidth-Math.min(240,e.clientWidth)),24*n*(s/16)+2-e.scrollTop]}},mounted:function(){this._recordCurrentState(),this.styleLineNumbers()},methods:{updateAutocompleteData:function(){var t,e="function"==typeof this.autocomplete?this.autocomplete(this.codeData,this.$refs.textarea.selectionEnd):[],i=this.autocompleteData.length;(t=this.autocompleteData).splice.apply(t,[0,Infinity].concat(e)),this.autocompleteOpen=!0,this.autocompleteIndex=Math.max(0,Math.min(this.autocompleteIndex,this.autocompleteData.length-1)),i>this.autocompleteData.length&&(this.autocompleteIndex=0)},acceptAutocomplete:function(t,i){var s=this;t.preventDefault(),null==i&&(i=this.autocompleteIndex);var n=this.$refs.textarea,o=this.$refs.wrapper,a=this.autocompleteData[i]||this.autocompleteData[0];if(a){var r=a.overlap||0,l=[this.codeData.substr(0,n.selectionEnd-r),a.text,this.codeData.substring(n.selectionEnd)].join(""),u=n.selectionEnd-r+a.text.length+(a.text.endsWith(")")?-1:0);n.selectionStart=n.selectionEnd=u,this._applyEdits({value:l,selectionStart:u,selectionEnd:u});var h=a.text.length-a.overlap;e.nextTick((function(){o.scrollLeft+=8.85*h})),a.text.endsWith(".")?setTimeout((function(){s.updateAutocompleteData()}),1):this.autocompleteOpen=!1}},setLineNumbersHeight:function(){this.lineNumbersHeight=getComputedStyle(this.$refs.pre).height},styleLineNumbers:function(){if(this.lineNumbers&&this.autoStyleLineNumbers){var t=this.$refs.pre,e=this.$el.querySelector(".prism-editor__line-numbers"),i=window.getComputedStyle(t);this.$nextTick((function(){var s="border-top-left-radius",n="border-bottom-left-radius";e&&(e.style[s]=i[s],e.style[n]=i[n],t.style[s]="0",t.style[n]="0",["background-color","margin-top","padding-top","font-family","font-size","line-height"].forEach((function(t){e.style[t]=i[t]})),e.style["margin-bottom"]="-"+i["padding-top"])}))}},_recordCurrentState:function(){var t=this.$refs.textarea;t&&this._recordChange({value:t.value,selectionStart:t.selectionStart,selectionEnd:t.selectionEnd})},_getLines:function(t,e){return t.substring(0,e).split("\n")},_recordStateIfChange:function(){this.history.stack[this.history.offset].value!=this.codeData&&this._recordChange({value:this.codeData,selectionStart:this.codeData.length,selectionEnd:this.codeData.length})},_applyEdits:function(t){var e=this.$refs.textarea,i=this.history.stack[this.history.offset];i&&e&&(this.history.stack[this.history.offset]=s({},i,{selectionStart:e.selectionStart,selectionEnd:e.selectionEnd})),this._recordChange(t),this._updateInput(t)},_recordChange:function(t,e){void 0===e&&(e=!1);var i=this.history,n=i.stack,o=i.offset;if(n.length&&o>-1){this.history.stack=n.slice(0,o+1);var a=this.history.stack.length;if(a>100){var r=a-100;this.history.stack=n.slice(r,a),this.history.offset=Math.max(this.history.offset-r,0)}}var l=Date.now();if(e){var u=this.history.stack[this.history.offset];if(u&&l-u.timestamp<3e3){var h,c,p=/[^a-z0-9]([a-z0-9]+)$/i,d=null===(h=this._getLines(u.value,u.selectionStart).pop())||void 0===h?void 0:h.match(p),f=null===(c=this._getLines(t.value,t.selectionStart).pop())||void 0===c?void 0:c.match(p);if(d&&f&&f[1].startsWith(d[1]))return void(this.history.stack[this.history.offset]=s({},t,{timestamp:l}))}}this.history.stack.push(s({},t,{timestamp:l})),this.history.offset++},_updateInput:function(t){var e=this.$refs.textarea;e&&(e.value=t.value,e.selectionStart=t.selectionStart,e.selectionEnd=t.selectionEnd,this.$emit("input",t.value))},handleChange:function(t){var e=t.target,i=e.value;this._recordChange({value:i,selectionStart:e.selectionStart,selectionEnd:e.selectionEnd},!0),this.$emit("input",i)},_undoEdit:function(){var t=this.history,e=t.offset,i=t.stack[e-1];i&&(this._updateInput(i),this.history.offset=Math.max(e-1,0))},_redoEdit:function(){var t=this.history,e=t.stack,i=t.offset,s=e[i+1];s&&(this._updateInput(s),this.history.offset=Math.min(i+1,e.length-1))},handleKeyDown:function(t){var e=this,i=this.tabSize,s=this.insertSpaces,r=this.ignoreTabKey;if(!this.$listeners.keydown||(this.$emit("keydown",t),!t.defaultPrevented)){if(9===t.keyCode&&this.autocompleteData.length&&this.autocompleteOpen)return this.acceptAutocomplete(t),t.preventDefault(),void t.stopPropagation();if(27===t.keyCode){if(this.autocompleteData.length&&this.autocompleteOpen)return t.preventDefault(),void(this.autocompleteOpen=!1)}else if(38===t.keyCode){if(this.autocompleteData.length&&this.autocompleteOpen)return t.preventDefault(),void(this.autocompleteIndex=(this.autocompleteIndex?this.autocompleteIndex:this.autocompleteData.length)-1)}else if(40===t.keyCode&&this.autocompleteData.length&&this.autocompleteOpen)return t.preventDefault(),void(this.autocompleteIndex=(this.autocompleteIndex+1)%this.autocompleteData.length);27===t.keyCode&&(t.target.blur(),this.$emit("blur",t));var l=t.target,u=l.value,h=l.selectionStart,c=l.selectionEnd,p=(s?" ":"\t").repeat(i);if(9===t.keyCode&&!r&&this.capture)if(t.preventDefault(),t.shiftKey){var d=this._getLines(u,h),f=d.length-1,m=this._getLines(u,c).length-1,y=u.split("\n").map((function(t,e){return e>=f&&e<=m&&t.startsWith(p)?t.substring(p.length):t})).join("\n");u!==y&&this._applyEdits({value:y,selectionStart:d[f].startsWith(p)?h-p.length:h,selectionEnd:c-(u.length-y.length)})}else if(h!==c){var g=this._getLines(u,h),v=g.length-1,b=this._getLines(u,c).length-1,_=g[v];this._applyEdits({value:u.split("\n").map((function(t,e){return e>=v&&e<=b?p+t:t})).join("\n"),selectionStart:/\S/.test(_)?h+p.length:h,selectionEnd:c+p.length*(b-v+1)})}else{var k=h+p.length;this._applyEdits({value:u.substring(0,h)+p+u.substring(c),selectionStart:k,selectionEnd:k})}else if(8===t.keyCode){var D=h!==c;if(u.substring(0,h).endsWith(p)&&!D){t.preventDefault();var x=h-p.length;this._applyEdits({value:u.substring(0,h-p.length)+u.substring(c),selectionStart:x,selectionEnd:x})}}else if(13===t.keyCode){if(this.autocompleteData.length&&this.autocompleteOpen)this.acceptAutocomplete(t);else if(h===c){var E=this._getLines(u,h).pop(),C=null==E?void 0:E.match(/^\s+/);if(C&&C[0]){t.preventDefault();var S="\n"+C[0],$=h+S.length;this._applyEdits({value:u.substring(0,h)+S+u.substring(c),selectionStart:$,selectionEnd:$})}}}else n[t.key]?h!==c&&(t.preventDefault(),this._applyEdits({value:u.substring(0,h)+t.key+u.substring(h,c)+n[t.key]+u.substring(c),selectionStart:h+1,selectionEnd:c+1})):!(a?t.metaKey&&90===t.keyCode:t.ctrlKey&&90===t.keyCode)||t.shiftKey||t.altKey?(a?t.metaKey&&90===t.keyCode&&t.shiftKey:o?t.ctrlKey&&89===t.keyCode:t.ctrlKey&&90===t.keyCode&&t.shiftKey)&&!t.altKey?(t.preventDefault(),this._redoEdit()):77!==t.keyCode||!t.ctrlKey||a&&!t.shiftKey||(t.preventDefault(),this.capture=!this.capture):(t.preventDefault(),this._undoEdit());13!==t.keyCode&&9!==t.keyCode&&setTimeout((function(){e.updateAutocompleteData()}),1)}}},render:function(t){var e=this,i=t("div",{attrs:{class:"prism-editor__line-width-calc",style:"height: 0px; visibility: hidden; pointer-events: none;"}},"999"),s=t("div",{staticClass:"prism-editor__line-numbers",style:{"min-height":this.lineNumbersHeight},attrs:{"aria-hidden":"true"}},[i,Array.from(Array(this.lineNumbersCount).keys()).map((function(e,i){return t("div",{attrs:{class:"prism-editor__line-number token comment"}},""+ ++i)}))]),n=this.autocompleteOpen&&this.autocompleteData.length?t("ul",{staticClass:"prism-editor__autocomplete",style:{left:this.cursorOffset[0]+"px",top:this.cursorOffset[1]+"px"}},this.autocompleteData.map((function(i,s){return t("li",{key:i.text,class:{selected:s==e.autocompleteIndex},on:{mousedown:function(t){e.acceptAutocomplete(t,s)}}},[i.label||i.text])}))):void 0,o=t("textarea",{ref:"textarea",on:{input:this.handleChange,keydown:this.handleKeyDown,click:function(t){e.autocompleteOpen=!1,e.$emit("click",t)},keyup:function(t){e.$emit("keyup",t)},focus:function(t){e._recordStateIfChange(),e.$emit("focus",t)},blur:function(t){e.autocompleteOpen=!1,e.$emit("blur",t)}},staticClass:"prism-editor__textarea",class:{"prism-editor__textarea--empty":this.isEmpty},attrs:{spellCheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off","data-gramm":"false",placeholder:this.placeholder,"data-testid":"textarea",readonly:this.readonly},domProps:{value:this.codeData}}),a=t("pre",{ref:"pre",staticClass:"prism-editor__editor",attrs:{"data-testid":"preview"},domProps:{innerHTML:this.content}}),r=t("div",{staticClass:"prism-editor__container"},[o,a]),l=t("div",{staticClass:"prism-editor-wrapper",ref:"wrapper"},[this.lineNumbers&&s,r]);return t("div",{staticClass:"prism-editor-component"},[l,n])}});t.PrismEditor=r,Object.defineProperty(t,"__esModule",{value:!0});let l=null;"undefined"!=typeof window?l=window.Vue:void 0!==i&&(l=i.Vue),l&&l.component("PrismEditor",r)})); +//# sourceMappingURL=prismeditor.umd.production.min.js.map diff --git a/packages/vue-prism-editor/dist/prismeditor.umd.production.min.js.map b/packages/vue-prism-editor/dist/prismeditor.umd.production.min.js.map new file mode 100644 index 0000000..bd3f0ae --- /dev/null +++ b/packages/vue-prism-editor/dist/prismeditor.umd.production.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prismeditor.umd.production.min.js","sources":["../src/Editor.ts"],"sourcesContent":["import Vue, { VNode } from 'vue';\r\n\r\nimport './styles.css';\r\nconst KEYCODE_ENTER = 13;\r\nconst KEYCODE_TAB = 9;\r\nconst KEYCODE_BACKSPACE = 8;\r\nconst KEYCODE_Y = 89;\r\nconst KEYCODE_Z = 90;\r\nconst KEYCODE_M = 77;\r\nconst KEYCODE_ESCAPE = 27;\r\n\r\nconst BRACKET_PAIRS: {[opening: string]: string} = {\r\n '(':')',\r\n '{':'}',\r\n '[':']',\r\n '\"':'\"',\r\n \"'\":\"'\",\r\n};\r\n\r\nconst HISTORY_LIMIT = 100;\r\nconst HISTORY_TIME_GAP = 3000;\r\n\r\nconst isWindows = 'navigator' in global && /Win/i.test(navigator.platform);\r\nconst isMacLike = 'navigator' in global && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\r\n\r\nexport interface EditorProps {\r\n lineNumbers: boolean;\r\n autoStyleLineNumbers: boolean;\r\n readonly: boolean;\r\n value: string;\r\n highlight: () => string;\r\n tabSize: number;\r\n insertSpaces: boolean;\r\n ignoreTabKey: boolean;\r\n placeholder: string;\r\n}\r\nexport interface Record {\r\n value: string;\r\n selectionStart: number;\r\n selectionEnd: number;\r\n}\r\n\r\nexport interface History {\r\n stack: Array;\r\n offset: number;\r\n}\r\ninterface AutocompleteEntry {\r\n text: string\r\n overlap: number\r\n label?: string\r\n}\r\n\r\nexport const PrismEditor = Vue.extend({\r\n props: {\r\n lineNumbers: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n autoStyleLineNumbers: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n value: {\r\n type: String,\r\n default: '',\r\n },\r\n highlight: {\r\n type: Function,\r\n required: true,\r\n },\r\n tabSize: {\r\n type: Number,\r\n default: 2,\r\n },\r\n insertSpaces: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n ignoreTabKey: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n placeholder: {\r\n type: String,\r\n default: '',\r\n },\r\n autocomplete: {\r\n type: Function,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n capture: true,\r\n history: {\r\n stack: [],\r\n offset: -1,\r\n } as History,\r\n lineNumbersHeight: '20px',\r\n codeData: '',\r\n\r\n autocompleteOpen: false,\r\n autocompleteIndex: 0,\r\n autocompleteData: [] as AutocompleteEntry[]\r\n };\r\n },\r\n watch: {\r\n value: {\r\n immediate: true,\r\n handler(newVal: string): void {\r\n if (!newVal) {\r\n this.codeData = '';\r\n } else {\r\n this.codeData = newVal;\r\n }\r\n },\r\n },\r\n content: {\r\n immediate: true,\r\n handler(): void {\r\n if (this.lineNumbers) {\r\n this.$nextTick(() => {\r\n this.setLineNumbersHeight();\r\n });\r\n }\r\n },\r\n },\r\n lineNumbers(): void {\r\n this.$nextTick(() => {\r\n this.styleLineNumbers();\r\n this.setLineNumbersHeight();\r\n });\r\n },\r\n autocompleteIndex() {\r\n Vue.nextTick(() => {\r\n let node = this.$el.querySelector('ul.prism-editor__autocomplete > li.selected');\r\n if (node) node.scrollIntoView({block: 'nearest'});\r\n })\r\n },\r\n },\r\n computed: {\r\n isEmpty(): boolean {\r\n return this.codeData.length === 0;\r\n },\r\n content(): string {\r\n const result = this.highlight(this.codeData) + '
';\r\n // todo: VNode support?\r\n return result;\r\n },\r\n lineNumbersCount(): number {\r\n const totalLines = this.codeData.split(/\\r\\n|\\n/).length;\r\n return totalLines;\r\n },\r\n cursorOffset() {\r\n let text: string = this.codeData;\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let lines = text.substring(0, input.selectionEnd || 0).split(/\\r\\n|\\n/);\r\n let font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size'));\r\n let line = lines.length;\r\n let column = lines[lines.length-1].length;\r\n return [\r\n Math.min((column * 8.85 * (font_size / 16)) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)),\r\n (line * 24.0 * (font_size / 16)) + 2 - wrapper.scrollTop,\r\n ]\r\n },\r\n },\r\n mounted() {\r\n this._recordCurrentState();\r\n this.styleLineNumbers();\r\n },\r\n\r\n methods: {\r\n updateAutocompleteData() {\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let data: AutocompleteEntry[] = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : [];\r\n let old_length = this.autocompleteData.length;\r\n this.autocompleteData.splice(0, Infinity, ...data);\r\n this.autocompleteOpen = true;\r\n this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length-1));\r\n if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0;\r\n },\r\n acceptAutocomplete(event: Event, option?: number) {\r\n event.preventDefault()\r\n if (option == undefined) option = this.autocompleteIndex;\r\n\r\n let input = this.$refs.textarea as HTMLTextAreaElement;\r\n let wrapper = this.$refs.wrapper as HTMLDivElement;\r\n let suggestion = this.autocompleteData[option] || this.autocompleteData[0];\r\n if (!suggestion) return;\r\n \r\n let overlap = suggestion.overlap || 0;\r\n let new_text = [\r\n this.codeData.substr(0, input.selectionEnd - overlap),\r\n suggestion.text,\r\n this.codeData.substring(input.selectionEnd),\r\n ]\r\n let result: string = new_text.join('');\r\n let cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0);\r\n input.selectionStart = input.selectionEnd = cursor_pos;\r\n\r\n this._applyEdits({\r\n value: result,\r\n selectionStart: cursor_pos,\r\n selectionEnd: cursor_pos,\r\n });\r\n let inserted_characters = suggestion.text.length - suggestion.overlap;\r\n Vue.nextTick(() => {\r\n wrapper.scrollLeft += inserted_characters * 8.85;\r\n })\r\n\r\n if (suggestion.text.endsWith('.')) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n } else {\r\n this.autocompleteOpen = false;\r\n }\r\n },\r\n setLineNumbersHeight(): void {\r\n this.lineNumbersHeight = getComputedStyle(this.$refs.pre as HTMLTextAreaElement).height;\r\n },\r\n styleLineNumbers(): void {\r\n if (!this.lineNumbers || !this.autoStyleLineNumbers) return;\r\n\r\n const $editor = this.$refs.pre as HTMLTextAreaElement;\r\n const $lineNumbers: HTMLDivElement | null = this.$el.querySelector('.prism-editor__line-numbers');\r\n const editorStyles = window.getComputedStyle($editor);\r\n\r\n this.$nextTick(() => {\r\n const btlr: any = 'border-top-left-radius';\r\n const bblr: any = 'border-bottom-left-radius';\r\n if (!$lineNumbers) return;\r\n $lineNumbers.style[btlr] = editorStyles[btlr];\r\n $lineNumbers.style[bblr] = editorStyles[bblr];\r\n $editor.style[btlr] = '0';\r\n $editor.style[bblr] = '0';\r\n\r\n const stylesList = ['background-color', 'margin-top', 'padding-top', 'font-family', 'font-size', 'line-height'];\r\n stylesList.forEach((style: any) => {\r\n $lineNumbers.style[style] = editorStyles[style];\r\n });\r\n $lineNumbers.style['margin-bottom' as any] = '-' + editorStyles['padding-top' as any];\r\n });\r\n },\r\n _recordCurrentState(): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n // Save current state of the input\r\n const { value, selectionStart, selectionEnd } = input;\r\n\r\n this._recordChange({\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n });\r\n },\r\n _getLines(text: string, position: number): Array {\r\n return text.substring(0, position).split('\\n');\r\n },\r\n _recordStateIfChange(): void {\r\n if (this.history.stack[this.history.offset].value != this.codeData) {\r\n this._recordChange({\r\n value: this.codeData,\r\n selectionStart: this.codeData.length,\r\n selectionEnd: this.codeData.length,\r\n });\r\n }\r\n },\r\n _applyEdits(record: Record): void {\r\n // Save last selection state\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && input) {\r\n this.history.stack[this.history.offset] = {\r\n ...last,\r\n selectionStart: input.selectionStart,\r\n selectionEnd: input.selectionEnd,\r\n };\r\n }\r\n\r\n // Save the changes\r\n this._recordChange(record);\r\n this._updateInput(record);\r\n },\r\n _recordChange(record: Record, overwrite = false): void {\r\n const { stack, offset } = this.history;\r\n\r\n if (stack.length && offset > -1) {\r\n // When something updates, drop the redo operations\r\n this.history.stack = stack.slice(0, offset + 1);\r\n\r\n // Limit the number of operations to 100\r\n const count = this.history.stack.length;\r\n\r\n if (count > HISTORY_LIMIT) {\r\n const extras = count - HISTORY_LIMIT;\r\n\r\n this.history.stack = stack.slice(extras, count);\r\n this.history.offset = Math.max(this.history.offset - extras, 0);\r\n }\r\n }\r\n\r\n const timestamp = Date.now();\r\n\r\n if (overwrite) {\r\n const last = this.history.stack[this.history.offset];\r\n\r\n if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) {\r\n // A previous entry exists and was in short interval\r\n\r\n // Match the last word in the line\r\n const re = /[^a-z0-9]([a-z0-9]+)$/i;\r\n\r\n // Get the previous line\r\n const previous = this._getLines(last.value, last.selectionStart).pop()?.match(re);\r\n\r\n // Get the current line\r\n const current = this._getLines(record.value, record.selectionStart).pop()?.match(re);\r\n\r\n if (previous && current && current[1].startsWith(previous[1])) {\r\n // The last word of the previous line and current line match\r\n // Overwrite previous entry so that undo will remove whole word\r\n this.history.stack[this.history.offset] = {\r\n ...record,\r\n timestamp,\r\n };\r\n\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Add the new operation to the stack\r\n this.history.stack.push({ ...record, timestamp });\r\n this.history.offset++;\r\n },\r\n\r\n _updateInput(record: Record): void {\r\n const input = this.$refs.textarea as HTMLTextAreaElement;\r\n\r\n if (!input) return;\r\n\r\n // Update values and selection state\r\n input.value = record.value;\r\n input.selectionStart = record.selectionStart;\r\n input.selectionEnd = record.selectionEnd;\r\n\r\n this.$emit('input', record.value);\r\n // this.props.onValueChange(record.value);\r\n },\r\n handleChange(e: KeyboardEvent): void {\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n this._recordChange(\r\n {\r\n value,\r\n selectionStart,\r\n selectionEnd,\r\n },\r\n true\r\n );\r\n this.$emit('input', value);\r\n // this.props.onValueChange(value);\r\n },\r\n _undoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the previous edit\r\n const record = stack[offset - 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.max(offset - 1, 0);\r\n }\r\n },\r\n _redoEdit(): void {\r\n const { stack, offset } = this.history;\r\n\r\n // Get the next edit\r\n const record = stack[offset + 1];\r\n\r\n if (record) {\r\n // Apply the changes and update the offset\r\n this._updateInput(record);\r\n this.history.offset = Math.min(offset + 1, stack.length - 1);\r\n }\r\n },\r\n handleKeyDown(e: KeyboardEvent): void {\r\n // console.log(navigator.platform);\r\n const { tabSize, insertSpaces, ignoreTabKey } = this;\r\n\r\n if (this.$listeners.keydown) {\r\n // onKeyDown(e);\r\n this.$emit('keydown', e);\r\n\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n if (e.keyCode === 27) {\r\n // Escape\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteOpen = false;\r\n return;\r\n }\r\n } else if (e.keyCode === 38) {\r\n // Up\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1;\r\n return;\r\n }\r\n } else if (e.keyCode === 40) {\r\n // Down\r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n e.preventDefault();\r\n this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length;\r\n return;\r\n }\r\n }\r\n\r\n if (e.keyCode === KEYCODE_ESCAPE) {\r\n (e.target).blur();\r\n this.$emit('blur', e);\r\n }\r\n\r\n const { value, selectionStart, selectionEnd } = e.target as HTMLTextAreaElement;\r\n\r\n const tabCharacter = (insertSpaces ? ' ' : '\\t').repeat(tabSize);\r\n\r\n if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) {\r\n // Prevent focus change\r\n e.preventDefault();\r\n\r\n if (e.shiftKey) {\r\n // Unindent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const nextValue = value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine && line.startsWith(tabCharacter)) {\r\n return line.substring(tabCharacter.length);\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n');\r\n\r\n if (value !== nextValue) {\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: nextValue,\r\n // Move the start cursor if first line in selection was modified\r\n // It was modified only if it started with a tab\r\n selectionStart: startLineText.startsWith(tabCharacter)\r\n ? selectionStart - tabCharacter.length\r\n : selectionStart,\r\n // Move the end cursor by total number of characters removed\r\n selectionEnd: selectionEnd - (value.length - nextValue.length),\r\n });\r\n }\r\n } else if (selectionStart !== selectionEnd) {\r\n // Indent selected lines\r\n const linesBeforeCaret = this._getLines(value, selectionStart);\r\n const startLine = linesBeforeCaret.length - 1;\r\n const endLine = this._getLines(value, selectionEnd).length - 1;\r\n const startLineText = linesBeforeCaret[startLine];\r\n\r\n this._applyEdits({\r\n value: value\r\n .split('\\n')\r\n .map((line, i) => {\r\n if (i >= startLine && i <= endLine) {\r\n return tabCharacter + line;\r\n }\r\n\r\n return line;\r\n })\r\n .join('\\n'),\r\n // Move the start cursor by number of characters added in first line of selection\r\n // Don't move it if it there was no text before cursor\r\n selectionStart: /\\S/.test(startLineText) ? selectionStart + tabCharacter.length : selectionStart,\r\n // Move the end cursor by total number of characters added\r\n selectionEnd: selectionEnd + tabCharacter.length * (endLine - startLine + 1),\r\n });\r\n } else {\r\n const updatedSelection = selectionStart + tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Insert tab character at caret\r\n value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_BACKSPACE) {\r\n const hasSelection = selectionStart !== selectionEnd;\r\n const textBeforeCaret = value.substring(0, selectionStart);\r\n\r\n if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) {\r\n // Prevent default delete behaviour\r\n e.preventDefault();\r\n\r\n const updatedSelection = selectionStart - tabCharacter.length;\r\n\r\n this._applyEdits({\r\n // Remove tab character at caret\r\n value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n } else if (e.keyCode === KEYCODE_ENTER) {\r\n \r\n if (this.autocompleteData.length && this.autocompleteOpen) {\r\n this.acceptAutocomplete(e);\r\n\r\n } else if (selectionStart === selectionEnd) {\r\n // Get the current line\r\n const line = this._getLines(value, selectionStart).pop();\r\n const matches = line?.match(/^\\s+/);\r\n\r\n if (matches && matches[0]) {\r\n e.preventDefault();\r\n\r\n // Preserve indentation on inserting a new line\r\n const indent = '\\n' + matches[0];\r\n const updatedSelection = selectionStart + indent.length;\r\n\r\n this._applyEdits({\r\n // Insert indentation character at caret\r\n value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: updatedSelection,\r\n selectionEnd: updatedSelection,\r\n });\r\n }\r\n }\r\n } else if (BRACKET_PAIRS[e.key]) {\r\n // If text is selected, wrap them in the characters\r\n if (selectionStart !== selectionEnd) {\r\n e.preventDefault();\r\n\r\n this._applyEdits({\r\n value:\r\n value.substring(0, selectionStart) +\r\n e.key +\r\n value.substring(selectionStart, selectionEnd) +\r\n BRACKET_PAIRS[e.key] +\r\n value.substring(selectionEnd),\r\n // Update caret position\r\n selectionStart: selectionStart + 1,\r\n selectionEnd: selectionEnd + 1,\r\n });\r\n }\r\n } else if (\r\n (isMacLike\r\n ? // Trigger undo with ⌘+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z\r\n : // Trigger undo with Ctrl+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z) &&\r\n !e.shiftKey &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._undoEdit();\r\n } else if (\r\n (isMacLike\r\n ? // Trigger redo with ⌘+Shift+Z on Mac\r\n e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey\r\n : isWindows\r\n ? // Trigger redo with Ctrl+Y on Windows\r\n e.ctrlKey && e.keyCode === KEYCODE_Y\r\n : // Trigger redo with Ctrl+Shift+Z on other platforms\r\n e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) &&\r\n !e.altKey\r\n ) {\r\n e.preventDefault();\r\n\r\n this._redoEdit();\r\n } else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) {\r\n e.preventDefault();\r\n\r\n // Toggle capturing tab key so users can focus away\r\n this.capture = !this.capture;\r\n }\r\n if (e.keyCode !== 13 && e.keyCode !== 9) {\r\n setTimeout(() => {\r\n this.updateAutocompleteData();\r\n }, 1);\r\n }\r\n },\r\n },\r\n render(h): VNode {\r\n const lineNumberWidthCalculator = h(\r\n 'div',\r\n {\r\n attrs: {\r\n class: 'prism-editor__line-width-calc',\r\n style: 'height: 0px; visibility: hidden; pointer-events: none;',\r\n },\r\n },\r\n '999'\r\n );\r\n const lineNumbers = h(\r\n 'div',\r\n {\r\n staticClass: 'prism-editor__line-numbers',\r\n style: {\r\n 'min-height': this.lineNumbersHeight,\r\n },\r\n attrs: {\r\n 'aria-hidden': 'true',\r\n },\r\n },\r\n [\r\n lineNumberWidthCalculator,\r\n Array.from(Array(this.lineNumbersCount).keys()).map((_, index) => {\r\n return h('div', { attrs: { class: 'prism-editor__line-number token comment' } }, `${++index}`);\r\n }),\r\n ]\r\n );\r\n\r\n const autocompleteList = (this.autocompleteOpen && this.autocompleteData.length) ? h(\r\n 'ul',\r\n {\r\n staticClass: 'prism-editor__autocomplete',\r\n style: {left: this.cursorOffset[0] + 'px', top: this.cursorOffset[1] + 'px'}\r\n },\r\n this.autocompleteData.map((data: AutocompleteEntry, i) => {\r\n return h('li', {\r\n key: data.text,\r\n class: {selected: i == this.autocompleteIndex},\r\n on: {\r\n mousedown: ($event: MouseEvent) => {\r\n this.acceptAutocomplete($event, i);\r\n }\r\n }\r\n }, [data.label || data.text]);\r\n })\r\n ) : undefined;\r\n\r\n const textarea = h('textarea', {\r\n ref: 'textarea',\r\n on: {\r\n input: this.handleChange,\r\n keydown: this.handleKeyDown,\r\n click: ($event: MouseEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('click', $event);\r\n },\r\n keyup: ($event: KeyboardEvent) => {\r\n this.$emit('keyup', $event);\r\n },\r\n focus: ($event: FocusEvent) => {\r\n this._recordStateIfChange();\r\n this.$emit('focus', $event);\r\n },\r\n blur: ($event: FocusEvent) => {\r\n this.autocompleteOpen = false;\r\n this.$emit('blur', $event);\r\n },\r\n },\r\n staticClass: 'prism-editor__textarea',\r\n class: {\r\n 'prism-editor__textarea--empty': this.isEmpty,\r\n },\r\n attrs: {\r\n spellCheck: 'false',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n autocorrect: 'off',\r\n 'data-gramm': 'false',\r\n placeholder: this.placeholder,\r\n 'data-testid': 'textarea',\r\n readonly: this.readonly,\r\n },\r\n domProps: {\r\n value: this.codeData,\r\n },\r\n });\r\n const preview = h('pre', {\r\n ref: 'pre',\r\n staticClass: 'prism-editor__editor',\r\n attrs: {\r\n 'data-testid': 'preview',\r\n },\r\n domProps: {\r\n innerHTML: this.content,\r\n },\r\n });\r\n const editorContainer = h('div', { staticClass: 'prism-editor__container' }, [textarea, preview]);\r\n const wrapper = h('div', { staticClass: 'prism-editor-wrapper', ref: 'wrapper' }, [this.lineNumbers && lineNumbers, editorContainer]);\r\n return h('div', { staticClass: 'prism-editor-component' }, [wrapper, autocompleteList]);\r\n },\r\n});\r\n"],"names":["BRACKET_PAIRS","isWindows","global","test","navigator","platform","isMacLike","PrismEditor","Vue","extend","props","lineNumbers","type","Boolean","autoStyleLineNumbers","readonly","value","String","highlight","Function","required","tabSize","Number","insertSpaces","ignoreTabKey","placeholder","autocomplete","data","capture","history","stack","offset","lineNumbersHeight","codeData","autocompleteOpen","autocompleteIndex","autocompleteData","watch","immediate","handler","newVal","content","this","$nextTick","_this","setLineNumbersHeight","_this2","styleLineNumbers","nextTick","node","_this3","$el","querySelector","scrollIntoView","block","computed","isEmpty","length","lineNumbersCount","split","cursorOffset","input","$refs","textarea","wrapper","lines","substring","selectionEnd","font_size","parseFloat","getComputedStyle","getPropertyValue","line","Math","min","scrollLeft","clientWidth","scrollTop","mounted","_recordCurrentState","methods","updateAutocompleteData","old_length","splice","Infinity","max","acceptAutocomplete","event","option","preventDefault","undefined","suggestion","overlap","result","substr","text","join","cursor_pos","endsWith","selectionStart","_applyEdits","inserted_characters","setTimeout","_this4","pre","height","$editor","$lineNumbers","editorStyles","window","btlr","bblr","style","forEach","_recordChange","_getLines","position","_recordStateIfChange","record","last","_updateInput","overwrite","slice","count","extras","timestamp","Date","now","re","previous","pop","_this$_getLines$pop","match","current","_this$_getLines$pop2","startsWith","push","$emit","handleChange","e","target","_undoEdit","_redoEdit","handleKeyDown","$listeners","keydown","defaultPrevented","keyCode","stopPropagation","blur","tabCharacter","repeat","shiftKey","linesBeforeCaret","startLine","endLine","nextValue","map","i","startLineText","updatedSelection","hasSelection","matches","indent","key","metaKey","ctrlKey","altKey","_this5","render","h","lineNumberWidthCalculator","attrs","staticClass","Array","from","keys","_","index","autocompleteList","left","top","selected","_this6","on","mousedown","$event","label","ref","click","keyup","focus","spellCheck","autocapitalize","autocorrect","domProps","preview","innerHTML","editorContainer"],"mappings":"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"} \ No newline at end of file diff --git a/packages/vue-prism-editor/package-lock.json b/packages/vue-prism-editor/package-lock.json new file mode 100644 index 0000000..4a90be5 --- /dev/null +++ b/packages/vue-prism-editor/package-lock.json @@ -0,0 +1,13253 @@ +{ + "name": "vue-prism-editor", + "version": "1.2.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@achrinza/node-ipc": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz", + "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==", + "dev": true, + "requires": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + } + }, + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true + }, + "@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "dev": true, + "requires": { + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/polyfill": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", + "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", + "dev": true, + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", + "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", + "dev": true, + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "requires": { + "easy-stack": "1.0.1" + } + }, + "@rollup/plugin-commonjs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz", + "integrity": "sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", + "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@testing-library/dom": { + "version": "7.31.2", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", + "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^4.2.0", + "aria-query": "^4.2.2", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.6", + "lz-string": "^1.4.4", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + } + } + }, + "@testing-library/jest-dom": { + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz", + "integrity": "sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + } + }, + "@testing-library/vue": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/@testing-library/vue/-/vue-5.8.2.tgz", + "integrity": "sha512-evsQjLw3T/c92ZsXflZMzSN72P06VlgUZMIcrRKn5n9ZX7QgQyebB3DgdmPACf6JgNfP8Y3Lm2212FmeMnWlZw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^7.26.6", + "@vue/test-utils": "^1.1.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.4.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", + "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "dev": true, + "requires": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/node": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prismjs": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz", + "integrity": "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "@types/testing-library__jest-dom": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz", + "integrity": "sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==", + "dev": true, + "requires": { + "@types/jest": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@vue/cli-plugin-unit-jest": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.5.17.tgz", + "integrity": "sha512-Ta8hx68Y252umik1yD50dyyrwhzj4KzTEpngY9YKB6bY6pga9GK2olqyrb3+2X8o6tnSQkTFz+UcobfRQJDs5A==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@types/jest": "^24.0.19", + "@vue/cli-shared-utils": "^4.5.17", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^24.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", + "deepmerge": "^4.2.2", + "jest": "^24.9.0", + "jest-environment-jsdom-fifteen": "^1.0.2", + "jest-serializer-vue": "^2.0.2", + "jest-transform-stub": "^2.0.0", + "jest-watch-typeahead": "^0.4.2", + "ts-jest": "^24.2.0", + "vue-jest": "^3.0.5" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "dev": true, + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.17.tgz", + "integrity": "sha512-VoFNdxvTW4vZu3ne+j1Mf7mU99J2SAoRVn9XPrsouTUUJablglM8DASk7Ixhsh6ymyL/W9EADQFR6Pgj8Ujjuw==", + "dev": true, + "requires": { + "@achrinza/node-ipc": "9.2.2", + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@vue/test-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.3.0.tgz", + "integrity": "sha512-Xk2Xiyj2k5dFb8eYUKkcN9PzqZSppTlx7LaQWBbdA8tqh3jHr/KHX2/YLhNFc/xwDrgeLybqd+4ZCPJSGPIqeA==", + "dev": true, + "requires": { + "dom-event-types": "^1.0.0", + "lodash": "^4.17.15", + "pretty": "^2.0.0" + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "asyncro": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/asyncro/-/asyncro-3.0.0.tgz", + "integrity": "sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axe-core": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", + "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", + "dev": true + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-annotate-pure-calls": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-annotate-pure-calls/-/babel-plugin-annotate-pure-calls-0.4.0.tgz", + "integrity": "sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==", + "dev": true + }, + "babel-plugin-dev-expression": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.3.tgz", + "integrity": "sha512-rP5LK9QQTzCW61nVVzw88En1oK8t8gTsIeC6E61oelxNsU842yMjF0G1MxhvUpCkxCEIj7sE8/e5ieTheT//uw==", + "dev": true + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "babel-plugin-transform-async-to-promises": { + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.18.tgz", + "integrity": "sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==", + "dev": true + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-rename-import": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-rename-import/-/babel-plugin-transform-rename-import-2.3.0.tgz", + "integrity": "sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ==", + "dev": true + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001331", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001331.tgz", + "integrity": "sha512-Y1xk6paHpUXKP/P6YjQv1xqyTbgAP05ycHBcRdQjTcyXlWol868sJJPlmk5ylOekw2BrucWes5jk+LvVd7WZ5Q==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, + "core-js-compat": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", + "dev": true, + "requires": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "dev": true + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", + "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.7", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", + "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.2.2", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.4", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "deasync": { + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.26.tgz", + "integrity": "sha512-YKw0BmJSWxkjtQsbgn6Q9CHSWB7DKMen8vKrgyC006zy0UZ6nWyGidB0IzZgqkVRkOglAeUaFtiRTeLyel72bg==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz", + "integrity": "sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==", + "dev": true + }, + "dom-event-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.1.0.tgz", + "integrity": "sha512-jNCX+uNJ3v38BKvPbpki6j5ItVlnSqVV6vDWGS6rExzCMjsc39frLjm1n91o6YaKK6AZl0wLloItW6C6mr61BQ==", + "dev": true + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + } + }, + "electron-to-chromium": { + "version": "1.4.107", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.107.tgz", + "integrity": "sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.4.tgz", + "integrity": "sha512-flV8e5g9/xulChMG48Fygk1ptpo4lQRJ0eJYtxJFgi7pklLx7EFcOJ34jnvr8pbWlaFN/AT1cZpe0hiFel9Hqg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "eslint-plugin-flowtype": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz", + "integrity": "sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", + "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.3.5", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.7", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" + }, + "dependencies": { + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-react": { + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", + "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-react-hooks": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz", + "integrity": "sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", + "dev": true, + "requires": { + "css": "^2.1.0" + }, + "dependencies": { + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dev": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "generic-names": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", + "dev": true, + "requires": { + "loader-utils": "^3.2.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "humanize-duration": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.1.tgz", + "integrity": "sha512-jCVkMl+EaM80rrMrAPl96SGG4NRac53UyI1o/yAzebDntEY6K6/Fj2HOjdPg8omTqIe5Y0wPBai2q5xXrIbarA==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "dev": true, + "requires": { + "import-from": "^3.0.0" + } + }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-environment-jsdom-fifteen": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz", + "integrity": "sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg==", + "dev": true, + "requires": { + "@jest/environment": "^24.3.0", + "@jest/fake-timers": "^24.3.0", + "@jest/types": "^24.3.0", + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^15.2.1" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true + } + } + }, + "jest-environment-jsdom-sixteen": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-sixteen/-/jest-environment-jsdom-sixteen-1.0.3.tgz", + "integrity": "sha512-CwMqDUUfSl808uGPWXlNA1UFkWFgRmhHvyAjhCmCry6mYq4b/nn80MMN7tglqo5XgrANIs/w+mzINPzbZ4ZZrQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^25.1.0", + "jest-mock": "^25.1.0", + "jest-util": "^25.1.0", + "jsdom": "^16.2.1" + }, + "dependencies": { + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "lolex": "^5.0.0" + } + }, + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true + } + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-serializer-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz", + "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=", + "dev": true, + "requires": { + "pretty": "2.0.0" + } + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-transform-stub": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", + "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", + "dev": true + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-watch-typeahead": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", + "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.1", + "jest-regex-util": "^24.9.0", + "jest-watcher": "^24.3.0", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jpjs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jpjs/-/jpjs-1.2.1.tgz", + "integrity": "sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw==", + "dev": true + }, + "js-beautify": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.3.tgz", + "integrity": "sha512-f1ra8PHtOEu/70EBnmiUlV8nJePS58y9qKjl4JHfYWlFH6bo7ogZBz//FAZp7jDuXtYnGYKymZPlrg2I/9Zo4g==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.0.0" + } + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", + "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "object.assign": "^4.1.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "launch-editor": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.3.0.tgz", + "integrity": "sha512-3QrsCXejlWYHjBPFXTyGNhPj4rrQdB+5+r5r3wArpLH201aR+nWUgw/zKKkTmilCfY/sv6u8qo98pNvtg8LUTA==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.6.1" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", + "dev": true + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true + }, + "node-cache": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.2.1.tgz", + "integrity": "sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A==", + "dev": true, + "requires": { + "clone": "2.x", + "lodash": "^4.17.15" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-notifier": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "pascal-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", + "integrity": "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=", + "dev": true, + "requires": { + "camel-case": "^3.0.0", + "upper-case-first": "^1.1.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true + }, + "postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, + "postcss-merge-longhand": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", + "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", + "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", + "dev": true, + "requires": { + "generic-names": "^4.0.0", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "progress-estimator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/progress-estimator/-/progress-estimator-0.2.2.tgz", + "integrity": "sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-spinners": "^1.3.1", + "humanize-duration": "^3.15.3", + "log-update": "^2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "promise.series": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", + "integrity": "sha1-LMfr6Vn8OmYZwEq029yeRS2GS70=", + "dev": true + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + } + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexp.prototype.flags": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.2.tgz", + "integrity": "sha512-Ynz8fTQW5/1elh+jWU2EDDzeoNbD0OQ0R+D1VJU5ATOkUaro4A9YEkdN2ODQl/8UQFPPpZNw91fOcLFamM7Pww==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-postcss": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz", + "integrity": "sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "concat-with-sourcemaps": "^1.1.0", + "cssnano": "^5.0.1", + "import-cwd": "^3.0.0", + "p-queue": "^6.6.2", + "pify": "^5.0.0", + "postcss-load-config": "^3.0.0", + "postcss-modules": "^4.0.0", + "promise.series": "^0.2.0", + "resolve": "^1.19.0", + "rollup-pluginutils": "^2.8.2", + "safe-identifier": "^0.4.2", + "style-inject": "^0.3.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + } + } + }, + "rollup-plugin-sourcemaps": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz", + "integrity": "sha1-YhJaqUCHqt97g+9N+vYptHMTXoc=", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.0.1", + "source-map-resolve": "^0.5.0" + }, + "dependencies": { + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", + "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + } + }, + "rollup-plugin-typescript2": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.26.0.tgz", + "integrity": "sha512-lUK7XZVG77tu8dmv1L/0LZFlavED/5Yo6e4iMMl6fdox/yKdj4IFRRPPJEXNdmEaT1nDQQeCi7b5IwKHffMNeg==", + "dev": true, + "requires": { + "find-cache-dir": "^3.2.0", + "fs-extra": "8.1.0", + "resolve": "1.15.1", + "rollup-pluginutils": "2.8.2", + "tslib": "1.10.0" + }, + "dependencies": { + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-identifier": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", + "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-inject": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", + "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", + "dev": true + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "ts-jest": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.3.0.tgz", + "integrity": "sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "requires": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tsdx": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/tsdx/-/tsdx-0.13.3.tgz", + "integrity": "sha512-IzEzSygWpGC/E6UQ1rPxRRpeRLPQ3RBSmisTcX2p9PKFItrwG50MaW8DfVDIolkk4Xt9cYUfgjJ+g01qN2gMYQ==", + "dev": true, + "requires": { + "@babel/core": "^7.4.4", + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.4.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.7.4", + "@babel/plugin-proposal-optional-chaining": "^7.7.5", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-runtime": "^7.6.0", + "@babel/polyfill": "^7.4.4", + "@babel/preset-env": "^7.4.4", + "@rollup/plugin-commonjs": "^11.0.0", + "@rollup/plugin-json": "^4.0.0", + "@rollup/plugin-node-resolve": "^7.1.0", + "@rollup/plugin-replace": "^2.2.1", + "@types/jest": "^24.0.15", + "@typescript-eslint/eslint-plugin": "^2.12.0", + "@typescript-eslint/parser": "^2.12.0", + "ansi-escapes": "^4.2.1", + "asyncro": "^3.0.0", + "babel-eslint": "^10.0.3", + "babel-plugin-annotate-pure-calls": "^0.4.0", + "babel-plugin-dev-expression": "^0.2.1", + "babel-plugin-macros": "^2.6.1", + "babel-plugin-transform-async-to-promises": "^0.8.14", + "babel-plugin-transform-rename-import": "^2.3.0", + "babel-traverse": "^6.26.0", + "babylon": "^6.18.0", + "camelcase": "^5.2.0", + "chalk": "^2.4.2", + "enquirer": "^2.3.4", + "eslint": "^6.1.0", + "eslint-config-prettier": "^6.0.0", + "eslint-config-react-app": "^5.0.2", + "eslint-plugin-flowtype": "^3.13.0", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-prettier": "^3.1.0", + "eslint-plugin-react": "^7.14.3", + "eslint-plugin-react-hooks": "^2.2.0", + "execa": "3.2.0", + "fs-extra": "^8.0.1", + "jest": "^24.8.0", + "jest-watch-typeahead": "^0.4.0", + "jpjs": "^1.2.1", + "lodash.merge": "^4.6.2", + "ora": "^3.4.0", + "pascal-case": "^2.0.1", + "prettier": "^1.19.1", + "progress-estimator": "^0.2.2", + "rollup": "^1.32.1", + "rollup-plugin-babel": "^4.3.2", + "rollup-plugin-sourcemaps": "^0.4.2", + "rollup-plugin-terser": "^5.1.2", + "rollup-plugin-typescript2": "^0.26.0", + "sade": "^1.4.2", + "semver": "^7.1.1", + "shelljs": "^0.8.3", + "tiny-glob": "^0.2.6", + "ts-jest": "^24.0.2", + "tslib": "^1.9.3", + "typescript": "^3.7.3" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", + "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", + "dev": true, + "requires": { + "jest-diff": "^24.3.0" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "execa": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.2.0.tgz", + "integrity": "sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==", + "dev": true, + "requires": { + "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", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", + "dev": true, + "requires": { + "upper-case": "^1.1.1" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vue-jest": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.7.tgz", + "integrity": "sha512-PIOxFM+wsBMry26ZpfBvUQ/DGH2hvp5khDQ1n51g3bN0TwFwTy4J85XVfxTRMukqHji/GnAoGUnlZ5Ao73K62w==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", + "chalk": "^2.1.0", + "deasync": "^0.1.15", + "extract-from-css": "^0.4.4", + "find-babel-config": "^1.1.0", + "js-beautify": "^1.6.14", + "node-cache": "^4.1.1", + "object-assign": "^4.1.1", + "source-map": "^0.5.6", + "tsconfig": "^7.0.0", + "vue-template-es2015-compiler": "^1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/packages/vue-prism-editor/package.json b/packages/vue-prism-editor/package.json index 9a059db..fc280c2 100644 --- a/packages/vue-prism-editor/package.json +++ b/packages/vue-prism-editor/package.json @@ -45,8 +45,9 @@ "@types/prismjs": "^1.16.1", "@vue/cli-plugin-unit-jest": "^4.4.4", "jest-environment-jsdom-sixteen": "^1.0.3", + "postcss": "^8.4.12", "prismjs": "^1.20.0", - "rollup-plugin-postcss": "^3.1.2", + "rollup-plugin-postcss": "^4.0.2", "tsdx": "^0.13.2", "tslib": "^2.0.0", "typescript": "^3.9.3", diff --git a/packages/vue-prism-editor/src/Editor.ts b/packages/vue-prism-editor/src/Editor.ts index b15d316..5f5669e 100644 --- a/packages/vue-prism-editor/src/Editor.ts +++ b/packages/vue-prism-editor/src/Editor.ts @@ -7,12 +7,16 @@ const KEYCODE_BACKSPACE = 8; const KEYCODE_Y = 89; const KEYCODE_Z = 90; const KEYCODE_M = 77; -const KEYCODE_PARENS = 57; -const KEYCODE_BRACKETS = 219; -const KEYCODE_QUOTE = 222; -const KEYCODE_BACK_QUOTE = 192; const KEYCODE_ESCAPE = 27; +const BRACKET_PAIRS: {[opening: string]: string} = { + '(':')', + '{':'}', + '[':']', + '"':'"', + "'":"'", +}; + const HISTORY_LIMIT = 100; const HISTORY_TIME_GAP = 3000; @@ -40,6 +44,11 @@ export interface History { stack: Array; offset: number; } +interface AutocompleteEntry { + text: string + overlap: number + label?: string +} export const PrismEditor = Vue.extend({ props: { @@ -79,6 +88,12 @@ export const PrismEditor = Vue.extend({ type: String, default: '', }, + autocomplete: { + type: Function, + default() { + return [] + } + } }, data() { return { @@ -89,6 +104,10 @@ export const PrismEditor = Vue.extend({ } as History, lineNumbersHeight: '20px', codeData: '', + + autocompleteOpen: false, + autocompleteIndex: 0, + autocompleteData: [] as AutocompleteEntry[] }; }, watch: { @@ -118,6 +137,12 @@ export const PrismEditor = Vue.extend({ this.setLineNumbersHeight(); }); }, + autocompleteIndex() { + Vue.nextTick(() => { + let node = this.$el.querySelector('ul.prism-editor__autocomplete > li.selected'); + if (node) node.scrollIntoView({block: 'nearest'}); + }) + }, }, computed: { isEmpty(): boolean { @@ -132,6 +157,19 @@ export const PrismEditor = Vue.extend({ const totalLines = this.codeData.split(/\r\n|\n/).length; return totalLines; }, + cursorOffset() { + let text: string = this.codeData; + let input = this.$refs.textarea as HTMLTextAreaElement; + let wrapper = this.$refs.wrapper as HTMLDivElement; + let lines = text.substring(0, input.selectionEnd || 0).split(/\r\n|\n/); + let font_size = parseFloat(getComputedStyle(input).getPropertyValue('font-size')); + let line = lines.length; + let column = lines[lines.length-1].length; + return [ + Math.min((column * 8.85 * (font_size / 16)) - wrapper.scrollLeft, wrapper.clientWidth - Math.min(240, wrapper.clientWidth)), + (line * 24.0 * (font_size / 16)) + 2 - wrapper.scrollTop, + ] + }, }, mounted() { this._recordCurrentState(); @@ -139,6 +177,52 @@ export const PrismEditor = Vue.extend({ }, methods: { + updateAutocompleteData() { + let input = this.$refs.textarea as HTMLTextAreaElement; + let data: AutocompleteEntry[] = typeof this.autocomplete == 'function' ? this.autocomplete(this.codeData, input.selectionEnd) : []; + let old_length = this.autocompleteData.length; + this.autocompleteData.splice(0, Infinity, ...data); + this.autocompleteOpen = true; + this.autocompleteIndex = Math.max(0, Math.min(this.autocompleteIndex, this.autocompleteData.length-1)); + if (old_length > this.autocompleteData.length) this.autocompleteIndex = 0; + }, + acceptAutocomplete(event: Event, option?: number) { + event.preventDefault() + if (option == undefined) option = this.autocompleteIndex; + + let input = this.$refs.textarea as HTMLTextAreaElement; + let wrapper = this.$refs.wrapper as HTMLDivElement; + let suggestion = this.autocompleteData[option] || this.autocompleteData[0]; + if (!suggestion) return; + + let overlap = suggestion.overlap || 0; + let new_text = [ + this.codeData.substr(0, input.selectionEnd - overlap), + suggestion.text, + this.codeData.substring(input.selectionEnd), + ] + let result: string = new_text.join(''); + let cursor_pos = input.selectionEnd - overlap + suggestion.text.length + (suggestion.text.endsWith(')') ? -1 : 0); + input.selectionStart = input.selectionEnd = cursor_pos; + + this._applyEdits({ + value: result, + selectionStart: cursor_pos, + selectionEnd: cursor_pos, + }); + let inserted_characters = suggestion.text.length - suggestion.overlap; + Vue.nextTick(() => { + wrapper.scrollLeft += inserted_characters * 8.85; + }) + + if (suggestion.text.endsWith('.')) { + setTimeout(() => { + this.updateAutocompleteData(); + }, 1); + } else { + this.autocompleteOpen = false; + } + }, setLineNumbersHeight(): void { this.lineNumbersHeight = getComputedStyle(this.$refs.pre as HTMLTextAreaElement).height; }, @@ -181,6 +265,15 @@ export const PrismEditor = Vue.extend({ _getLines(text: string, position: number): Array { return text.substring(0, position).split('\n'); }, + _recordStateIfChange(): void { + if (this.history.stack[this.history.offset].value != this.codeData) { + this._recordChange({ + value: this.codeData, + selectionStart: this.codeData.length, + selectionEnd: this.codeData.length, + }); + } + }, _applyEdits(record: Record): void { // Save last selection state const input = this.$refs.textarea as HTMLTextAreaElement; @@ -315,6 +408,35 @@ export const PrismEditor = Vue.extend({ } } + if (e.keyCode === 9 && this.autocompleteData.length && this.autocompleteOpen) { + this.acceptAutocomplete(e); + e.preventDefault(); + e.stopPropagation(); + return; + } + if (e.keyCode === 27) { + // Escape + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteOpen = false; + return; + } + } else if (e.keyCode === 38) { + // Up + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteIndex = (this.autocompleteIndex ? this.autocompleteIndex : this.autocompleteData.length) - 1; + return; + } + } else if (e.keyCode === 40) { + // Down + if (this.autocompleteData.length && this.autocompleteOpen) { + e.preventDefault(); + this.autocompleteIndex = (this.autocompleteIndex + 1) % this.autocompleteData.length; + return; + } + } + if (e.keyCode === KEYCODE_ESCAPE) { (e.target).blur(); this.$emit('blur', e); @@ -412,8 +534,11 @@ export const PrismEditor = Vue.extend({ }); } } else if (e.keyCode === KEYCODE_ENTER) { - // Ignore selections - if (selectionStart === selectionEnd) { + + if (this.autocompleteData.length && this.autocompleteOpen) { + this.acceptAutocomplete(e); + + } else if (selectionStart === selectionEnd) { // Get the current line const line = this._getLines(value, selectionStart).pop(); const matches = line?.match(/^\s+/); @@ -434,48 +559,21 @@ export const PrismEditor = Vue.extend({ }); } } - } else if ( - e.keyCode === KEYCODE_PARENS || - e.keyCode === KEYCODE_BRACKETS || - e.keyCode === KEYCODE_QUOTE || - e.keyCode === KEYCODE_BACK_QUOTE - ) { - let chars; - - if (e.keyCode === KEYCODE_PARENS && e.shiftKey) { - chars = ['(', ')']; - } else if (e.keyCode === KEYCODE_BRACKETS) { - if (e.shiftKey) { - chars = ['{', '}']; - } else { - chars = ['[', ']']; - } - } else if (e.keyCode === KEYCODE_QUOTE) { - if (e.shiftKey) { - chars = ['"', '"']; - } else { - chars = ["'", "'"]; - } - } else if (e.keyCode === KEYCODE_BACK_QUOTE && !e.shiftKey) { - chars = ['`', '`']; - } - - // console.log(isMacLike, "navigator" in global && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)); - + } else if (BRACKET_PAIRS[e.key]) { // If text is selected, wrap them in the characters - if (selectionStart !== selectionEnd && chars) { + if (selectionStart !== selectionEnd) { e.preventDefault(); this._applyEdits({ value: value.substring(0, selectionStart) + - chars[0] + + e.key + value.substring(selectionStart, selectionEnd) + - chars[1] + + BRACKET_PAIRS[e.key] + value.substring(selectionEnd), // Update caret position - selectionStart, - selectionEnd: selectionEnd + 2, + selectionStart: selectionStart + 1, + selectionEnd: selectionEnd + 1, }); } } else if ( @@ -510,6 +608,11 @@ export const PrismEditor = Vue.extend({ // Toggle capturing tab key so users can focus away this.capture = !this.capture; } + if (e.keyCode !== 13 && e.keyCode !== 9) { + setTimeout(() => { + this.updateAutocompleteData(); + }, 1); + } }, }, render(h): VNode { @@ -542,21 +645,43 @@ export const PrismEditor = Vue.extend({ ] ); + const autocompleteList = (this.autocompleteOpen && this.autocompleteData.length) ? h( + 'ul', + { + staticClass: 'prism-editor__autocomplete', + style: {left: this.cursorOffset[0] + 'px', top: this.cursorOffset[1] + 'px'} + }, + this.autocompleteData.map((data: AutocompleteEntry, i) => { + return h('li', { + key: data.text, + class: {selected: i == this.autocompleteIndex}, + on: { + mousedown: ($event: MouseEvent) => { + this.acceptAutocomplete($event, i); + } + } + }, [data.label || data.text]); + }) + ) : undefined; + const textarea = h('textarea', { ref: 'textarea', on: { input: this.handleChange, keydown: this.handleKeyDown, click: ($event: MouseEvent) => { + this.autocompleteOpen = false; this.$emit('click', $event); }, keyup: ($event: KeyboardEvent) => { this.$emit('keyup', $event); }, focus: ($event: FocusEvent) => { + this._recordStateIfChange(); this.$emit('focus', $event); }, blur: ($event: FocusEvent) => { + this.autocompleteOpen = false; this.$emit('blur', $event); }, }, @@ -589,6 +714,7 @@ export const PrismEditor = Vue.extend({ }, }); const editorContainer = h('div', { staticClass: 'prism-editor__container' }, [textarea, preview]); - return h('div', { staticClass: 'prism-editor-wrapper' }, [this.lineNumbers && lineNumbers, editorContainer]); + const wrapper = h('div', { staticClass: 'prism-editor-wrapper', ref: 'wrapper' }, [this.lineNumbers && lineNumbers, editorContainer]); + return h('div', { staticClass: 'prism-editor-component' }, [wrapper, autocompleteList]); }, }); diff --git a/packages/vue-prism-editor/src/styles.css b/packages/vue-prism-editor/src/styles.css index 7426cfd..68e051e 100644 --- a/packages/vue-prism-editor/src/styles.css +++ b/packages/vue-prism-editor/src/styles.css @@ -1,11 +1,23 @@ + +.prism-editor-component { + width: 100%; + height: auto; + max-height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + align-items: flex-start; + position: relative; +} + .prism-editor-wrapper { width: 100%; height: 100%; - display: flex; - align-items: flex-start; + display: block; overflow: auto; tab-size: 1.5em; -moz-tab-size: 1.5em; +} @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { .prism-editor__textarea { @@ -16,14 +28,31 @@ color: transparent !important; } } + .prism-editor__autocomplete { + position: absolute; + min-width: 100px; + width: 100%; + max-width: 250px; + top: 25px; + min-height: 12px; + max-height: 180px; + overflow-y: auto; + z-index: 4; + } + .prism-editor__autocomplete li { + overflow: hidden; + white-space: nowrap; + padding: 1px 5px; + cursor: pointer; + } .prism-editor__container { position: relative; text-align: left; box-sizing: border-box; padding: 0; - overflow: hidden; - width: 100%; + width: max-content; + min-width: 100%; } .prism-editor__line-numbers { @@ -84,5 +113,6 @@ .prism-editor__editor { position: relative; pointer-events: none; + overflow: visible; } -} +