1
0
mirror of https://github.com/WeBankFinTech/fes.js.git synced 2025-04-06 03:59:53 +08:00

feat(fes-plugin-monaco-editor): 新增monaco-editor插件,提供编辑器能力

This commit is contained in:
harrywan 2021-07-22 20:46:49 +08:00
parent 365f89d1a2
commit 74cf05e15e
16 changed files with 668 additions and 259 deletions

@ -1,10 +1,7 @@
import { readdirSync } from "fs";
import { join } from "path";
// utils must build before core
// runtime must build before renderer-react
const headPkgs = [
const pkgs = [
"fes-runtime",
"fes-compiler",
"fes",
@ -20,19 +17,14 @@ const headPkgs = [
"fes-plugin-vuex",
"create-fes-app",
"fes-plugin-qiankun",
"fes-plugin-sass"
"fes-plugin-sass",
"fes-plugin-monaco-editor"
];
const tailPkgs = [];
// const otherPkgs = readdirSync(join(__dirname, 'packages')).filter(
// (pkg) =>
// pkg.charAt(0) !== '.' && !headPkgs.includes(pkg) && !tailPkgs.includes(pkg),
// );
const otherPkgs = [];
export default {
target: "node",
cjs: { type: "babel", lazy: false },
disableTypeCheck: true,
pkgs: [...headPkgs, ...otherPkgs, ...tailPkgs],
pkgs,
};

4
.prettierrc Normal file

@ -0,0 +1,4 @@
{
"singleQuote": true,
"trailingComma": "none"
}

@ -14,7 +14,8 @@
"ver": "lerna version patch --no-changelog --no-commit-hooks --no-private",
"release": "father-build && lerna publish from-git",
"docs:dev": "vuepress dev docs --clean-cache",
"docs:build": "vuepress build docs --clean-cache"
"docs:build": "vuepress build docs --clean-cache",
"lint": "eslint -c ./.eslintrc.js --ext .js,.jsx,.vue,.ts"
},
"license": "MIT",
"keywords": [
@ -34,7 +35,7 @@
"@vuepress/plugin-pwa": "^2.0.0-alpha.18",
"@vuepress/plugin-pwa-popup": "^2.0.0-alpha.18",
"@vuepress/theme-vue": "^2.0.0-alpha.18",
"@webank/eslint-config-webank": "0.2.10",
"@webank/eslint-config-webank": "0.3.0",
"commitizen": "^4.2.1",
"cz-conventional-changelog": "^3.3.0",
"esbuild-loader": "^2.7.0",

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020-present webank
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -0,0 +1,40 @@
{
"name": "@fesjs/plugin-monaco-editor",
"version": "2.0.0-rc.0",
"description": "@fesjs/plugin-monaco-editor",
"main": "lib/index.js",
"files": [
"lib"
],
"scripts": {
},
"repository": {
"type": "git",
"url": "git+https://github.com/WeBankFinTech/fes.js.git",
"directory": "packages/fes-plugin-monaco-editor"
},
"keywords": [
"fes"
],
"author": "harrywan",
"license": "MIT",
"bugs": {
"url": "https://github.com/WeBankFinTech/fes.js/issues"
},
"homepage": "https://github.com/WeBankFinTech/fes.js#readme",
"publishConfig": {
"access": "public"
},
"dependencies": {
"@umijs/utils": "3.3.3",
"lodash": "^4.17.15",
"monaco-editor": "^0.20.0",
"monaco-editor-webpack-plugin": "^1.9.1"
},
"devDependencies": {
},
"peerDependencies": {
"@webank/fes": "^2.0.0",
"vue": "^3.0.5"
}
}

@ -0,0 +1,85 @@
import { readFileSync } from 'fs';
import { join } from 'path';
const namespace = 'plugin-monaco-editor';
export default (api) => {
const {
utils: { Mustache }
} = api;
api.describe({
key: 'monacoEditor',
config: {
schema(joi) {
return joi.object().keys({
filename: joi.string(),
publicPath: joi.string(),
languages: joi.array(),
features: joi.array(),
globalAPI: joi.boolean()
});
}
},
default: {
}
});
const absoluteFilePath = join(namespace, 'core.js');
const absRuntimeFilePath = join(namespace, 'runtime.js');
const absLoaderFilePath = join(namespace, 'loader.js');
api.onGenerateFiles(() => {
// 文件写出
api.writeTmpFile({
path: absoluteFilePath,
content: Mustache.render(
readFileSync(join(__dirname, 'runtime/core.tpl'), 'utf-8'),
{
}
)
});
api.writeTmpFile({
path: absRuntimeFilePath,
content: Mustache.render(
readFileSync(join(__dirname, 'runtime/runtime.tpl'), 'utf-8')
)
});
api.writeTmpFile({
path: absLoaderFilePath,
content: Mustache.render(
readFileSync(join(__dirname, 'runtime/loader.tpl'), 'utf-8')
)
});
api.copyTmpFiles({
namespace,
path: join(__dirname, 'runtime'),
ignore: ['.tpl']
});
});
api.addPluginExports(() => [
{
specifiers: ['monaco', 'MonacoEditor'],
source: absoluteFilePath
}
]);
api.addRuntimePluginKey(() => 'monacoEditor');
api.addRuntimePlugin(() => `@@/${absRuntimeFilePath}`);
api.chainWebpack((webpackConfig) => {
webpackConfig
.plugin('monaco-editor')
.use(require('monaco-editor-webpack-plugin'), [
api.config?.monacoEditor || {}
]);
return webpackConfig;
});
};

@ -0,0 +1,6 @@
import Editor from './editor';
import _monaco from './loader';
export const MonacoEditor = Editor;
export const monaco = _monaco;

@ -0,0 +1,304 @@
<template>
<section ref="containRef" :style="style" class="editor" />
</template>
<script>
import {
computed, ref, watch, onMounted, onBeforeUnmount
} from 'vue';
import { merge, debounce } from 'lodash';
// eslint-disable-next-line
import monaco from './loader';
const processSize = function (size) {
return !/^\d+$/.test(size) ? size : `${size}px`;
};
export default {
name: 'MonacoEditor',
props: {
theme: {
type: String,
default: 'defaultTheme'
},
language: {
type: String,
default: ''
},
height: {
type: [String, Number],
default: '100%'
},
width: {
type: [String, Number],
default: '100%'
},
modelValue: String,
readOnly: Boolean,
options: Object,
check: {
type: Boolean,
default: false
}
},
emits: ['update:modelValue', 'onload', 'scrollChange'],
setup(props, { emit }) {
const containRef = ref(null);
const style = computed(() => {
const fixedWidth = processSize(props.width);
const fixedHeight = processSize(props.height);
return {
width: fixedWidth,
height: fixedHeight
};
});
const currentConfig = computed(() => {
const config = merge(
{
automaticLayout: true,
scrollBeyondLastLine: false,
minimap: {
enabled: false
},
glyphMargin: true,
fontSize: '14px',
contextmenu: true
},
props.options,
{
readOnly: props.readOnly
}
);
return config;
});
let editor;
let editorModel;
const getValue = () => {
if (!editor) {
return '';
}
const text = editor.getValue({
lineEnding: '\n',
preserveBOM: false
});
//
if (props.check) {
if (props.language === 'json') {
try {
JSON.parse(text);
} catch (e) {
return props.modelValue;
}
}
}
return text;
};
watch(currentConfig, () => {
if (editor) {
editor.updateOptions(currentConfig.value);
}
});
watch(() => props.language, (newVal) => {
if (editorModel) {
monaco.editor.setModelLanguage(editorModel, newVal);
}
});
watch(() => props.theme, (newVal) => {
if (editor) {
monaco.editor.setTheme(newVal);
}
});
watch([() => props.width, () => props.height], () => {
if (editor) {
editor.layout();
}
});
watch(
() => props.modelValue,
(newValue) => {
if (!editor) {
return;
}
if (newValue === getValue()) {
return;
}
const readOnly = editor.getRawOptions().readOnly;
if (readOnly) {
// editor.setValue model.setValue
editor.setValue(newValue);
} else {
//
const range = editorModel.getFullModelRange();
const text = newValue;
const op = {
identifier: {
major: 1,
minor: 1
},
range,
text,
forceMoveMarkers: true
};
editor.executeEdits('insertValue', [op]);
}
}
);
const initMonaco = () => {
if (!containRef.value) {
return;
}
editor = monaco.editor.create(containRef.value, {
...currentConfig.value,
language: props.language,
theme: props.theme,
value: props.modelValue
});
editorModel = editor.getModel();
emit('onload', {
monaco,
editor,
editorModel
});
editor.onDidScrollChange(
debounce((e) => {
emit('scrollChange', e);
}),
300
);
//
editor.onDidChangeModelContent(
debounce(() => {
emit('update:modelValue', getValue());
}),
100
);
//
editor.onDidBlurEditorText(() => {
//
editor.trigger('anyString', 'editor.action.formatDocument');
});
};
const undo = () => {
if (!editor) return;
editor.trigger('anyString', 'undo');
};
const redo = () => {
if (!editor) return;
editor.trigger('anyString', 'redo');
};
/**
* 保存的编辑状态 ViewState
* Yes, editor.saveViewState stores:
cursor position
scroll location
folded sections
for a certain model when it is connected to an editor instance.
Once the same model is connected to the same or a different editor instance, editor.restoreViewState can be used to restore the above listed state.
There are very many things that influence how rendering occurs:
the current theme
the current wrapping settings set on the editor
the enablement of a minimap, etc.
the current language configured for a model
etc.
*/
const saveViewState = () => {
if (!editorModel) return;
editorModel.viewState = editor.saveViewState();
};
// ViewState
const restoreViewState = () => {
if (editorModel && editorModel.viewState) {
editor.restoreViewState(editorModel.viewState);
}
};
//
const getValueInRange = () => {
if (!editor) return;
const selection = editor.getSelection();
return selection.isEmpty()
? null
: editorModel.getValueInRange(selection);
};
//
const insertValueIntoEditor = (value) => {
if (!editor) {
return;
}
const SelectedRange = editor.getSelection();
let range = null;
if (SelectedRange) {
range = new monaco.Range(
SelectedRange.startLineNumber,
SelectedRange.startColumn,
SelectedRange.endLineNumber,
SelectedRange.endColumn
);
const text = value;
const op = {
identifier: {
major: 1,
minor: 1
},
range,
text,
forceMoveMarkers: true
};
editor.executeEdits('insertValue', [op]);
}
};
onMounted(() => {
initMonaco();
});
onBeforeUnmount(() => {
// editorgc
editor && editor.dispose();
editorModel && editorModel.dispose();
});
return {
containRef,
style,
undo,
redo,
saveViewState,
restoreViewState,
getValueInRange,
insertValueIntoEditor
};
}
};
</script>
<style lang="less">
.editor {
height: 100%;
width: 100%;
.monaco-editor.rename-box {
left: 0;
top: 0;
}
.glyphMarginErrorClass {
background: #ff5500;
}
.contentErrorClass {
background: rgba(#ff5500, 0.2);
}
}
</style>

@ -0,0 +1,7 @@
import * as monaco from 'monaco-editor';
import defaultTheme from './theme/default';
// 默认主题
defaultTheme.register(monaco);
export default monaco;

@ -0,0 +1,111 @@
/* eslint-disable max-len */
export default {
register(monaco) {
monaco.editor.defineTheme('defaultTheme', {
base: 'vs',
inherit: true,
rules: [
{
foreground: 'c41a16',
token: 'string'
},
{
foreground: '1c00cf',
token: 'constant.numeric'
},
{
foreground: 'aa0d91',
token: 'keyword'
},
{
foreground: '000000',
token: 'keyword.operator'
},
{
foreground: 'aa0d91',
token: 'constant.language'
},
{
foreground: '990000',
token: 'support.class.exception'
},
{
foreground: '000000',
token: 'entity.name.function'
},
{
fontStyle: 'bold underline',
token: 'entity.name.type'
},
{
fontStyle: 'italic',
token: 'variable.parameter'
},
{
foreground: '007400',
token: 'comment'
},
{
foreground: 'ff0000',
token: 'invalid'
},
{
background: 'e71a1100',
token: 'invalid.deprecated.trailing-whitespace'
},
{
foreground: '000000',
background: 'fafafafc',
token: 'text source'
},
{
foreground: 'aa0d91',
token: 'meta.tag'
},
{
foreground: 'aa0d91',
token: 'declaration.tag'
},
{
foreground: '000000',
fontStyle: 'bold',
token: 'support'
},
{
foreground: 'aa0d91',
token: 'storage'
},
{
fontStyle: 'bold underline',
token: 'entity.name.section'
},
{
foreground: '000000',
fontStyle: 'bold',
token: 'entity.name.function.frame'
},
{
foreground: '333333',
token: 'meta.tag.preprocessor.xml'
},
{
foreground: '994500',
fontStyle: 'italic',
token: 'entity.other.attribute-name'
},
{
foreground: '881280',
token: 'entity.name.tag'
}
],
colors: {
'editor.foreground': '#000000',
'editor.background': '#FFFFFF',
'editor.selectionBackground': '#BAD6FD',
'editor.lineHighlightBackground': '#0000001A',
'editorCursor.foreground': '#000000',
'editorWhitespace.foreground': '#B3B3B3F4'
}
});
}
};

@ -19,7 +19,7 @@
"keywords": [
"fes"
],
"author": "michaelxxie",
"author": "michaelxxie、harrywan",
"license": "MIT",
"bugs": {
"url": "https://github.com/WeBankFinTech/fes.js/issues"
@ -32,7 +32,7 @@
"@umijs/utils": "3.3.3",
"address": "^1.1.2",
"lodash": "^4.17.15",
"qiankun": "2.3.4"
"qiankun": "^2.4.4"
},
"devDependencies": {
"npm-run-all": "^4.1.5"

@ -61,7 +61,10 @@ export default {
name: "test",
},
],
},
},{
name: 'editor',
icon: "/wine-outline.svg"
}
],
},
locale: {
@ -82,5 +85,8 @@ export default {
dynamicImport: true,
extraBabelPlugins: [
['import', { libraryName: 'ant-design-vue', libraryDirectory: 'es', style: 'css' }, 'ant-design-vue'],
]
],
monacoEditor: {
// languages: ['javascript', 'typescript', 'html', 'json']
}
};

@ -57,6 +57,7 @@
"@fesjs/plugin-request": "^2.0.0",
"@fesjs/plugin-qiankun": "^2.0.0",
"@fesjs/plugin-sass": "^2.0.0",
"@fesjs/plugin-monaco-editor": "^2.0.0-rc.0",
"ant-design-vue": "2.0.0",
"vue": "^3.0.5",
"vuex": "^4.0.0"

@ -0,0 +1,41 @@
<template>
<monaco-editor
ref="editorRef"
v-model="json"
:language="language"
height="200px"
check
/>
{{json}}
</template>
<config>
{
"name": "editor",
"title": "monaco-editor"
}
</config>
<script>
import { onMounted, ref } from 'vue';
import { MonacoEditor } from '@fesjs/fes';
export default {
components: {
MonacoEditor
},
setup() {
const editorRef = ref();
const json = ref('');
const language = ref('json');
onMounted(() => {
setTimeout(() => {
language.value = 'html';
}, 3000);
});
return {
editorRef,
json,
language
};
}
};
</script>

272
yarn.lock

@ -478,7 +478,7 @@
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0"
integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==
"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5", "@babel/parser@^7.12.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.12.5", "@babel/parser@^7.13.0", "@babel/parser@^7.13.4", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0":
"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5", "@babel/parser@^7.12.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.3", "@babel/parser@^7.12.5", "@babel/parser@^7.13.0", "@babel/parser@^7.13.4", "@babel/parser@^7.4.3":
version "7.13.9"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.13.9.tgz#ca34cb95e1c2dd126863a84465ae8ef66114be99"
integrity sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==
@ -1657,7 +1657,7 @@
globals "^11.1.0"
lodash "^4.17.19"
"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0":
"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.4.3":
version "7.13.0"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc"
integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==
@ -1690,7 +1690,7 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.5", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.5", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.5", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.5", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4":
version "7.13.0"
resolved "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80"
integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==
@ -1911,21 +1911,6 @@
"@docsearch/css" "3.0.0-alpha.31"
algoliasearch "^4.0.0"
"@eslint/eslintrc@^0.4.0":
version "0.4.0"
resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547"
integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
espree "^7.3.0"
globals "^12.1.0"
ignore "^4.0.6"
import-fresh "^3.2.1"
js-yaml "^3.13.1"
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
"@eslint/eslintrc@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14"
@ -4443,21 +4428,6 @@
ora "^5.3.0"
upath "^2.0.1"
"@webank/eslint-config-webank@0.2.10":
version "0.2.10"
resolved "https://registry.npmjs.org/@webank/eslint-config-webank/-/eslint-config-webank-0.2.10.tgz#43538752a051abe8019933601aac097cb081938f"
integrity sha512-DAA71s0V+ib4dAL/w7Rj3FMUljcacgTKPNZWymv4YWkUwbHhWJApYlMw1d864MiPEg4PLQtaiAtHokERoEWOSQ==
dependencies:
babel-eslint "^10.1.0"
confusing-browser-globals "^1.0.10"
eslint "^7.15.0"
eslint-plugin-angular "^4.0.1"
eslint-plugin-html "^6.1.1"
eslint-plugin-import "^2.18.2"
eslint-plugin-node "^11.1.0"
eslint-plugin-vue "^7.5.0"
vue-eslint-parser "^7.4.1"
"@webank/eslint-config-webank@0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@webank/eslint-config-webank/-/eslint-config-webank-0.3.0.tgz#250e0eb726958d038529156f6be175b8766ae1d2"
@ -4757,16 +4727,6 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^7.0.2:
version "7.1.1"
resolved "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84"
integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"
ajv@^8.0.1:
version "8.5.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b"
@ -5061,7 +5021,7 @@ array-ify@^1.0.0:
resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
array-includes@^3.1.1, array-includes@^3.1.3:
array-includes@^3.1.3:
version "3.1.3"
resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a"
integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==
@ -5104,7 +5064,7 @@ array-unique@^0.3.2:
resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.4:
array.prototype.flat@^1.2.4:
version "1.2.4"
resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123"
integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==
@ -5241,18 +5201,6 @@ babel-core@^7.0.0-bridge.0:
resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
babel-eslint@^10.1.0:
version "10.1.0"
resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
dependencies:
"@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@^26.6.3:
version "26.6.3"
resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056"
@ -6456,11 +6404,6 @@ consolidate@^0.16.0:
dependencies:
bluebird "^3.7.2"
contains-path@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
content-disposition@0.5.3:
version "0.5.3"
resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
@ -7407,14 +7350,6 @@ dns-txt@^2.0.2:
dependencies:
buffer-indexof "^1.0.0"
doctrine@1.5.0:
version "1.5.0"
resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
dependencies:
esutils "^2.0.2"
isarray "^1.0.0"
doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
@ -7500,13 +7435,6 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
domhandler@^3.3.0:
version "3.3.0"
resolved "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
dependencies:
domelementtype "^2.0.1"
domhandler@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e"
@ -7537,15 +7465,6 @@ domutils@^1.5.1, domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"
domutils@^2.4.2:
version "2.4.4"
resolved "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3"
integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==
dependencies:
dom-serializer "^1.0.1"
domelementtype "^2.0.1"
domhandler "^4.0.0"
domutils@^2.4.3, domutils@^2.5.2:
version "2.6.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.6.0.tgz#2e15c04185d43fb16ae7057cb76433c6edb938b7"
@ -7864,14 +7783,6 @@ eslint-import-resolver-node@^0.3.4:
debug "^2.6.9"
resolve "^1.13.1"
eslint-module-utils@^2.6.0:
version "2.6.0"
resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
dependencies:
debug "^2.6.9"
pkg-dir "^2.0.0"
eslint-module-utils@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233"
@ -7893,13 +7804,6 @@ eslint-plugin-es@^3.0.0:
eslint-utils "^2.0.0"
regexpp "^3.0.0"
eslint-plugin-html@^6.1.1:
version "6.1.1"
resolved "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.1.1.tgz#95aee151900b9bb2da5fa017b45cc64456a0a74e"
integrity sha512-JSe3ZDb7feKMnQM27XWGeoIjvP4oWQMJD9GZ6wW67J7/plVL87NK72RBwlvfc3tTZiYUchHhxAwtgEd1GdofDA==
dependencies:
htmlparser2 "^5.0.1"
eslint-plugin-html@^6.1.2:
version "6.1.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-6.1.2.tgz#fa26e4804428956c80e963b6499c192061c2daf3"
@ -7907,25 +7811,6 @@ eslint-plugin-html@^6.1.2:
dependencies:
htmlparser2 "^6.0.1"
eslint-plugin-import@^2.18.2:
version "2.22.1"
resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702"
integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==
dependencies:
array-includes "^3.1.1"
array.prototype.flat "^1.2.3"
contains-path "^0.1.0"
debug "^2.6.9"
doctrine "1.5.0"
eslint-import-resolver-node "^0.3.4"
eslint-module-utils "^2.6.0"
has "^1.0.3"
minimatch "^3.0.4"
object.values "^1.1.1"
read-pkg-up "^2.0.0"
resolve "^1.17.0"
tsconfig-paths "^3.9.0"
eslint-plugin-import@^2.22.1:
version "2.23.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.3.tgz#8a1b073289fff03c4af0f04b6df956b7d463e191"
@ -7959,16 +7844,6 @@ eslint-plugin-node@^11.1.0:
resolve "^1.10.1"
semver "^6.1.0"
eslint-plugin-vue@^7.5.0:
version "7.7.0"
resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.7.0.tgz#a90df4595e670821bf243bd2750ededdb74948b8"
integrity sha512-mYz4bpLGv5jx6YG/GvKkqbGSfV7uma2u1P3mLA41Q5vQl8W1MeuTneB8tfsLq6xxxesFubcrOC0BZBJ5R+eaCQ==
dependencies:
eslint-utils "^2.1.0"
natural-compare "^1.4.0"
semver "^7.3.2"
vue-eslint-parser "^7.6.0"
eslint-plugin-vue@^7.9.0:
version "7.9.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.9.0.tgz#f8e83a2a908f4c43fc8304f5401d4ff671f3d560"
@ -7994,7 +7869,7 @@ eslint-utils@^2.0.0, eslint-utils@^2.1.0:
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
version "1.3.0"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
@ -8009,49 +7884,6 @@ eslint-visitor-keys@^2.1.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint@^7.15.0:
version "7.21.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz#4ecd5b8c5b44f5dedc9b8a110b01bbfeb15d1c83"
integrity sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==
dependencies:
"@babel/code-frame" "7.12.11"
"@eslint/eslintrc" "^0.4.0"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.0.1"
doctrine "^3.0.0"
enquirer "^2.3.5"
eslint-scope "^5.1.1"
eslint-utils "^2.1.0"
eslint-visitor-keys "^2.0.0"
espree "^7.3.1"
esquery "^1.4.0"
esutils "^2.0.2"
file-entry-cache "^6.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"
is-glob "^4.0.0"
js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash "^4.17.20"
minimatch "^3.0.4"
natural-compare "^1.4.0"
optionator "^0.9.1"
progress "^2.0.0"
regexpp "^3.1.0"
semver "^7.2.1"
strip-ansi "^6.0.0"
strip-json-comments "^3.1.0"
table "^6.0.4"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
eslint@^7.26.0:
version "7.27.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.27.0.tgz#665a1506d8f95655c9274d84bd78f7166b07e9c7"
@ -9566,16 +9398,6 @@ htmlparser2@^3.10.1, htmlparser2@^3.9.1:
inherits "^2.0.1"
readable-stream "^3.1.1"
htmlparser2@^5.0.1:
version "5.0.1"
resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7"
integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==
dependencies:
domelementtype "^2.0.1"
domhandler "^3.3.0"
domutils "^2.4.2"
entities "^2.0.0"
htmlparser2@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
@ -10509,7 +10331,7 @@ is-yarn-global@^0.3.0:
resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
isarray@1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@ -11422,16 +11244,6 @@ load-json-file@^1.0.0:
pinkie-promise "^2.0.0"
strip-bom "^2.0.0"
load-json-file@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
dependencies:
graceful-fs "^4.1.2"
parse-json "^2.2.0"
pify "^2.0.0"
strip-bom "^3.0.0"
load-json-file@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
@ -12202,6 +12014,18 @@ moment@^2.27.0:
resolved "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
monaco-editor-webpack-plugin@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.9.1.tgz#eb4bbb1c5e5bfb554541c1ae1542e74c2a9f43fd"
integrity sha512-x7fx1w3i/uwZERIgztHAAK3VQMsL8+ku0lFXXbO81hKDg8IieACqjGEa2mqEueg0c/fX+wd0oI+75wB19KJAsA==
dependencies:
loader-utils "^1.2.3"
monaco-editor@^0.20.0:
version "0.20.0"
resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.20.0.tgz#5d5009343a550124426cb4d965a4d27a348b4dea"
integrity sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ==
move-concurrently@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@ -12690,7 +12514,7 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.3:
object.values@^1.1.0, object.values@^1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee"
integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==
@ -13207,13 +13031,6 @@ path-type@^1.0.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
path-type@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
dependencies:
pify "^2.0.0"
path-type@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
@ -14240,15 +14057,15 @@ q@^1.1.2, q@^1.5.1:
resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
qiankun@2.3.4:
version "2.3.4"
resolved "https://registry.yarnpkg.com/qiankun/-/qiankun-2.3.4.tgz#a6a6382c1e909a76f9aea1708ff46276432428f2"
integrity sha512-LJ3luGH0eAQ3xd7vH7xUtAS57eGUs4bMiCcFQx1OJ94XJ3VdKIb97jqT5p5ibOj82EPQdLJhVsB5+phm4iEXfw==
qiankun@^2.4.4:
version "2.4.4"
resolved "https://registry.yarnpkg.com/qiankun/-/qiankun-2.4.4.tgz#e98a1930af66fef9aa5a7573b789959cd742e65d"
integrity sha512-n7yrKge4po9SB6ykqyoX8JbNuDpo4G9C5V9agRy6IPWruPnyh4vxLb5UhTKVd1/CsVScP7V9gTMyy55EJFpzlA==
dependencies:
"@babel/runtime" "^7.10.5"
import-html-entry "^1.9.0"
lodash "^4.17.11"
single-spa "5.8.1"
single-spa "^5.9.2"
tslib "^1.10.0"
qs@6.7.0:
@ -14380,14 +14197,6 @@ read-pkg-up@^1.0.1:
find-up "^1.0.0"
read-pkg "^1.0.0"
read-pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
dependencies:
find-up "^2.0.0"
read-pkg "^2.0.0"
read-pkg-up@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
@ -14422,15 +14231,6 @@ read-pkg@^1.0.0:
normalize-package-data "^2.3.2"
path-type "^1.0.0"
read-pkg@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
dependencies:
load-json-file "^2.0.0"
normalize-package-data "^2.3.2"
path-type "^2.0.0"
read-pkg@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
@ -14819,7 +14619,7 @@ resolve@1.17.0:
dependencies:
path-parse "^1.0.6"
resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.16.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.16.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
version "1.20.0"
resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@ -15348,10 +15148,10 @@ simple-swizzle@^0.2.2:
dependencies:
is-arrayish "^0.3.1"
single-spa@5.8.1:
version "5.8.1"
resolved "https://registry.yarnpkg.com/single-spa/-/single-spa-5.8.1.tgz#86c2575e297e31d8f06945944ec97e31851a59ae"
integrity sha512-RlyLZ1IDIPdzI6mQPzCQnlgTt9jmbAXBZODmifoDut840wksPDSPhcSS8jXMpuUlqOidQiX2YuLVQSR9DEgsXw==
single-spa@^5.9.2:
version "5.9.3"
resolved "https://registry.yarnpkg.com/single-spa/-/single-spa-5.9.3.tgz#2d151cbb3b273629a5b27b30a3b8ca847dcba4c5"
integrity sha512-qMGraRzIBsodV6569Fob4cQ4/yQNrcZ5Achh3SAQDljmqUtjAZ7BAA7GAyO/l5eizb7GtTmVq9Di7ORyKw82CQ==
sirv@^1.0.7:
version "1.0.11"
@ -16064,16 +15864,6 @@ symbol-tree@^3.2.4:
resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
table@^6.0.4:
version "6.0.7"
resolved "https://registry.npmjs.org/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34"
integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==
dependencies:
ajv "^7.0.2"
lodash "^4.17.20"
slice-ansi "^4.0.0"
string-width "^4.2.0"
table@^6.0.9:
version "6.7.1"
resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
@ -17013,7 +16803,7 @@ vinyl@^2.0.0, vinyl@^2.1.0:
remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0"
vue-eslint-parser@^7.4.1, vue-eslint-parser@^7.6.0:
vue-eslint-parser@^7.6.0:
version "7.6.0"
resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz#01ea1a2932f581ff244336565d712801f8f72561"
integrity sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==