🔧 fix eslint config
This commit is contained in:
parent
62478abf95
commit
908558915d
@ -23,7 +23,7 @@ const updateGroupList = async ({ res, request }) => {
|
||||
let groupList = await readGroupList()
|
||||
let idx = groupList.findIndex(item => item.id === id)
|
||||
let group = { id, name, index: Number(index) || 0 }
|
||||
if (idx === -1) return res.fail({ data: false, msg: `分组ID${id}不存在` })
|
||||
if (idx === -1) return res.fail({ data: false, msg: `分组ID${ id }不存在` })
|
||||
groupList.splice(idx, 1, group)
|
||||
await writeGroupList(groupList)
|
||||
res.success({ data: '修改成功' })
|
||||
|
@ -11,7 +11,7 @@ async function saveHost({ res, request }) {
|
||||
console.log(request)
|
||||
if (!newHost || !name) return res.fail({ msg: 'missing params: name or host' })
|
||||
let hostList = await readHostList()
|
||||
if (hostList?.some(({ host }) => host === newHost)) return res.fail({ msg: `主机${newHost}已存在` })
|
||||
if (hostList?.some(({ host }) => host === newHost)) return res.fail({ msg: `主机${ newHost }已存在` })
|
||||
if (!Array.isArray(hostList)) hostList = []
|
||||
hostList.push({ host: newHost, name, expired, expiredNotify, group, consoleUrl, remark })
|
||||
await writeHostList(hostList)
|
||||
@ -22,7 +22,7 @@ async function updateHost({ res, request }) {
|
||||
let { body: { host: newHost, name: newName, oldHost, expired, expiredNotify, group, consoleUrl, remark } } = request
|
||||
if (!newHost || !newName || !oldHost) return res.fail({ msg: '参数错误' })
|
||||
let hostList = await readHostList()
|
||||
if (!hostList.some(({ host }) => host === oldHost)) return res.fail({ msg: `主机${newHost}不存在` })
|
||||
if (!hostList.some(({ host }) => host === oldHost)) return res.fail({ msg: `主机${ newHost }不存在` })
|
||||
let targetIdx = hostList.findIndex(({ host }) => host === oldHost)
|
||||
hostList.splice(targetIdx, 1, { name: newName, host: newHost, expired, expiredNotify, group, consoleUrl, remark })
|
||||
writeHostList(hostList)
|
||||
@ -33,7 +33,7 @@ async function removeHost({ res, request }) {
|
||||
let { body: { host } } = request
|
||||
let hostList = await readHostList()
|
||||
let hostIdx = hostList.findIndex(item => item.host === host)
|
||||
if (hostIdx === -1) return res.fail({ msg: `${host}不存在` })
|
||||
if (hostIdx === -1) return res.fail({ msg: `${ host }不存在` })
|
||||
hostList.splice(hostIdx, 1)
|
||||
writeHostList(hostList)
|
||||
// 查询是否存在ssh记录
|
||||
@ -43,7 +43,7 @@ async function removeHost({ res, request }) {
|
||||
if (flag) sshRecord.splice(sshIdx, 1)
|
||||
writeSSHRecord(sshRecord)
|
||||
|
||||
res.success({ data: `${host}已移除, ${flag ? '并移除ssh记录' : ''}` })
|
||||
res.success({ data: `${ host }已移除, ${ flag ? '并移除ssh记录' : '' }` })
|
||||
}
|
||||
|
||||
async function updateHostSort({ res, request }) {
|
||||
@ -55,7 +55,7 @@ async function updateHostSort({ res, request }) {
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
const curHost = list[i]
|
||||
let temp = hostList.find(({ host }) => curHost.host === host)
|
||||
if (!temp) return res.fail({ msg: `查找失败: ${curHost.name}` })
|
||||
if (!temp) return res.fail({ msg: `查找失败: ${ curHost.name }` })
|
||||
sortResult.push(temp)
|
||||
}
|
||||
writeHostList(sortResult)
|
||||
|
@ -1,5 +1,3 @@
|
||||
const Datastore = require('@seald-io/nedb')
|
||||
const { resolvePath } = require('./utils/tools')
|
||||
const { writeKey, writeNotifyList, writeGroupList } = require('./utils/storage')
|
||||
const { KeyDB, NotifyDB, GroupDB, EmailNotifyDB } = require('./utils/db-class')
|
||||
|
||||
@ -14,10 +12,10 @@ function initKeyDB() {
|
||||
if (count === 0) {
|
||||
consola.log('初始化keyDB✔')
|
||||
const defaultData = {
|
||||
pwd: "admin",
|
||||
commonKey: "",
|
||||
publicKey: "",
|
||||
privateKey: ""
|
||||
pwd: 'admin',
|
||||
commonKey: '',
|
||||
publicKey: '',
|
||||
privateKey: ''
|
||||
}
|
||||
await writeKey(defaultData)
|
||||
}
|
||||
@ -38,24 +36,24 @@ function initNotifyDB() {
|
||||
if (count === 0) {
|
||||
consola.log('初始化notifyDB✔')
|
||||
const defaultData = [{
|
||||
"type": "login",
|
||||
"desc": "登录面板提醒",
|
||||
"sw": true
|
||||
'type': 'login',
|
||||
'desc': '登录面板提醒',
|
||||
'sw': true
|
||||
},
|
||||
{
|
||||
"type": "err_login",
|
||||
"desc": "登录错误提醒(连续5次)",
|
||||
"sw": true
|
||||
'type': 'err_login',
|
||||
'desc': '登录错误提醒(连续5次)',
|
||||
'sw': true
|
||||
},
|
||||
{
|
||||
"type": "updatePwd",
|
||||
"desc": "修改密码提醒",
|
||||
"sw": true
|
||||
'type': 'updatePwd',
|
||||
'desc': '修改密码提醒',
|
||||
'sw': true
|
||||
},
|
||||
{
|
||||
"type": "host_offline",
|
||||
"desc": "客户端离线提醒(每小时最多发送一次提醒)",
|
||||
"sw": true
|
||||
'type': 'host_offline',
|
||||
'desc': '客户端离线提醒(每小时最多发送一次提醒)',
|
||||
'sw': true
|
||||
}]
|
||||
await writeNotifyList(defaultData)
|
||||
}
|
||||
@ -76,7 +74,7 @@ function initGroupDB() {
|
||||
} else {
|
||||
if (count === 0) {
|
||||
consola.log('初始化groupDB✔')
|
||||
const defaultData = [{ "id": "default", "name": "默认分组", "index": 0 }]
|
||||
const defaultData = [{ 'id': 'default', 'name': '默认分组', 'index': 0 }]
|
||||
await writeGroupList(defaultData)
|
||||
}
|
||||
}
|
||||
@ -96,39 +94,39 @@ function initEmailNotifyDB() {
|
||||
if (count === 0) {
|
||||
consola.log('初始化emailNotifyDB✔')
|
||||
const defaultData = {
|
||||
"support": [
|
||||
'support': [
|
||||
{
|
||||
"name": "QQ邮箱",
|
||||
"target": "qq",
|
||||
"host": "smtp.qq.com",
|
||||
"port": 465,
|
||||
"secure": true,
|
||||
"tls": {
|
||||
"rejectUnauthorized": false
|
||||
'name': 'QQ邮箱',
|
||||
'target': 'qq',
|
||||
'host': 'smtp.qq.com',
|
||||
'port': 465,
|
||||
'secure': true,
|
||||
'tls': {
|
||||
'rejectUnauthorized': false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "网易126",
|
||||
"target": "wangyi126",
|
||||
"host": "smtp.126.com",
|
||||
"port": 465,
|
||||
"secure": true,
|
||||
"tls": {
|
||||
"rejectUnauthorized": false
|
||||
'name': '网易126',
|
||||
'target': 'wangyi126',
|
||||
'host': 'smtp.126.com',
|
||||
'port': 465,
|
||||
'secure': true,
|
||||
'tls': {
|
||||
'rejectUnauthorized': false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "网易163",
|
||||
"target": "wangyi163",
|
||||
"host": "smtp.163.com",
|
||||
"port": 465,
|
||||
"secure": true,
|
||||
"tls": {
|
||||
"rejectUnauthorized": false
|
||||
'name': '网易163',
|
||||
'target': 'wangyi163',
|
||||
'host': 'smtp.163.com',
|
||||
'port': 465,
|
||||
'secure': true,
|
||||
'tls': {
|
||||
'rejectUnauthorized': false
|
||||
}
|
||||
}
|
||||
],
|
||||
"user": [
|
||||
'user': [
|
||||
]
|
||||
}
|
||||
emailNotifyDB.update({}, { $set: defaultData }, { upsert: true }, (err, numReplaced) => {
|
||||
|
@ -4,6 +4,7 @@ const { getNetIPInfo, readHostList, writeHostList, readKey, writeKey, randomStr,
|
||||
const isDev = !isProd()
|
||||
|
||||
// 存储本机IP, 供host列表接口调用
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
async function initLocalIp() {
|
||||
if(isDev) return consola.info('非生产环境不初始化保存本地IP')
|
||||
const localNetIPInfo = await getNetIPInfo()
|
||||
@ -20,7 +21,7 @@ async function initRsa() {
|
||||
let keyObj = await readKey()
|
||||
if(keyObj.privateKey && keyObj.publicKey) return consola.info('公私钥已存在[重新生成会导致已保存的ssh密钥信息失效]')
|
||||
let key = new NodeRSA({ b: 1024 })
|
||||
key.setOptions({ encryptionScheme: 'pkcs1', environment: "browser" })
|
||||
key.setOptions({ encryptionScheme: 'pkcs1', environment: 'browser' })
|
||||
let privateKey = key.exportKey('pkcs1-private-pem')
|
||||
let publicKey = key.exportKey('pkcs8-public-pem')
|
||||
keyObj.privateKey = await AESEncryptSync(privateKey) // 加密私钥
|
||||
|
@ -1,7 +1,7 @@
|
||||
const schedule = require('node-schedule')
|
||||
const { readHostList, sendEmailToConfList, formatTimestamp } = require('../utils')
|
||||
|
||||
const expiredNotifyJob = () => {
|
||||
const expiredNotifyJob = async () => {
|
||||
consola.info('=====开始检测服务器到期时间=====', new Date())
|
||||
const hostList = await readHostList()
|
||||
for (const item of hostList) {
|
||||
|
@ -51,7 +51,7 @@ module.exports = (httpServer) => {
|
||||
}
|
||||
const sshRecord = await readSSHRecord()
|
||||
let loginInfo = sshRecord.find(item => item.host === ip)
|
||||
if (!sshRecord.some(item => item.host === ip)) return socket.emit('create_fail', `未找到【${ip}】凭证`)
|
||||
if (!sshRecord.some(item => item.host === ip)) return socket.emit('create_fail', `未找到【${ ip }】凭证`)
|
||||
let { type, host, port, username, randomKey } = loginInfo
|
||||
try {
|
||||
// 解密放到try里面,防止报错【公私钥必须配对, 否则需要重新添加服务器密钥】
|
||||
@ -64,7 +64,7 @@ module.exports = (httpServer) => {
|
||||
sshClient
|
||||
.on('ready', () => {
|
||||
consola.success('已连接到终端:', host)
|
||||
socket.emit('connect_success', `已连接到终端:${host}`)
|
||||
socket.emit('connect_success', `已连接到终端:${ host }`)
|
||||
createTerminal(socket, sshClient)
|
||||
})
|
||||
.on('error', (err) => {
|
||||
@ -73,7 +73,7 @@ module.exports = (httpServer) => {
|
||||
socket.emit('connect_fail', err.message)
|
||||
})
|
||||
.connect({
|
||||
...authInfo,
|
||||
...authInfo
|
||||
// debug: (info) => console.log(info)
|
||||
})
|
||||
} catch (err) {
|
||||
|
@ -9,7 +9,7 @@ const RSADecryptSync = async (ciphertext) => {
|
||||
let { privateKey } = await readKey()
|
||||
privateKey = await AESDecryptSync(privateKey) // 先解密私钥
|
||||
const rsakey = new NodeRSA(privateKey)
|
||||
rsakey.setOptions({ encryptionScheme: 'pkcs1', environment: "browser" }) // Must Set It When Frontend Use jsencrypt
|
||||
rsakey.setOptions({ encryptionScheme: 'pkcs1', environment: 'browser' }) // Must Set It When Frontend Use jsencrypt
|
||||
const plaintext = rsakey.decrypt(ciphertext, 'utf8')
|
||||
return plaintext
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
const fs = require('fs')
|
||||
const { sshRecordDBPath, hostListDBPath, keyDBPath, emailNotifyDBPath, notifyConfDBPath, groupConfDBPath } = require('../config')
|
||||
const { KeyDB, HostListDB, SshRecordDB, NotifyDB, GroupDB, EmailNotifyDB } = require('./db-class')
|
||||
|
||||
const readKey = async () => {
|
||||
@ -46,7 +44,7 @@ const readSSHRecord = async () => {
|
||||
const writeSSHRecord = async (record = []) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const sshRecordDB = new SshRecordDB().getInstance()
|
||||
sshRecordDB.remove({}, { multi: true }, (err, numRemoved) => {
|
||||
sshRecordDB.remove({}, { multi: true }, (err) => {
|
||||
if (err) {
|
||||
consola.error('清空SSHRecord出错:', err)
|
||||
reject(err)
|
||||
@ -82,7 +80,7 @@ const readHostList = async () => {
|
||||
const writeHostList = async (record = []) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const hostListDB = new HostListDB().getInstance()
|
||||
hostListDB.remove({}, { multi: true }, (err, numRemoved) => {
|
||||
hostListDB.remove({}, { multi: true }, (err) => {
|
||||
if (err) {
|
||||
consola.error('清空HostList出错:', err)
|
||||
reject(err)
|
||||
@ -91,7 +89,7 @@ const writeHostList = async (record = []) => {
|
||||
hostListDB.insert(record, (err, newDocs) => {
|
||||
if (err) {
|
||||
consola.error('写入新的HostList出错:', err)
|
||||
reject(err);
|
||||
reject(err)
|
||||
} else {
|
||||
hostListDB.compactDatafile()
|
||||
resolve(newDocs)
|
||||
@ -117,10 +115,11 @@ const readEmailNotifyConf = () => {
|
||||
}
|
||||
const writeUserEmailList = (user) => {
|
||||
const emailNotifyDB = new EmailNotifyDB().getInstance()
|
||||
// eslint-disable-next-line no-async-promise-executor
|
||||
return new Promise(async (resolve, reject) => {
|
||||
let support = await readSupportEmailList()
|
||||
const emailConf = { support, user }
|
||||
emailNotifyDB.update({}, { $set: emailConf }, { upsert: true }, (err, numReplaced) => {
|
||||
emailNotifyDB.update({}, { $set: emailConf }, { upsert: true }, (err) => {
|
||||
if (err) {
|
||||
reject({ code: -1, msg: err.message || err })
|
||||
} else {
|
||||
@ -151,7 +150,6 @@ const readUserEmailList = async () => {
|
||||
return user
|
||||
}
|
||||
|
||||
|
||||
const getNotifySwByType = async (type) => {
|
||||
if (!type) throw Error('missing params: type')
|
||||
try {
|
||||
@ -159,7 +157,7 @@ const getNotifySwByType = async (type) => {
|
||||
let { sw } = notifyList.find((item) => item.type === type)
|
||||
return sw
|
||||
} catch (error) {
|
||||
consola.error(`通知类型[${type}]不存在`)
|
||||
consola.error(`通知类型[${ type }]不存在`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
@ -181,18 +179,18 @@ const readNotifyList = async () => {
|
||||
const writeNotifyList = async (notifyList) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const notifyDB = new NotifyDB().getInstance()
|
||||
notifyDB.remove({}, { multi: true }, (err, numRemoved) => {
|
||||
notifyDB.remove({}, { multi: true }, (err) => {
|
||||
if (err) {
|
||||
consola.error('清空notify list出错:', err);
|
||||
reject(err);
|
||||
consola.error('清空notify list出错:', err)
|
||||
reject(err)
|
||||
} else {
|
||||
notifyDB.insert(notifyList, (err, newDocs) => {
|
||||
if (err) {
|
||||
consola.error('写入新的notify list出错:', err);
|
||||
consola.error('写入新的notify list出错:', err)
|
||||
reject(err)
|
||||
} else {
|
||||
notifyDB.compactDatafile()
|
||||
resolve(newDocs);
|
||||
resolve(newDocs)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -217,7 +215,7 @@ const readGroupList = async () => {
|
||||
const writeGroupList = async (list = []) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const groupDB = new GroupDB().getInstance()
|
||||
groupDB.remove({}, { multi: true }, (err, numRemoved) => {
|
||||
groupDB.remove({}, { multi: true }, (err) => {
|
||||
if (err) {
|
||||
consola.error('清空group list出错:', err)
|
||||
reject(err)
|
||||
|
@ -1,4 +1,3 @@
|
||||
const fs = require('fs')
|
||||
const net = require('net')
|
||||
const axios = require('axios')
|
||||
const request = axios.create({ timeout: 3000 })
|
||||
@ -104,8 +103,8 @@ function isLocalIP(ip) {
|
||||
const localIPv6Ranges = [
|
||||
'::1', // Loopback
|
||||
'fc00::', // Unique local address
|
||||
'fd00::' // Unique local address
|
||||
];
|
||||
'fd00::' // Unique local address
|
||||
]
|
||||
|
||||
function isInRange(ip, start, end) {
|
||||
const ipNum = ipToNumber(ip)
|
||||
|
@ -14,7 +14,9 @@
|
||||
"start": "node ./app/index.js",
|
||||
"pkgwin": "pkg . -t node20-win-x64",
|
||||
"pkglinux:x86": "pkg . -t node20-linux-x64",
|
||||
"pkglinux:arm": "pkg . -t node20-linux-arm64"
|
||||
"pkglinux:arm": "pkg . -t node20-linux-arm64",
|
||||
"lint": "eslint . --ext .js,.vue",
|
||||
"lint:fix": "eslint . --ext .js,.jsx,.cjs,.mjs --fix"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
@ -54,7 +56,7 @@
|
||||
"ssh2-sftp-client": "^10.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^9.6.0",
|
||||
"eslint": "^8.56.0",
|
||||
"nodemon": "^3.1.4",
|
||||
"pkg": "5.8"
|
||||
}
|
||||
|
@ -7,7 +7,8 @@
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview --port 5050",
|
||||
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore"
|
||||
"lint": "eslint . --ext .js,.vue",
|
||||
"lint:fix": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore"
|
||||
},
|
||||
"dependencies": {
|
||||
"@codemirror/lang-cpp": "^6.0.2",
|
||||
@ -43,7 +44,7 @@
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^5.0.5",
|
||||
"@vitejs/plugin-vue-jsx": "^4.0.0",
|
||||
"eslint": "^9.6.0",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-plugin-vue": "^9.27.0",
|
||||
"sass": "^1.77.7",
|
||||
"unplugin-auto-import": "^0.17.6",
|
||||
|
@ -1,13 +1,25 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" width="800px" :top="'20vh'" :close-on-click-modal="false" :close-on-press-escape="false"
|
||||
:show-close="false" center custom-class="container">
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
width="800px"
|
||||
:top="'20vh'"
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
:show-close="false"
|
||||
center
|
||||
custom-class="container"
|
||||
>
|
||||
<template #header>
|
||||
<div class="title">
|
||||
输入多行命令发送到终端执行
|
||||
</div>
|
||||
</template>
|
||||
<el-input v-model="command" :autosize="{ minRows: 10, maxRows: 20 }" type="textarea"
|
||||
placeholder="Please input command" />
|
||||
<el-input
|
||||
v-model="command"
|
||||
:autosize="{ minRows: 10, maxRows: 20 }"
|
||||
type="textarea"
|
||||
placeholder="Please input command"
|
||||
/>
|
||||
<template #footer>
|
||||
<footer>
|
||||
<div class="btns">
|
||||
@ -28,7 +40,7 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update:show', 'closed', 'input-command'])
|
||||
const emit = defineEmits(['update:show', 'closed', 'input-command',])
|
||||
|
||||
const command = ref('')
|
||||
|
||||
@ -46,7 +58,6 @@ const handleSave = () => {
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
<style lang="scss">
|
||||
|
@ -3,7 +3,7 @@
|
||||
<use :xlink:href="href" />
|
||||
</svg>
|
||||
</template>
|
||||
<script >
|
||||
<script>
|
||||
export default {
|
||||
name: 'IconSvg',
|
||||
props: {
|
||||
|
@ -29,7 +29,7 @@ const useStore = defineStore({
|
||||
setTimeout(() => {
|
||||
this.hostList.forEach((item) => {
|
||||
const { host } = item
|
||||
ping(`http://${ host }:${this.$clientPort}`)
|
||||
ping(`http://${ host }:${ this.$clientPort }`)
|
||||
.then((res) => {
|
||||
item.ping = res
|
||||
})
|
||||
|
@ -8,7 +8,7 @@ function request_image(url) {
|
||||
}
|
||||
|
||||
function ping(url, timeout = 5000) {
|
||||
return new Promise((resolve, reject) => {
|
||||
return new Promise((resolve) => {
|
||||
let start = Date.now()
|
||||
let response = () => {
|
||||
let delay = (Date.now() - start) + 'ms'
|
||||
|
@ -166,11 +166,11 @@ const props = defineProps({
|
||||
},
|
||||
hiddenIp: {
|
||||
required: true,
|
||||
type: [Number, Boolean]
|
||||
type: [Number, Boolean,]
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update-list', 'update-host'])
|
||||
const emit = defineEmits(['update-list', 'update-host',])
|
||||
|
||||
const sshFormVisible = ref(false)
|
||||
const tempHost = ref('')
|
||||
@ -218,7 +218,7 @@ const handleToConsole = () => {
|
||||
|
||||
const handleSSH = async () => {
|
||||
let { data } = await $api.existSSH(host.value)
|
||||
if (data) return window.open(`/terminal?host=${host.value}&name=${name.value}`)
|
||||
if (data) return window.open(`/terminal?host=${ host.value }&name=${ name.value }`)
|
||||
if (!host.value) {
|
||||
return ElMessage({
|
||||
message: '请等待获取服务器ip或刷新页面重试',
|
||||
|
@ -119,7 +119,7 @@ const props = defineProps({
|
||||
default: null
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['update:show', 'update-list', 'closed'])
|
||||
const emit = defineEmits(['update:show', 'update-list', 'closed',])
|
||||
|
||||
const resetForm = () => ({
|
||||
group: 'default',
|
||||
|
@ -143,7 +143,7 @@ const pushTestEmail = (row) => {
|
||||
const { email: toEmail } = row
|
||||
$api.pushTestEmail({ isTest: true, toEmail })
|
||||
.then(() => {
|
||||
$message.success(`发送成功, 请检查邮箱: ${toEmail}`)
|
||||
$message.success(`发送成功, 请检查邮箱: ${ toEmail }`)
|
||||
})
|
||||
.catch((error) => {
|
||||
$notification({
|
||||
@ -159,7 +159,7 @@ const pushTestEmail = (row) => {
|
||||
|
||||
const deleteUserEmail = ({ email }) => {
|
||||
$messageBox.confirm(
|
||||
`确认删除邮箱:${email}`,
|
||||
`确认删除邮箱:${ email }`,
|
||||
'Warning',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
|
@ -209,7 +209,7 @@ const updateGroup = () => {
|
||||
}
|
||||
|
||||
const deleteGroup = ({ id, name }) => {
|
||||
$messageBox.confirm(`确认删除分组:${name}`, 'Warning', {
|
||||
$messageBox.confirm(`确认删除分组:${ name }`, 'Warning', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
|
@ -24,7 +24,7 @@
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { getCurrentInstance } from 'vue'
|
||||
|
||||
const { proxy: { $api, $message } } = getCurrentInstance()
|
||||
const { proxy: { $api } } = getCurrentInstance()
|
||||
|
||||
const notifyListLoading = ref(false)
|
||||
const notifyList = ref([])
|
||||
|
@ -29,7 +29,7 @@
|
||||
<script setup>
|
||||
import { ref, onMounted, getCurrentInstance } from 'vue'
|
||||
|
||||
const emit = defineEmits(['update-list'])
|
||||
const emit = defineEmits(['update-list',])
|
||||
const { proxy: { $api, $message, $store } } = getCurrentInstance()
|
||||
|
||||
const targetIndex = ref(0)
|
||||
|
@ -45,7 +45,7 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update:show', 'update-list'])
|
||||
const emit = defineEmits(['update:show', 'update-list',])
|
||||
|
||||
const visible = computed({
|
||||
get: () => props.show,
|
||||
|
@ -93,7 +93,7 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, computed, watch, getCurrentInstance, nextTick } from 'vue'
|
||||
import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
|
||||
import { ElNotification } from 'element-plus'
|
||||
import { randomStr, AESEncrypt, RSAEncrypt } from '@utils/index.js'
|
||||
|
||||
const props = defineProps({
|
||||
@ -111,7 +111,7 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update:show'])
|
||||
const emit = defineEmits(['update:show',])
|
||||
|
||||
const formRef = ref(null)
|
||||
const privateKeyRef = ref(null)
|
||||
@ -140,7 +140,7 @@ const rules = reactive({
|
||||
command: { required: false }
|
||||
})
|
||||
|
||||
const { proxy: { $api, $tools } } = getCurrentInstance()
|
||||
const { proxy: { $api } } = getCurrentInstance()
|
||||
|
||||
const visible = computed({
|
||||
get() {
|
||||
|
@ -46,13 +46,13 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
|
||||
import { ref, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
|
||||
import { io } from 'socket.io-client'
|
||||
import HostForm from './components/host-form.vue'
|
||||
import Setting from './components/setting.vue'
|
||||
import HostCard from './components/host-card.vue'
|
||||
|
||||
const { proxy: { $store, $api, $message, $notification, $router, $serviceURI } } = getCurrentInstance()
|
||||
const { proxy: { $store, $message, $notification, $router, $serviceURI } } = getCurrentInstance()
|
||||
|
||||
const socket = ref(null)
|
||||
const loading = ref(true)
|
||||
|
@ -1,6 +1,14 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" width="500px" :top="'30vh'" destroy-on-close :close-on-click-modal="false"
|
||||
:close-on-press-escape="false" :show-close="false" center>
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
width="500px"
|
||||
:top="'30vh'"
|
||||
destroy-on-close
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
:show-close="false"
|
||||
center
|
||||
>
|
||||
<template #header>
|
||||
<h2 v-if="notKey" style="color: #f56c6c;"> Error </h2>
|
||||
<h2 v-else style="color: #409eff;"> LOGIN </h2>
|
||||
@ -9,11 +17,25 @@
|
||||
<el-alert title="Error: 用于加密的公钥获取失败,请尝试重新启动或部署服务" type="error" show-icon />
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-form ref="loginFormRefs" :model="loginForm" :rules="rules" :hide-required-asterisk="true" label-suffix=":"
|
||||
label-width="90px">
|
||||
<el-form
|
||||
ref="loginFormRefs"
|
||||
:model="loginForm"
|
||||
:rules="rules"
|
||||
:hide-required-asterisk="true"
|
||||
label-suffix=":"
|
||||
label-width="90px"
|
||||
>
|
||||
<el-form-item prop="pwd" label="密码">
|
||||
<el-input v-model.trim="loginForm.pwd" type="password" placeholder="Please input password" autocomplete="off"
|
||||
:trigger-on-focus="false" clearable show-password @keyup.enter="handleLogin" />
|
||||
<el-input
|
||||
v-model.trim="loginForm.pwd"
|
||||
type="password"
|
||||
placeholder="Please input password"
|
||||
autocomplete="off"
|
||||
:trigger-on-focus="false"
|
||||
clearable
|
||||
show-password
|
||||
@keyup.enter="handleLogin"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-show="false" prop="pwd" label="密码">
|
||||
<el-input v-model.trim="loginForm.pwd" />
|
||||
@ -22,8 +44,17 @@
|
||||
<el-radio-group v-model="isSession" class="login-indate">
|
||||
<el-radio :value="true">一次性会话</el-radio>
|
||||
<el-radio :value="false">自定义(小时)</el-radio>
|
||||
<el-input-number v-model="loginForm.jwtExpires" :disabled="isSession" placeholder="单位:小时" class="input"
|
||||
:min="1" :max="72" value-on-clear="min" size="small" controls-position="right" />
|
||||
<el-input-number
|
||||
v-model="loginForm.jwtExpires"
|
||||
:disabled="isSession"
|
||||
placeholder="单位:小时"
|
||||
class="input"
|
||||
:min="1"
|
||||
:max="72"
|
||||
value-on-clear="min"
|
||||
size="small"
|
||||
controls-position="right"
|
||||
/>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -52,15 +83,15 @@ const notKey = ref(false)
|
||||
const loading = ref(false)
|
||||
const loginForm = reactive({
|
||||
pwd: '',
|
||||
jwtExpires: 8,
|
||||
jwtExpires: 8
|
||||
})
|
||||
const rules = reactive({
|
||||
pwd: { required: true, message: '需输入密码', trigger: 'change' },
|
||||
pwd: { required: true, message: '需输入密码', trigger: 'change' }
|
||||
})
|
||||
|
||||
const handleLogin = () => {
|
||||
loginFormRefs.value.validate().then(() => {
|
||||
let jwtExpires = isSession.value ? '12h' : `${loginForm.jwtExpires}h`
|
||||
let jwtExpires = isSession.value ? '12h' : `${ loginForm.jwtExpires }h`
|
||||
if (!isSession.value) {
|
||||
localStorage.setItem('jwtExpires', loginForm.jwtExpires)
|
||||
}
|
||||
|
@ -12,7 +12,12 @@
|
||||
</div> -->
|
||||
</header>
|
||||
<el-divider class="first-divider" content-position="center">POSITION</el-divider>
|
||||
<el-descriptions class="margin-top" :column="1" size="small" border>
|
||||
<el-descriptions
|
||||
class="margin-top"
|
||||
:column="1"
|
||||
size="small"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="item-title">
|
||||
@ -43,14 +48,24 @@
|
||||
</el-descriptions>
|
||||
|
||||
<el-divider content-position="center">INDICATOR</el-divider>
|
||||
<el-descriptions class="margin-top" :column="1" size="small" border>
|
||||
<el-descriptions
|
||||
class="margin-top"
|
||||
:column="1"
|
||||
size="small"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="item-title">
|
||||
CPU
|
||||
</div>
|
||||
</template>
|
||||
<el-progress :text-inside="true" :stroke-width="18" :percentage="cpuUsage" :color="handleColor(cpuUsage)" />
|
||||
<el-progress
|
||||
:text-inside="true"
|
||||
:stroke-width="18"
|
||||
:percentage="cpuUsage"
|
||||
:color="handleColor(cpuUsage)"
|
||||
/>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
@ -58,8 +73,12 @@
|
||||
内存
|
||||
</div>
|
||||
</template>
|
||||
<el-progress :text-inside="true" :stroke-width="18" :percentage="usedMemPercentage"
|
||||
:color="handleColor(usedMemPercentage)" />
|
||||
<el-progress
|
||||
:text-inside="true"
|
||||
:stroke-width="18"
|
||||
:percentage="usedMemPercentage"
|
||||
:color="handleColor(usedMemPercentage)"
|
||||
/>
|
||||
<div class="position-right">
|
||||
{{ $tools.toFixed(memInfo.usedMemMb / 1024) }}/{{ $tools.toFixed(memInfo.totalMemMb / 1024) }}G
|
||||
</div>
|
||||
@ -70,8 +89,12 @@
|
||||
硬盘
|
||||
</div>
|
||||
</template>
|
||||
<el-progress :text-inside="true" :stroke-width="18" :percentage="usedPercentage"
|
||||
:color="handleColor(usedPercentage)" />
|
||||
<el-progress
|
||||
:text-inside="true"
|
||||
:stroke-width="18"
|
||||
:percentage="usedPercentage"
|
||||
:color="handleColor(usedPercentage)"
|
||||
/>
|
||||
<div class="position-right">
|
||||
{{ driveInfo.usedGb || '--' }}/{{ driveInfo.totalGb || '--' }}G
|
||||
</div>
|
||||
@ -96,7 +119,12 @@
|
||||
</el-descriptions>
|
||||
|
||||
<el-divider content-position="center">INFORMATION</el-divider>
|
||||
<el-descriptions class="margin-top" :column="1" size="small" border>
|
||||
<el-descriptions
|
||||
class="margin-top"
|
||||
:column="1"
|
||||
size="small"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="item-title">
|
||||
@ -160,18 +188,24 @@
|
||||
</el-descriptions>
|
||||
|
||||
<el-divider content-position="center">FEATURE</el-divider>
|
||||
<el-button :type="sftpStatus ? 'primary' : 'success'" style="display: block;width: 80%;margin: 30px auto;"
|
||||
@click="handleSftp">
|
||||
<el-button
|
||||
:type="sftpStatus ? 'primary' : 'success'"
|
||||
style="display: block;width: 80%;margin: 30px auto;"
|
||||
@click="handleSftp"
|
||||
>
|
||||
{{ sftpStatus ? '关闭SFTP' : '连接SFTP' }}
|
||||
</el-button>
|
||||
<el-button :type="inputCommandStyle ? 'primary' : 'success'" style="display: block;width: 80%;margin: 30px auto;"
|
||||
@click="clickInputCommand">
|
||||
<el-button
|
||||
:type="inputCommandStyle ? 'primary' : 'success'"
|
||||
style="display: block;width: 80%;margin: 30px auto;"
|
||||
@click="clickInputCommand"
|
||||
>
|
||||
命令输入框
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, onBeforeUnmount, computed, getCurrentInstance } from 'vue'
|
||||
import { ref, onMounted, onBeforeUnmount, computed, getCurrentInstance } from 'vue'
|
||||
import socketIo from 'socket.io-client'
|
||||
|
||||
const { proxy: { $router, $serviceURI, $message, $notification, $tools } } = getCurrentInstance()
|
||||
@ -192,10 +226,10 @@ const props = defineProps({
|
||||
showInputCommand: {
|
||||
required: true,
|
||||
type: Boolean
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update:inputCommandStyle', 'connect-sftp', 'click-input-command'])
|
||||
const emit = defineEmits(['update:inputCommandStyle', 'connect-sftp', 'click-input-command',])
|
||||
|
||||
const socket = ref(null)
|
||||
const name = ref('')
|
||||
@ -205,7 +239,7 @@ const pingTimer = ref(null)
|
||||
const sftpStatus = ref(false)
|
||||
|
||||
const ipInfo = computed(() => hostData.value?.ipInfo || {})
|
||||
const isError = computed(() => !Boolean(hostData.value?.osInfo))
|
||||
// const isError = computed(() => !Boolean(hostData.value?.osInfo))
|
||||
const cpuInfo = computed(() => hostData.value?.cpuInfo || {})
|
||||
const memInfo = computed(() => hostData.value?.memInfo || {})
|
||||
const osInfo = computed(() => hostData.value?.osInfo || {})
|
||||
@ -214,19 +248,19 @@ const netstatInfo = computed(() => {
|
||||
let { total: netTotal, ...netCards } = hostData.value?.netstatInfo || {}
|
||||
return { netTotal, netCards: netCards || {} }
|
||||
})
|
||||
const openedCount = computed(() => hostData.value?.openedCount || 0)
|
||||
// const openedCount = computed(() => hostData.value?.openedCount || 0)
|
||||
const cpuUsage = computed(() => Number(cpuInfo.value?.cpuUsage) || 0)
|
||||
const usedMemPercentage = computed(() => Number(memInfo.value?.usedMemPercentage) || 0)
|
||||
const usedPercentage = computed(() => Number(driveInfo.value?.usedPercentage) || 0)
|
||||
const output = computed(() => {
|
||||
let outputMb = Number(netstatInfo.value.netTotal?.outputMb) || 0
|
||||
if (outputMb >= 1) return `${outputMb.toFixed(2)} MB/s`
|
||||
return `${(outputMb * 1024).toFixed(1)} KB/s`
|
||||
if (outputMb >= 1) return `${ outputMb.toFixed(2) } MB/s`
|
||||
return `${ (outputMb * 1024).toFixed(1) } KB/s`
|
||||
})
|
||||
const input = computed(() => {
|
||||
let inputMb = Number(netstatInfo.value.netTotal?.inputMb) || 0
|
||||
if (inputMb >= 1) return `${inputMb.toFixed(2)} MB/s`
|
||||
return `${(inputMb * 1024).toFixed(1)} KB/s`
|
||||
if (inputMb >= 1) return `${ inputMb.toFixed(2) } MB/s`
|
||||
return `${ (inputMb * 1024).toFixed(1) } KB/s`
|
||||
})
|
||||
const inputCommandStyle = computed({
|
||||
get: () => props.showInputCommand,
|
||||
@ -298,7 +332,7 @@ const handleColor = (num) => {
|
||||
|
||||
const getHostPing = () => {
|
||||
pingTimer.value = setInterval(() => {
|
||||
$tools.ping(`http://${props.host}:22022`)
|
||||
$tools.ping(`http://${ props.host }:22022`)
|
||||
.then(res => {
|
||||
ping.value = res
|
||||
if (!import.meta.env.DEV) {
|
||||
@ -320,7 +354,6 @@ onBeforeUnmount(() => {
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.info-container {
|
||||
// min-width: 250px;
|
||||
|
@ -133,7 +133,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, computed, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
|
||||
import { ref, computed, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
|
||||
import socketIo from 'socket.io-client'
|
||||
import CodeEdit from '@/components/code-edit/index.vue'
|
||||
import { isDir, isFile, sortDirTree, downloadFile } from '@/utils'
|
||||
@ -155,7 +155,7 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
|
||||
const emit = defineEmits(['resize'])
|
||||
const emit = defineEmits(['resize',])
|
||||
|
||||
const { proxy: { $notification, $message, $messageBox, $serviceURI, $nextTick } } = getCurrentInstance()
|
||||
|
||||
@ -300,7 +300,7 @@ const openRootChild = (item) => {
|
||||
openDir()
|
||||
filterKey.value = ''
|
||||
} else {
|
||||
$message.warning(`暂不支持打开文件${name} ${type}`)
|
||||
$message.warning(`暂不支持打开文件${ name } ${ type }`)
|
||||
}
|
||||
}
|
||||
|
||||
@ -317,7 +317,7 @@ const openTarget = (item) => {
|
||||
const path = getPath(name)
|
||||
socket.value.emit('down_file', { path, name, size, target: 'preview' })
|
||||
} else {
|
||||
$message.warning(`暂不支持打开文件${name} ${type}`)
|
||||
$message.warning(`暂不支持打开文件${ name } ${ type }`)
|
||||
}
|
||||
}
|
||||
|
||||
@ -352,7 +352,7 @@ const handleDownload = () => {
|
||||
if (curTarget.value === null) return $message.warning('先选择一个文件')
|
||||
const { name, size, type } = curTarget.value
|
||||
if (isDir(type)) return $message.error('暂不支持下载文件夹')
|
||||
$messageBox.confirm(`确认下载:${name}`, 'Warning', {
|
||||
$messageBox.confirm(`确认下载:${ name }`, 'Warning', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
@ -373,7 +373,7 @@ const handleDownload = () => {
|
||||
const handleDelete = () => {
|
||||
if (curTarget.value === null) return $message.warning('先选择一个文件(夹)')
|
||||
const { name, type } = curTarget.value
|
||||
$messageBox.confirm(`确认删除:${name}`, 'Warning', {
|
||||
$messageBox.confirm(`确认删除:${ name }`, 'Warning', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
@ -409,7 +409,7 @@ const uploadFile = (file) => {
|
||||
}
|
||||
let reader = new
|
||||
FileReader()
|
||||
reader.onload = async (e) => {
|
||||
reader.onload = async () => {
|
||||
const { name } = file
|
||||
const fullPath = getPath(name)
|
||||
const targetPath = curPath.value
|
||||
@ -436,7 +436,7 @@ const uploadFile = (file) => {
|
||||
upFileProgress.value = parseInt((fileIndex / totalSliceCount * 100) / 2)
|
||||
}
|
||||
socket.value.emit('up_file_slice_over', { name, fullPath, range, size })
|
||||
socket.value.once('up_file_success', (res) => {
|
||||
socket.value.once('up_file_success', () => {
|
||||
if (multipleFlag) return
|
||||
handleRefresh()
|
||||
resetFileStatusFlag()
|
||||
@ -453,7 +453,7 @@ const uploadFile = (file) => {
|
||||
})
|
||||
} catch (err) {
|
||||
reject(err)
|
||||
const errMsg = `上传失败, ${err}`
|
||||
const errMsg = `上传失败, ${ err }`
|
||||
$message.error(errMsg)
|
||||
handleRefresh()
|
||||
resetFileStatusFlag()
|
||||
@ -493,7 +493,7 @@ const openDir = () => {
|
||||
}
|
||||
|
||||
const getPath = (name = '') => {
|
||||
return curPath.value.length === 1 ? `/${name}` : `${curPath.value}/${name}`
|
||||
return curPath.value.length === 1 ? `/${ name }` : `${ curPath.value }/${ name }`
|
||||
}
|
||||
|
||||
const adjustHeight = () => {
|
||||
@ -511,7 +511,7 @@ const adjustHeight = () => {
|
||||
if (!startAdjust) return
|
||||
if (timer) clearTimeout(timer)
|
||||
timer = setTimeout(() => {
|
||||
sftpHeight = `calc(100vh - ${e.pageY}px)`
|
||||
sftpHeight = `calc(100vh - ${ e.pageY }px)`
|
||||
document.querySelector('.sftp-container').style.height = sftpHeight
|
||||
emit('resize')
|
||||
})
|
||||
@ -519,7 +519,7 @@ const adjustHeight = () => {
|
||||
document.addEventListener('mouseup', (e) => {
|
||||
if (!startAdjust) return
|
||||
startAdjust = false
|
||||
sftpHeight = `calc(100vh - ${e.pageY}px)`
|
||||
sftpHeight = `calc(100vh - ${ e.pageY }px)`
|
||||
localStorage.setItem('sftpHeight', sftpHeight)
|
||||
})
|
||||
})
|
||||
@ -527,7 +527,6 @@ const adjustHeight = () => {
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.sftp-container {
|
||||
position: relative;
|
||||
|
@ -198,11 +198,11 @@ const onSelectionChange = () => {
|
||||
term.value.onSelectionChange(() => {
|
||||
let str = term.value.getSelection()
|
||||
if (!str) return
|
||||
const text = new Blob([str], { type: 'text/plain' })
|
||||
const text = new Blob([str,], { type: 'text/plain' })
|
||||
const item = new ClipboardItem({
|
||||
'text/plain': text
|
||||
})
|
||||
navigator.clipboard.write([item])
|
||||
navigator.clipboard.write([item,])
|
||||
})
|
||||
}
|
||||
|
||||
@ -251,11 +251,11 @@ onBeforeUnmount(() => {
|
||||
window.removeEventListener('resize', handleResize)
|
||||
})
|
||||
|
||||
|
||||
defineExpose({
|
||||
focusTab,
|
||||
handleResize,
|
||||
handleInputCommand,
|
||||
handleClear,
|
||||
tabKey
|
||||
})
|
||||
</script>
|
||||
|
@ -1,7 +1,14 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<InfoSide ref="infoSideRef" :showInputCommand.sync="showInputCommand" :token="token" :host="host" :visible="visible" @connect-sftp="connectSftp"
|
||||
@click-input-command="clickInputCommand" />
|
||||
<InfoSide
|
||||
ref="infoSideRef"
|
||||
v-model:show-input-command="showInputCommand"
|
||||
:token="token"
|
||||
:host="host"
|
||||
:visible="visible"
|
||||
@connect-sftp="connectSftp"
|
||||
@click-input-command="clickInputCommand"
|
||||
/>
|
||||
<section>
|
||||
<div class="terminals">
|
||||
<el-button class="full-screen-button" type="success" @click="handleFullScreen">
|
||||
@ -10,11 +17,28 @@
|
||||
<div class="visible" @click="handleVisibleSidebar">
|
||||
<svg-icon name="icon-jiantou_zuoyouqiehuan" class="svg-icon" />
|
||||
</div>
|
||||
<el-tabs v-model="activeTab" type="border-card" addable tab-position="top" @tab-remove="removeTab"
|
||||
@tab-change="tabChange" @tab-add="tabAdd">
|
||||
<el-tab-pane v-for="item in terminalTabs" :key="item.key" :label="item.title" :name="item.key"
|
||||
:closable="closable">
|
||||
<TerminalTab ref="terminalTabRefs" :token="token" :host="host" :tab-key="item.key" />
|
||||
<el-tabs
|
||||
v-model="activeTab"
|
||||
type="border-card"
|
||||
addable
|
||||
tab-position="top"
|
||||
@tab-remove="removeTab"
|
||||
@tab-change="tabChange"
|
||||
@tab-add="tabAdd"
|
||||
>
|
||||
<el-tab-pane
|
||||
v-for="item in terminalTabs"
|
||||
:key="item.key"
|
||||
:label="item.title"
|
||||
:name="item.key"
|
||||
:closable="closable"
|
||||
>
|
||||
<TerminalTab
|
||||
ref="terminalTabRefs"
|
||||
:token="token"
|
||||
:host="host"
|
||||
:tab-key="item.key"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
@ -27,7 +51,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, computed, onBeforeMount, getCurrentInstance, watch } from 'vue'
|
||||
import { ref, reactive, computed, onBeforeMount, getCurrentInstance } from 'vue'
|
||||
import TerminalTab from './components/terminal-tab.vue'
|
||||
import InfoSide from './components/info-side.vue'
|
||||
import SftpFooter from './components/sftp-footer.vue'
|
||||
@ -55,7 +79,7 @@ onBeforeMount(() => {
|
||||
let { host: routeHost, name: routeName } = $route.query
|
||||
name.value = routeName
|
||||
host.value = routeHost
|
||||
document.title = `${document.title}-${routeName}`
|
||||
document.title = `${ document.title }-${ routeName }`
|
||||
let key = Date.now().toString()
|
||||
terminalTabs.push({ title: routeName, key })
|
||||
activeTab.value = key
|
||||
@ -142,7 +166,7 @@ const handleInputCommand = async (command) => {
|
||||
const curTabTerminal = terminalTabRefs.value.find(({ tabKey }) => activeTab.value === tabKey)
|
||||
await $nextTick()
|
||||
curTabTerminal?.focusTab()
|
||||
curTabTerminal.handleInputCommand(`${command}\n`)
|
||||
curTabTerminal.handleInputCommand(`${ command }\n`)
|
||||
showInputCommand.value = false
|
||||
}
|
||||
</script>
|
||||
@ -207,11 +231,11 @@ const handleInputCommand = async (command) => {
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.el-tabs__nav-scroll {
|
||||
.el-tabs__nav {
|
||||
// padding-left: 60px;
|
||||
}
|
||||
}
|
||||
// .el-tabs__nav-scroll {
|
||||
// .el-tabs__nav {
|
||||
// // padding-left: 60px;
|
||||
// }
|
||||
// }
|
||||
|
||||
.el-tabs__new-tab {
|
||||
position: absolute;
|
||||
|
492
yarn.lock
492
yarn.lock
@ -10,7 +10,7 @@
|
||||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
"@jridgewell/trace-mapping" "^0.3.24"
|
||||
|
||||
"@antfu/utils@^0.7.10", "@antfu/utils@^0.7.8":
|
||||
"@antfu/utils@^0.7.10":
|
||||
version "0.7.10"
|
||||
resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.10.tgz#ae829f170158e297a9b6a28f161a8e487d00814d"
|
||||
integrity sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==
|
||||
@ -23,26 +23,26 @@
|
||||
"@babel/highlight" "^7.24.7"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/compat-data@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed"
|
||||
integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==
|
||||
"@babel/compat-data@^7.24.8":
|
||||
version "7.24.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.9.tgz#53eee4e68f1c1d0282aa0eb05ddb02d033fc43a0"
|
||||
integrity sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==
|
||||
|
||||
"@babel/core@^7.24.6":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4"
|
||||
integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==
|
||||
version "7.24.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82"
|
||||
integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.2.0"
|
||||
"@babel/code-frame" "^7.24.7"
|
||||
"@babel/generator" "^7.24.7"
|
||||
"@babel/helper-compilation-targets" "^7.24.7"
|
||||
"@babel/helper-module-transforms" "^7.24.7"
|
||||
"@babel/helpers" "^7.24.7"
|
||||
"@babel/parser" "^7.24.7"
|
||||
"@babel/generator" "^7.24.9"
|
||||
"@babel/helper-compilation-targets" "^7.24.8"
|
||||
"@babel/helper-module-transforms" "^7.24.9"
|
||||
"@babel/helpers" "^7.24.8"
|
||||
"@babel/parser" "^7.24.8"
|
||||
"@babel/template" "^7.24.7"
|
||||
"@babel/traverse" "^7.24.7"
|
||||
"@babel/types" "^7.24.7"
|
||||
"@babel/traverse" "^7.24.8"
|
||||
"@babel/types" "^7.24.9"
|
||||
convert-source-map "^2.0.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.2"
|
||||
@ -58,12 +58,12 @@
|
||||
"@jridgewell/gen-mapping" "^0.3.0"
|
||||
jsesc "^2.5.1"
|
||||
|
||||
"@babel/generator@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d"
|
||||
integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==
|
||||
"@babel/generator@^7.24.8", "@babel/generator@^7.24.9":
|
||||
version "7.24.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.10.tgz#a4ab681ec2a78bbb9ba22a3941195e28a81d8e76"
|
||||
integrity sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.7"
|
||||
"@babel/types" "^7.24.9"
|
||||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
"@jridgewell/trace-mapping" "^0.3.25"
|
||||
jsesc "^2.5.1"
|
||||
@ -75,26 +75,26 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.7"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9"
|
||||
integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==
|
||||
"@babel/helper-compilation-targets@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271"
|
||||
integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.24.7"
|
||||
"@babel/helper-validator-option" "^7.24.7"
|
||||
browserslist "^4.22.2"
|
||||
"@babel/compat-data" "^7.24.8"
|
||||
"@babel/helper-validator-option" "^7.24.8"
|
||||
browserslist "^4.23.1"
|
||||
lru-cache "^5.1.1"
|
||||
semver "^6.3.1"
|
||||
|
||||
"@babel/helper-create-class-features-plugin@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b"
|
||||
integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==
|
||||
"@babel/helper-create-class-features-plugin@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz#47f546408d13c200c0867f9d935184eaa0851b09"
|
||||
integrity sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.24.7"
|
||||
"@babel/helper-environment-visitor" "^7.24.7"
|
||||
"@babel/helper-function-name" "^7.24.7"
|
||||
"@babel/helper-member-expression-to-functions" "^7.24.7"
|
||||
"@babel/helper-member-expression-to-functions" "^7.24.8"
|
||||
"@babel/helper-optimise-call-expression" "^7.24.7"
|
||||
"@babel/helper-replace-supers" "^7.24.7"
|
||||
"@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
|
||||
@ -123,13 +123,13 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.7"
|
||||
|
||||
"@babel/helper-member-expression-to-functions@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f"
|
||||
integrity sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==
|
||||
"@babel/helper-member-expression-to-functions@^7.24.7", "@babel/helper-member-expression-to-functions@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6"
|
||||
integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==
|
||||
dependencies:
|
||||
"@babel/traverse" "^7.24.7"
|
||||
"@babel/types" "^7.24.7"
|
||||
"@babel/traverse" "^7.24.8"
|
||||
"@babel/types" "^7.24.8"
|
||||
|
||||
"@babel/helper-module-imports@^7.24.7":
|
||||
version "7.24.7"
|
||||
@ -146,10 +146,10 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.22.15"
|
||||
|
||||
"@babel/helper-module-transforms@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8"
|
||||
integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==
|
||||
"@babel/helper-module-transforms@^7.24.9":
|
||||
version "7.24.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz#e13d26306b89eea569180868e652e7f514de9d29"
|
||||
integrity sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==
|
||||
dependencies:
|
||||
"@babel/helper-environment-visitor" "^7.24.7"
|
||||
"@babel/helper-module-imports" "^7.24.7"
|
||||
@ -164,10 +164,10 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.7"
|
||||
|
||||
"@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0"
|
||||
integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==
|
||||
"@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878"
|
||||
integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==
|
||||
|
||||
"@babel/helper-replace-supers@^7.24.7":
|
||||
version "7.24.7"
|
||||
@ -201,28 +201,28 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.7"
|
||||
|
||||
"@babel/helper-string-parser@^7.18.10", "@babel/helper-string-parser@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2"
|
||||
integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==
|
||||
"@babel/helper-string-parser@^7.18.10", "@babel/helper-string-parser@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d"
|
||||
integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db"
|
||||
integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==
|
||||
|
||||
"@babel/helper-validator-option@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6"
|
||||
integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==
|
||||
"@babel/helper-validator-option@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d"
|
||||
integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==
|
||||
|
||||
"@babel/helpers@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416"
|
||||
integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==
|
||||
"@babel/helpers@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.8.tgz#2820d64d5d6686cca8789dd15b074cd862795873"
|
||||
integrity sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==
|
||||
dependencies:
|
||||
"@babel/template" "^7.24.7"
|
||||
"@babel/types" "^7.24.7"
|
||||
"@babel/types" "^7.24.8"
|
||||
|
||||
"@babel/highlight@^7.24.7":
|
||||
version "7.24.7"
|
||||
@ -239,10 +239,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef"
|
||||
integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==
|
||||
|
||||
"@babel/parser@^7.23.9", "@babel/parser@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85"
|
||||
integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==
|
||||
"@babel/parser@^7.23.9", "@babel/parser@^7.24.7", "@babel/parser@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.8.tgz#58a4dbbcad7eb1d48930524a3fd93d93e9084c6f"
|
||||
integrity sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==
|
||||
|
||||
"@babel/plugin-syntax-jsx@^7.23.3":
|
||||
version "7.24.7"
|
||||
@ -259,19 +259,19 @@
|
||||
"@babel/helper-plugin-utils" "^7.24.7"
|
||||
|
||||
"@babel/plugin-transform-typescript@^7.24.6":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz#b006b3e0094bf0813d505e0c5485679eeaf4a881"
|
||||
integrity sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.8.tgz#c104d6286e04bf7e44b8cba1b686d41bad57eb84"
|
||||
integrity sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.24.7"
|
||||
"@babel/helper-create-class-features-plugin" "^7.24.7"
|
||||
"@babel/helper-plugin-utils" "^7.24.7"
|
||||
"@babel/helper-create-class-features-plugin" "^7.24.8"
|
||||
"@babel/helper-plugin-utils" "^7.24.8"
|
||||
"@babel/plugin-syntax-typescript" "^7.24.7"
|
||||
|
||||
"@babel/runtime@^7.21.0":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12"
|
||||
integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e"
|
||||
integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.14.0"
|
||||
|
||||
@ -284,19 +284,19 @@
|
||||
"@babel/parser" "^7.24.7"
|
||||
"@babel/types" "^7.24.7"
|
||||
|
||||
"@babel/traverse@^7.23.9", "@babel/traverse@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5"
|
||||
integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==
|
||||
"@babel/traverse@^7.23.9", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.8.tgz#6c14ed5232b7549df3371d820fbd9abfcd7dfab7"
|
||||
integrity sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.24.7"
|
||||
"@babel/generator" "^7.24.7"
|
||||
"@babel/generator" "^7.24.8"
|
||||
"@babel/helper-environment-visitor" "^7.24.7"
|
||||
"@babel/helper-function-name" "^7.24.7"
|
||||
"@babel/helper-hoist-variables" "^7.24.7"
|
||||
"@babel/helper-split-export-declaration" "^7.24.7"
|
||||
"@babel/parser" "^7.24.7"
|
||||
"@babel/types" "^7.24.7"
|
||||
"@babel/parser" "^7.24.8"
|
||||
"@babel/types" "^7.24.8"
|
||||
debug "^4.3.1"
|
||||
globals "^11.1.0"
|
||||
|
||||
@ -309,12 +309,12 @@
|
||||
"@babel/helper-validator-identifier" "^7.18.6"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.18.2", "@babel/types@^7.22.15", "@babel/types@^7.23.9", "@babel/types@^7.24.7":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2"
|
||||
integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==
|
||||
"@babel/types@^7.18.2", "@babel/types@^7.22.15", "@babel/types@^7.23.9", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9":
|
||||
version "7.24.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.9.tgz#228ce953d7b0d16646e755acf204f4cf3d08cc73"
|
||||
integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==
|
||||
dependencies:
|
||||
"@babel/helper-string-parser" "^7.24.7"
|
||||
"@babel/helper-string-parser" "^7.24.8"
|
||||
"@babel/helper-validator-identifier" "^7.24.7"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
@ -653,7 +653,7 @@
|
||||
dependencies:
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@eslint-community/regexpp@^4.6.1":
|
||||
"@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.6.1":
|
||||
version "4.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
|
||||
integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
|
||||
@ -667,6 +667,21 @@
|
||||
debug "^4.3.1"
|
||||
minimatch "^3.1.2"
|
||||
|
||||
"@eslint/eslintrc@^2.1.4":
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
|
||||
integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
|
||||
dependencies:
|
||||
ajv "^6.12.4"
|
||||
debug "^4.3.2"
|
||||
espree "^9.6.0"
|
||||
globals "^13.19.0"
|
||||
ignore "^5.2.0"
|
||||
import-fresh "^3.2.1"
|
||||
js-yaml "^4.1.0"
|
||||
minimatch "^3.1.2"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@eslint/eslintrc@^3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
|
||||
@ -682,10 +697,15 @@
|
||||
minimatch "^3.1.2"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@eslint/js@9.6.0":
|
||||
version "9.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.6.0.tgz#5b0cb058cc13d9c92d4e561d3538807fa5127c95"
|
||||
integrity sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==
|
||||
"@eslint/js@8.57.0":
|
||||
version "8.57.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
|
||||
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
|
||||
|
||||
"@eslint/js@9.7.0":
|
||||
version "9.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.7.0.tgz#b712d802582f02b11cfdf83a85040a296afec3f0"
|
||||
integrity sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==
|
||||
|
||||
"@eslint/object-schema@^2.1.4":
|
||||
version "2.1.4"
|
||||
@ -717,11 +737,25 @@
|
||||
resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-3.0.0.tgz#f11fdf7dda62fe8e336fa7c6642d9041f30356d7"
|
||||
integrity sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==
|
||||
|
||||
"@humanwhocodes/config-array@^0.11.14":
|
||||
version "0.11.14"
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
|
||||
integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
|
||||
dependencies:
|
||||
"@humanwhocodes/object-schema" "^2.0.2"
|
||||
debug "^4.3.1"
|
||||
minimatch "^3.0.5"
|
||||
|
||||
"@humanwhocodes/module-importer@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
|
||||
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
|
||||
|
||||
"@humanwhocodes/object-schema@^2.0.2":
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
|
||||
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
|
||||
|
||||
"@humanwhocodes/retry@^0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570"
|
||||
@ -1158,9 +1192,9 @@
|
||||
"@types/lodash" "*"
|
||||
|
||||
"@types/lodash@*", "@types/lodash@^4.14.182":
|
||||
version "4.17.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.6.tgz#193ced6a40c8006cfc1ca3f4553444fb38f0e543"
|
||||
integrity sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==
|
||||
version "4.17.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.7.tgz#2f776bcb53adc9e13b2c0dfd493dfcbd7de43612"
|
||||
integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==
|
||||
|
||||
"@types/mime@^1":
|
||||
version "1.3.5"
|
||||
@ -1168,9 +1202,9 @@
|
||||
integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==
|
||||
|
||||
"@types/node@*", "@types/node@>=10.0.0":
|
||||
version "20.14.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.10.tgz#a1a218290f1b6428682e3af044785e5874db469a"
|
||||
integrity sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==
|
||||
version "20.14.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.11.tgz#09b300423343460455043ddd4d0ded6ac579b74b"
|
||||
integrity sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
@ -1206,6 +1240,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8"
|
||||
integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
|
||||
|
||||
"@ungap/structured-clone@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
|
||||
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
|
||||
|
||||
"@vitejs/plugin-vue-jsx@^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.0.0.tgz#7bb65d57153ebf63b2e6ab0cc81029e82206036c"
|
||||
@ -1373,7 +1412,7 @@ acorn-jsx@^5.3.2:
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
|
||||
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
|
||||
|
||||
acorn@^8.11.3, acorn@^8.12.0, acorn@^8.9.0:
|
||||
acorn@^8.11.3, acorn@^8.12.0, acorn@^8.12.1, acorn@^8.9.0:
|
||||
version "8.12.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
|
||||
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
|
||||
@ -1564,7 +1603,7 @@ braces@^3.0.3, braces@~3.0.2:
|
||||
dependencies:
|
||||
fill-range "^7.1.1"
|
||||
|
||||
browserslist@^4.22.2:
|
||||
browserslist@^4.23.1:
|
||||
version "4.23.2"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed"
|
||||
integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
|
||||
@ -1632,9 +1671,9 @@ camelcase@^6.3.0:
|
||||
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
||||
|
||||
caniuse-lite@^1.0.30001640:
|
||||
version "1.0.30001641"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz#3572862cd18befae3f637f2a1101cc033c6782ac"
|
||||
integrity sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==
|
||||
version "1.0.30001642"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz#6aa6610eb24067c246d30c57f055a9d0a7f8d05f"
|
||||
integrity sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==
|
||||
|
||||
chalk@^2.4.2:
|
||||
version "2.4.2"
|
||||
@ -2009,6 +2048,13 @@ dir-glob@^3.0.1:
|
||||
dependencies:
|
||||
path-type "^4.0.0"
|
||||
|
||||
doctrine@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
|
||||
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
|
||||
dependencies:
|
||||
esutils "^2.0.2"
|
||||
|
||||
dom-walk@^0.1.0:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
|
||||
@ -2037,14 +2083,14 @@ ee-first@1.1.1:
|
||||
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
||||
|
||||
electron-to-chromium@^1.4.820:
|
||||
version "1.4.824"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.824.tgz#5adbaf8f2a3466777d97384d6af27abc120bab8b"
|
||||
integrity sha512-GTQnZOP1v0wCuoWzKOxL8rurg9T13QRYISkoICGaZzskBf9laC3V8g9BHTpJv+j9vBRcKOulbGXwMzuzNdVrAA==
|
||||
version "1.4.828"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.828.tgz#a1ee8cd8847448b2898d3f2d9db02113f9c5b35c"
|
||||
integrity sha512-QOIJiWpQJDHAVO4P58pwb133Cwee0nbvy/MV1CwzZVGpkH1RX33N3vsaWRCpR6bF63AAq366neZrRTu7Qlsbbw==
|
||||
|
||||
element-plus@^2.7.6:
|
||||
version "2.7.6"
|
||||
resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.7.6.tgz#09b2c9c1de46dcc6778d37a29d9c0948ce40d635"
|
||||
integrity sha512-36sw1K23hYjgeooR10U6CiCaCp2wvOqwoFurADZVlekeQ9v5U1FhJCFGEXO6i/kZBBMwsE1c9fxjLs9LENw2Rg==
|
||||
version "2.7.7"
|
||||
resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.7.7.tgz#317a4b826d577f4572ca040f2568eb751edd891d"
|
||||
integrity sha512-7ucUiDAxevyBE8JbXBTe9ofHhS047VmWMLoksE45zZ08XSnhnyG7WUuk3gmDbAklfVMHedb9sEV3OovPUWt+Sw==
|
||||
dependencies:
|
||||
"@ctrl/tinycolor" "^3.4.1"
|
||||
"@element-plus/icons-vue" "^2.3.1"
|
||||
@ -2096,9 +2142,9 @@ engine.io-client@~6.5.2:
|
||||
xmlhttprequest-ssl "~2.0.0"
|
||||
|
||||
engine.io-parser@~5.2.1:
|
||||
version "5.2.2"
|
||||
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49"
|
||||
integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==
|
||||
version "5.2.3"
|
||||
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f"
|
||||
integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==
|
||||
|
||||
engine.io@~6.5.2:
|
||||
version "6.5.5"
|
||||
@ -2206,7 +2252,7 @@ eslint-plugin-vue@^9.27.0:
|
||||
vue-eslint-parser "^9.4.3"
|
||||
xml-name-validator "^4.0.0"
|
||||
|
||||
eslint-scope@^7.1.1:
|
||||
eslint-scope@^7.1.1, eslint-scope@^7.2.2:
|
||||
version "7.2.2"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
|
||||
integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
|
||||
@ -2214,15 +2260,15 @@ eslint-scope@^7.1.1:
|
||||
esrecurse "^4.3.0"
|
||||
estraverse "^5.2.0"
|
||||
|
||||
eslint-scope@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc"
|
||||
integrity sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==
|
||||
eslint-scope@^8.0.2:
|
||||
version "8.0.2"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94"
|
||||
integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==
|
||||
dependencies:
|
||||
esrecurse "^4.3.0"
|
||||
estraverse "^5.2.0"
|
||||
|
||||
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1:
|
||||
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
|
||||
version "3.4.3"
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
|
||||
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
|
||||
@ -2232,16 +2278,60 @@ eslint-visitor-keys@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
|
||||
integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
|
||||
|
||||
eslint@^9.6.0:
|
||||
version "9.6.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.6.0.tgz#9f54373afa15e1ba356656a8d96233182027fb49"
|
||||
integrity sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==
|
||||
eslint@^8.56.0:
|
||||
version "8.57.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
|
||||
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.2.0"
|
||||
"@eslint-community/regexpp" "^4.6.1"
|
||||
"@eslint/eslintrc" "^2.1.4"
|
||||
"@eslint/js" "8.57.0"
|
||||
"@humanwhocodes/config-array" "^0.11.14"
|
||||
"@humanwhocodes/module-importer" "^1.0.1"
|
||||
"@nodelib/fs.walk" "^1.2.8"
|
||||
"@ungap/structured-clone" "^1.2.0"
|
||||
ajv "^6.12.4"
|
||||
chalk "^4.0.0"
|
||||
cross-spawn "^7.0.2"
|
||||
debug "^4.3.2"
|
||||
doctrine "^3.0.0"
|
||||
escape-string-regexp "^4.0.0"
|
||||
eslint-scope "^7.2.2"
|
||||
eslint-visitor-keys "^3.4.3"
|
||||
espree "^9.6.1"
|
||||
esquery "^1.4.2"
|
||||
esutils "^2.0.2"
|
||||
fast-deep-equal "^3.1.3"
|
||||
file-entry-cache "^6.0.1"
|
||||
find-up "^5.0.0"
|
||||
glob-parent "^6.0.2"
|
||||
globals "^13.19.0"
|
||||
graphemer "^1.4.0"
|
||||
ignore "^5.2.0"
|
||||
imurmurhash "^0.1.4"
|
||||
is-glob "^4.0.0"
|
||||
is-path-inside "^3.0.3"
|
||||
js-yaml "^4.1.0"
|
||||
json-stable-stringify-without-jsonify "^1.0.1"
|
||||
levn "^0.4.1"
|
||||
lodash.merge "^4.6.2"
|
||||
minimatch "^3.1.2"
|
||||
natural-compare "^1.4.0"
|
||||
optionator "^0.9.3"
|
||||
strip-ansi "^6.0.1"
|
||||
text-table "^0.2.0"
|
||||
|
||||
eslint@^9.6.0:
|
||||
version "9.7.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.7.0.tgz#bedb48e1cdc2362a0caaa106a4c6ed943e8b09e4"
|
||||
integrity sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.2.0"
|
||||
"@eslint-community/regexpp" "^4.11.0"
|
||||
"@eslint/config-array" "^0.17.0"
|
||||
"@eslint/eslintrc" "^3.1.0"
|
||||
"@eslint/js" "9.6.0"
|
||||
"@eslint/js" "9.7.0"
|
||||
"@humanwhocodes/module-importer" "^1.0.1"
|
||||
"@humanwhocodes/retry" "^0.3.0"
|
||||
"@nodelib/fs.walk" "^1.2.8"
|
||||
@ -2250,7 +2340,7 @@ eslint@^9.6.0:
|
||||
cross-spawn "^7.0.2"
|
||||
debug "^4.3.2"
|
||||
escape-string-regexp "^4.0.0"
|
||||
eslint-scope "^8.0.1"
|
||||
eslint-scope "^8.0.2"
|
||||
eslint-visitor-keys "^4.0.0"
|
||||
espree "^10.1.0"
|
||||
esquery "^1.5.0"
|
||||
@ -2281,7 +2371,7 @@ espree@^10.0.1, espree@^10.1.0:
|
||||
acorn-jsx "^5.3.2"
|
||||
eslint-visitor-keys "^4.0.0"
|
||||
|
||||
espree@^9.3.1:
|
||||
espree@^9.3.1, espree@^9.6.0, espree@^9.6.1:
|
||||
version "9.6.1"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
|
||||
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
|
||||
@ -2290,7 +2380,7 @@ espree@^9.3.1:
|
||||
acorn-jsx "^5.3.2"
|
||||
eslint-visitor-keys "^3.4.1"
|
||||
|
||||
esquery@^1.4.0, esquery@^1.5.0:
|
||||
esquery@^1.4.0, esquery@^1.4.2, esquery@^1.5.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
|
||||
integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
|
||||
@ -2364,6 +2454,13 @@ fastq@^1.6.0:
|
||||
dependencies:
|
||||
reusify "^1.0.4"
|
||||
|
||||
file-entry-cache@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
|
||||
integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
|
||||
dependencies:
|
||||
flat-cache "^3.0.4"
|
||||
|
||||
file-entry-cache@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
|
||||
@ -2386,6 +2483,15 @@ find-up@^5.0.0:
|
||||
locate-path "^6.0.0"
|
||||
path-exists "^4.0.0"
|
||||
|
||||
flat-cache@^3.0.4:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
|
||||
integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
|
||||
dependencies:
|
||||
flatted "^3.2.9"
|
||||
keyv "^4.5.3"
|
||||
rimraf "^3.0.2"
|
||||
|
||||
flat-cache@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
|
||||
@ -2484,6 +2590,11 @@ fs-extra@^9.1.0:
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
||||
|
||||
fsevents@~2.3.2, fsevents@~2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
||||
@ -2546,6 +2657,18 @@ glob@^11.0.0:
|
||||
package-json-from-dist "^1.0.0"
|
||||
path-scurry "^2.0.0"
|
||||
|
||||
glob@^7.1.3:
|
||||
version "7.2.3"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.1.1"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
|
||||
@ -2559,7 +2682,7 @@ globals@^11.1.0:
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
||||
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
|
||||
|
||||
globals@^13.24.0:
|
||||
globals@^13.19.0, globals@^13.24.0:
|
||||
version "13.24.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
|
||||
integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
|
||||
@ -2595,6 +2718,11 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
|
||||
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
||||
|
||||
graphemer@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
|
||||
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
|
||||
|
||||
has-flag@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||
@ -2754,16 +2882,24 @@ inflation@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.1.0.tgz#9214db11a47e6f756d111c4f9df96971c60f886c"
|
||||
integrity sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
inherits@2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
|
||||
|
||||
inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
ini@~1.3.0:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
@ -2974,7 +3110,7 @@ keygrip@~1.1.0:
|
||||
dependencies:
|
||||
tsscmp "1.0.6"
|
||||
|
||||
keyv@^4.5.4:
|
||||
keyv@^4.5.3, keyv@^4.5.4:
|
||||
version "4.5.4"
|
||||
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
|
||||
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
|
||||
@ -3262,11 +3398,16 @@ micromatch@^4.0.4:
|
||||
braces "^3.0.3"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
|
||||
mime-db@1.52.0:
|
||||
version "1.52.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
||||
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
||||
|
||||
"mime-db@>= 1.43.0 < 2":
|
||||
version "1.53.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447"
|
||||
integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==
|
||||
|
||||
mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.24, mime-types@~2.1.34:
|
||||
version "2.1.35"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
|
||||
@ -3293,7 +3434,7 @@ minimatch@^10.0.0:
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimatch@^3.1.2:
|
||||
minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||
@ -3322,7 +3463,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
mlly@^1.4.2, mlly@^1.7.0, mlly@^1.7.1:
|
||||
mlly@^1.4.2, mlly@^1.7.1:
|
||||
version "1.7.1"
|
||||
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f"
|
||||
integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==
|
||||
@ -3395,9 +3536,9 @@ node-os-utils@^1.3.7:
|
||||
integrity sha512-fvnX9tZbR7WfCG5BAy3yO/nCLyjVWD6MghEq0z5FDfN+ZXpLWNITBdbifxQkQ25ebr16G0N7eRWJisOcMEHG3Q==
|
||||
|
||||
node-releases@^2.0.14:
|
||||
version "2.0.14"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
|
||||
integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
|
||||
version "2.0.17"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.17.tgz#d74bc4fec38d839eec5db2a3c9c963d4f33cb366"
|
||||
integrity sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==
|
||||
|
||||
node-rsa@^1.1.1:
|
||||
version "1.1.1"
|
||||
@ -3470,7 +3611,7 @@ on-finished@^2.3.0:
|
||||
dependencies:
|
||||
ee-first "1.1.1"
|
||||
|
||||
once@^1.3.1, once@^1.4.0:
|
||||
once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||
@ -3557,7 +3698,7 @@ path-exists@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
|
||||
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
|
||||
|
||||
path-is-absolute@1.0.1:
|
||||
path-is-absolute@1.0.1, path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
|
||||
@ -3627,7 +3768,7 @@ pkg-fetch@3.4.2:
|
||||
tar-fs "^2.1.1"
|
||||
yargs "^16.2.0"
|
||||
|
||||
pkg-types@^1.0.3, pkg-types@^1.1.1:
|
||||
pkg-types@^1.0.3, pkg-types@^1.1.1, pkg-types@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.3.tgz#161bb1242b21daf7795036803f28e30222e476e3"
|
||||
integrity sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==
|
||||
@ -3662,9 +3803,9 @@ possible-typed-array-names@^1.0.0:
|
||||
integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
|
||||
|
||||
postcss-selector-parser@^6.0.15:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53"
|
||||
integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
|
||||
integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==
|
||||
dependencies:
|
||||
cssesc "^3.0.0"
|
||||
util-deprecate "^1.0.2"
|
||||
@ -3860,6 +4001,13 @@ rfdc@^1.3.0:
|
||||
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
|
||||
integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
|
||||
|
||||
rimraf@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
|
||||
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rimraf@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.0.1.tgz#ffb8ad8844dd60332ab15f52bc104bc3ed71ea4e"
|
||||
@ -3928,9 +4076,9 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sass@^1.77.7:
|
||||
version "1.77.7"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.7.tgz#ef3520edc8f59da089f25891d8a6bebf93668ee0"
|
||||
integrity sha512-9ywH75cO+rLjbrZ6en3Gp8qAMwPGBapFtlsMJoDTkcMU/bSe5a6cjKVUn5Jr4Gzg5GbP3HE8cm+02pLCgcoMow==
|
||||
version "1.77.8"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd"
|
||||
integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
immutable "^4.0.0"
|
||||
@ -3947,9 +4095,9 @@ semver@^6.3.1:
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
|
||||
semver@^7.3.5, semver@^7.3.6, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0:
|
||||
version "7.6.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
|
||||
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
|
||||
version "7.6.3"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
|
||||
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
|
||||
|
||||
set-function-length@^1.2.1:
|
||||
version "1.2.2"
|
||||
@ -4357,9 +4505,9 @@ typedarray@^0.0.6:
|
||||
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
|
||||
|
||||
ufo@^1.5.3:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344"
|
||||
integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
|
||||
integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
|
||||
|
||||
undefsafe@^2.0.5:
|
||||
version "2.0.5"
|
||||
@ -4371,24 +4519,24 @@ undici-types@~5.26.4:
|
||||
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
|
||||
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
|
||||
|
||||
unimport@^3.7.1:
|
||||
version "3.7.2"
|
||||
resolved "https://registry.yarnpkg.com/unimport/-/unimport-3.7.2.tgz#36fead8bdeb2695b6026861318bf111ad0596a5b"
|
||||
integrity sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==
|
||||
unimport@^3.7.2:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/unimport/-/unimport-3.8.0.tgz#e2da7e960f7265c221496069826ca693ba1af346"
|
||||
integrity sha512-leq5bfNxyytAer8cYPi0dR0L6p8ZnZ8NxR9TKsSIbJM47TOxC5qURJXQZ8xuBGqLakUqYO6CvVtf3lWKo9k+8A==
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "^5.1.0"
|
||||
acorn "^8.11.3"
|
||||
acorn "^8.12.1"
|
||||
escape-string-regexp "^5.0.0"
|
||||
estree-walker "^3.0.3"
|
||||
fast-glob "^3.3.2"
|
||||
local-pkg "^0.5.0"
|
||||
magic-string "^0.30.10"
|
||||
mlly "^1.7.0"
|
||||
mlly "^1.7.1"
|
||||
pathe "^1.1.2"
|
||||
pkg-types "^1.1.1"
|
||||
pkg-types "^1.1.3"
|
||||
scule "^1.3.0"
|
||||
strip-literal "^2.1.0"
|
||||
unplugin "^1.10.1"
|
||||
unplugin "^1.11.0"
|
||||
|
||||
universalify@^0.1.0:
|
||||
version "0.1.2"
|
||||
@ -4406,23 +4554,23 @@ unpipe@1.0.0:
|
||||
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
|
||||
|
||||
unplugin-auto-import@^0.17.6:
|
||||
version "0.17.6"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-auto-import/-/unplugin-auto-import-0.17.6.tgz#0445f1235137a9182dc01c31be5f48ebf77a6a72"
|
||||
integrity sha512-dmX0Pex5DzMzVuALkexboOZvh51fL/BD6aoPO7qHoTYGlQp0GRKsREv2KMF1lzYI9SXKQiRxAjwzbQnrFFNydQ==
|
||||
version "0.17.8"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-auto-import/-/unplugin-auto-import-0.17.8.tgz#8dd5d1f21700171242553f1a476bd43ffad74af6"
|
||||
integrity sha512-CHryj6HzJ+n4ASjzwHruD8arhbdl+UXvhuAIlHDs15Y/IMecG3wrf7FVg4pVH/DIysbq/n0phIjNHAjl7TG7Iw==
|
||||
dependencies:
|
||||
"@antfu/utils" "^0.7.8"
|
||||
"@antfu/utils" "^0.7.10"
|
||||
"@rollup/pluginutils" "^5.1.0"
|
||||
fast-glob "^3.3.2"
|
||||
local-pkg "^0.5.0"
|
||||
magic-string "^0.30.10"
|
||||
minimatch "^9.0.4"
|
||||
unimport "^3.7.1"
|
||||
unplugin "^1.10.1"
|
||||
unimport "^3.7.2"
|
||||
unplugin "^1.11.0"
|
||||
|
||||
unplugin-vue-components@^0.27.2:
|
||||
version "0.27.2"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-vue-components/-/unplugin-vue-components-0.27.2.tgz#bc95691b54d1cf075af468f4ec7b4b2d05dfebfa"
|
||||
integrity sha512-YifnsmslMRNt+JRQiCG4ZX1+xUQuubUZm76K7Qtg8dmchZJkHIDxZSyfZb5/jqrLWMTm/TUjGJ3ZDlzO6SFnSQ==
|
||||
version "0.27.3"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-vue-components/-/unplugin-vue-components-0.27.3.tgz#e7a9980f7feb649306aa92afd61b760385479d42"
|
||||
integrity sha512-5wg7lbdg5ZcrAQNzyYK+6gcg/DG8K6rO+f5YeuvqGHs/PhpapBvpA4O/0ex/pFthE5WgRk43iWuRZEMLVsdz4Q==
|
||||
dependencies:
|
||||
"@antfu/utils" "^0.7.10"
|
||||
"@rollup/pluginutils" "^5.1.0"
|
||||
@ -4433,9 +4581,9 @@ unplugin-vue-components@^0.27.2:
|
||||
magic-string "^0.30.10"
|
||||
minimatch "^9.0.5"
|
||||
mlly "^1.7.1"
|
||||
unplugin "^1.10.1"
|
||||
unplugin "^1.11.0"
|
||||
|
||||
unplugin@^1.10.1:
|
||||
unplugin@^1.11.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.11.0.tgz#09237b4011075e65c8f4d0ae06e221dee12750e3"
|
||||
integrity sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==
|
||||
@ -4491,9 +4639,9 @@ vite-plugin-compression@^0.5.1:
|
||||
fs-extra "^10.0.0"
|
||||
|
||||
vite@^5.3.3:
|
||||
version "5.3.3"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.3.tgz#5265b1f0a825b3b6564c2d07524777c83e3c04c2"
|
||||
integrity sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==
|
||||
version "5.3.4"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.4.tgz#b36ebd47c8a5e3a8727046375d5f10bf9fdf8715"
|
||||
integrity sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==
|
||||
dependencies:
|
||||
esbuild "^0.21.3"
|
||||
postcss "^8.4.39"
|
||||
|
Loading…
x
Reference in New Issue
Block a user