提交 db758aa0 编写于 作者: DCloud-WZF's avatar DCloud-WZF 💬

feat(vue-devtools): add cli debug page

上级 762dca60
...@@ -9,18 +9,54 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau ...@@ -9,18 +9,54 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
var path__default = /*#__PURE__*/_interopDefaultLegacy(path); var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
// eslint-disable-next-line no-restricted-globals
const { initDevtoolsServer } = require('../lib/front/server.js');
const uniVueDevtoolsPlugin = () => { const uniVueDevtoolsPlugin = () => {
let copied = false; let copied = false;
return { return {
name: 'uni:vue-devtools', name: 'uni:vue-devtools',
config() { config() {
return { return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
define: { let __VUE_DEVTOOLS_HOST__ = 'localhost';
__VUE_PROD_DEVTOOLS__: process.env.__VUE_PROD_DEVTOOLS__ === 'true', let __VUE_DEVTOOLS_PORT__ = 8098;
__VUE_DEVTOOLS_HOST__: JSON.stringify(process.env.__VUE_DEVTOOLS_HOST__ || 'localhost'), if (process.env.__VUE_PROD_DEVTOOLS__) {
__VUE_DEVTOOLS_PORT__: JSON.stringify(process.env.__VUE_DEVTOOLS_PORT__ || '8098'), const { socketHost, socketPort } = yield initDevtoolsServer();
}, __VUE_DEVTOOLS_HOST__ = socketHost;
}; __VUE_DEVTOOLS_PORT__ = socketPort;
}
resolve({
define: {
__VUE_PROD_DEVTOOLS__: process.env.__VUE_PROD_DEVTOOLS__ === 'true',
__VUE_DEVTOOLS_HOST__: JSON.stringify(`${__VUE_DEVTOOLS_HOST__}`),
__VUE_DEVTOOLS_PORT__: JSON.stringify(`${__VUE_DEVTOOLS_PORT__}`),
},
});
}));
}, },
generateBundle() { generateBundle() {
// 仅处理小程序 // 仅处理小程序
...@@ -40,34 +76,36 @@ const uniVueDevtoolsPlugin = () => { ...@@ -40,34 +76,36 @@ const uniVueDevtoolsPlugin = () => {
}, },
}; };
}; };
var index = () => [ var index = () => {
uniVueDevtoolsPlugin(), return [
uniCliShared.defineUniMainJsPlugin((opts) => { uniVueDevtoolsPlugin(),
let devtoolsCode = `;import '@dcloudio/uni-vue-devtools';`; uniCliShared.defineUniMainJsPlugin((opts) => {
if (uniCliShared.isMiniProgramPlatform()) { let devtoolsCode = `;import '@dcloudio/uni-vue-devtools';`;
devtoolsCode += `require('./vue-devtools/hook.js');require('./vue-devtools/backend.js');`; if (uniCliShared.isMiniProgramPlatform()) {
} devtoolsCode += `require('./vue-devtools/hook.js');require('./vue-devtools/backend.js');`;
else { }
const dir = process.env.UNI_PLATFORM === 'app' ? 'app' : 'web'; else {
devtoolsCode += `import '@dcloudio/uni-vue-devtools/lib/${dir}/hook.js';import '@dcloudio/uni-vue-devtools/lib/${dir}/backend.js';`; const dir = process.env.UNI_PLATFORM === 'app' ? 'app' : 'web';
} devtoolsCode += `import '@dcloudio/uni-vue-devtools/lib/${dir}/hook.js';import '@dcloudio/uni-vue-devtools/lib/${dir}/backend.js';`;
return { }
name: 'uni:vue-devtools-main-js', return {
enforce: 'post', name: 'uni:vue-devtools-main-js',
transform(code, id) { enforce: 'post',
if (process.env.__VUE_PROD_DEVTOOLS__ !== 'true') { transform(code, id) {
return; if (process.env.__VUE_PROD_DEVTOOLS__ !== 'true') {
} return;
if (!opts.filter(id)) { }
return; if (!opts.filter(id)) {
} return;
return { }
code: devtoolsCode + code, return {
map: null, code: devtoolsCode + code,
}; map: null,
}, };
}; },
}), };
]; }),
];
};
module.exports = index; module.exports = index;
此差异已折叠。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="../icons/favicon.ico" >
<title>uni-dev-tools</title>
<style>
#app,
#intro {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
#intro {
z-index: 100000;
justify-content: center;
align-items: center;
background-color: #fff;
text-align: center;
font-family: Roboto, sans-serif;
color: #484848;
}
#intro.hidden {
display: none;
}
#intro #logo {
width: 120px;
}
#intro .title {
margin: 30px 0;
font-size: 26px;
}
</style>
</head>
<body>
<div id="intro">
<img src="./icons/128.png" alt="" id="logo" />
<h2 class="title">
Waiting for connection...
</h2>
</div>
<div id="app">
</div>
<script src='./mp-alipay/network.js'></script>
<script src='./devtools.js'></script>
</body>
</html>
\ No newline at end of file
window.process = {
env: {
HOST: '192.168.12.130',
PORT: '8099',
}
}
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="../icons/favicon.ico" >
<title>uni-dev-tools</title>
<style>
#app,
#intro {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
#intro {
z-index: 100000;
justify-content: center;
align-items: center;
background-color: #fff;
text-align: center;
font-family: Roboto, sans-serif;
color: #484848;
}
#intro.hidden {
display: none;
}
#intro #logo {
width: 120px;
}
#intro .title {
margin: 30px 0;
font-size: 26px;
}
</style>
</head>
<body>
<div id="intro">
<img src="./icons/128.png" alt="" id="logo" />
<h2 class="title">
Waiting for connection...
</h2>
</div>
<div id="app">
</div>
<script src='./mp-baidu/network.js'></script>
<script src='./devtools.js'></script>
</body>
</html>
\ No newline at end of file
window.process = {
env: {
HOST: '192.168.12.130',
PORT: '8100',
}
}
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="../icons/favicon.ico" >
<title>uni-dev-tools</title>
<style>
#app,
#intro {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
#intro {
z-index: 100000;
justify-content: center;
align-items: center;
background-color: #fff;
text-align: center;
font-family: Roboto, sans-serif;
color: #484848;
}
#intro.hidden {
display: none;
}
#intro #logo {
width: 120px;
}
#intro .title {
margin: 30px 0;
font-size: 26px;
}
</style>
</head>
<body>
<div id="intro">
<img src="./icons/128.png" alt="" id="logo" />
<h2 class="title">
Waiting for connection...
</h2>
</div>
<div id="app">
</div>
<script src='./mp-kuaishou/network.js'></script>
<script src='./devtools.js'></script>
</body>
</html>
\ No newline at end of file
window.process = {
env: {
HOST: '192.168.12.130',
PORT: '8098',
}
}
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="../icons/favicon.ico" >
<title>uni-dev-tools</title>
<style>
#app,
#intro {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
#intro {
z-index: 100000;
justify-content: center;
align-items: center;
background-color: #fff;
text-align: center;
font-family: Roboto, sans-serif;
color: #484848;
}
#intro.hidden {
display: none;
}
#intro #logo {
width: 120px;
}
#intro .title {
margin: 30px 0;
font-size: 26px;
}
</style>
</head>
<body>
<div id="intro">
<img src="./icons/128.png" alt="" id="logo" />
<h2 class="title">
Waiting for connection...
</h2>
</div>
<div id="app">
</div>
<script src='./mp-lark/network.js'></script>
<script src='./devtools.js'></script>
</body>
</html>
\ No newline at end of file
window.process = {
env: {
HOST: '192.168.12.130',
PORT: '8098',
}
}
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="../icons/favicon.ico" >
<title>uni-dev-tools</title>
<style>
#app,
#intro {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
#intro {
z-index: 100000;
justify-content: center;
align-items: center;
background-color: #fff;
text-align: center;
font-family: Roboto, sans-serif;
color: #484848;
}
#intro.hidden {
display: none;
}
#intro #logo {
width: 120px;
}
#intro .title {
margin: 30px 0;
font-size: 26px;
}
</style>
</head>
<body>
<div id="intro">
<img src="./icons/128.png" alt="" id="logo" />
<h2 class="title">
Waiting for connection...
</h2>
</div>
<div id="app">
</div>
<script src='./mp-qq/network.js'></script>
<script src='./devtools.js'></script>
</body>
</html>
\ No newline at end of file
window.process = {
env: {
HOST: '192.168.12.130',
PORT: '8100',
}
}
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="../icons/favicon.ico" >
<title>uni-dev-tools</title>
<style>
#app,
#intro {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
#intro {
z-index: 100000;
justify-content: center;
align-items: center;
background-color: #fff;
text-align: center;
font-family: Roboto, sans-serif;
color: #484848;
}
#intro.hidden {
display: none;
}
#intro #logo {
width: 120px;
}
#intro .title {
margin: 30px 0;
font-size: 26px;
}
</style>
</head>
<body>
<div id="intro">
<img src="./icons/128.png" alt="" id="logo" />
<h2 class="title">
Waiting for connection...
</h2>
</div>
<div id="app">
</div>
<script src='./mp-toutiao/network.js'></script>
<script src='./devtools.js'></script>
</body>
</html>
\ No newline at end of file
window.process = {
env: {
HOST: '192.168.12.130',
PORT: '8099',
}
}
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="shortcut icon" href="../icons/favicon.ico" >
<title>uni-dev-tools</title>
<style>
#app,
#intro {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
#intro {
z-index: 100000;
justify-content: center;
align-items: center;
background-color: #fff;
text-align: center;
font-family: Roboto, sans-serif;
color: #484848;
}
#intro.hidden {
display: none;
}
#intro #logo {
width: 120px;
}
#intro .title {
margin: 30px 0;
font-size: 26px;
}
</style>
</head>
<body>
<div id="intro">
<img src="./icons/128.png" alt="" id="logo" />
<h2 class="title">
Waiting for connection...
</h2>
</div>
<div id="app">
</div>
<script src='./mp-weixin/network.js'></script>
<script src='./devtools.js'></script>
</body>
</html>
\ No newline at end of file
window.process = {
env: {
HOST: '192.168.12.130',
PORT: '8098',
}
}
\ No newline at end of file
const _detectPort = require('detect-port');
const os = require('os')
const { createServer } = require('http')
const { Server } = require('socket.io')
const express = require('express')
const app = express()
const path = require('path')
const fs = require('fs')
const colors = require('picocolors')
const open = require('open')
exports.initDevtoolsServer = async () => {
const network = getNetwork()
const socketHost = process.env.__VUE_DEVTOOLS_HOST__ || network
const socketPort = await detectPort(process.env.__VUE_DEVTOOLS_PORT__ || 8098)
initSocketServer(socketHost, socketPort)
const devtoolsPort = await detectPort(9098)
initFrontServer(socketHost, socketPort, network, devtoolsPort)
return { socketHost, socketPort }
}
function getNetwork() {
const networks = Object.values(os.networkInterfaces())
.flatMap((nInterface) => nInterface ?? [])
.filter(
(detail) =>
detail &&
detail.address &&
// Node < v18
((typeof detail.family === 'string' && detail.family === 'IPv4') ||
// Node >= v18
(typeof detail.family === 'number' && detail.family === 4))
)
for (let network of networks) {
if (!network.address.includes('127.0.0.1')) {
return network.address
}
}
}
function detectPort(port) {
return _detectPort(port)
.then(_port => {
return port == _port ? port : detectPort(_port)
})
.catch(err => {
console.log(colors.red(err))
})
}
function initFrontServer(socketHost, socketPort, network, devtoolsPort) {
const platform = process.env.UNI_PLATFORM
app.use(express.static(__dirname))
app.get('/', (_, res) => {
res.send(fs.readFileSync(path.resolve(__dirname, `./${platform}/app.html`)).toString())
})
writeNetworkFile(platform, socketHost, socketPort)
app.listen(devtoolsPort, 'localhost', () => {
const colorUrl = (url) => colors.cyan(url.replace(/:(\d+)\//, (_, port) => `:${colors.bold(port)}/`))
const networkUrl = `http://${network}:${devtoolsPort}`
console.log(`\n${colors.cyan('uni-vue-devtools')} ${colors.green('server running at:')}\n ${colors.green('')} ${colorUrl(networkUrl)}\n`)
open(`http:localhost:${devtoolsPort}`)
})
}
function writeNetworkFile(platform, HOST, PORT) {
fs.open(
path.resolve(__dirname, `./${platform}/network.js`),
'w',
(err, fd) => {
if (err) {
console.log(colors.red(err))
return
}
fs.write(
fd,
`
window.process = {
env: {
HOST: '${HOST}',
PORT: '${PORT}',
}
}
`,
(err) => {
if (err) {
console.log(colors.red(err))
}
}
)
}
)
}
function initSocketServer(host, port) {
const httpServer = createServer(app)
const io = new Server(httpServer, {
cors: {
origin: true,
},
})
// Middleman
io.on('connection', function (socket) {
// Disconnect any previously connected apps
socket.broadcast.emit('vue-devtools-disconnect-backend')
socket.on('vue-devtools-init', () => {
socket.broadcast.emit('vue-devtools-init')
})
socket.on('disconnect', (reason) => {
if (reason.indexOf('client')) {
socket.broadcast.emit('vue-devtools-disconnect-devtools')
}
})
socket.on('vue-message', data => {
socket.broadcast.emit('vue-message', data)
})
})
httpServer.listen(port, host)
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"name": "@dcloudio/uni-vue-devtools", "name": "@dcloudio/uni-vue-devtools",
"version": "3.0.0-alpha-3060920221117001", "version": "3.0.0-alpha-3060920221117001",
"description": "uni-vue-devtools", "description": "uni-vue-devtools",
"main": "dist/runtime.es.js", "module": "dist/runtime.es.js",
"files": [ "files": [
"dist" "dist"
], ],
...@@ -21,6 +21,12 @@ ...@@ -21,6 +21,12 @@
"main": "dist/uni.compiler.js" "main": "dist/uni.compiler.js"
}, },
"dependencies": { "dependencies": {
"@dcloudio/uni-cli-shared": "3.0.0-alpha-3060920221117001" "@dcloudio/uni-cli-shared": "3.0.0-alpha-3060920221117001",
"detect-port": "^1.5.1",
"express": "^4.17.1",
"open": "^8.4.0",
"picocolors": "^1.0.0",
"socket.io": "^4.4.0",
"tslib": "^2.4.1"
} }
} }
...@@ -5,23 +5,32 @@ import { ...@@ -5,23 +5,32 @@ import {
defineUniMainJsPlugin, defineUniMainJsPlugin,
isMiniProgramPlatform, isMiniProgramPlatform,
} from '@dcloudio/uni-cli-shared' } from '@dcloudio/uni-cli-shared'
// eslint-disable-next-line no-restricted-globals
const { initDevtoolsServer } = require('../lib/front/server.js')
const uniVueDevtoolsPlugin = (): Plugin => { const uniVueDevtoolsPlugin = (): Plugin => {
let copied = false let copied = false
return { return {
name: 'uni:vue-devtools', name: 'uni:vue-devtools',
config() { config() {
return { return new Promise(async (resolve) => {
define: { let __VUE_DEVTOOLS_HOST__ = 'localhost'
__VUE_PROD_DEVTOOLS__: process.env.__VUE_PROD_DEVTOOLS__ === 'true', let __VUE_DEVTOOLS_PORT__ = 8098
__VUE_DEVTOOLS_HOST__: JSON.stringify(
process.env.__VUE_DEVTOOLS_HOST__ || 'localhost' if (process.env.__VUE_PROD_DEVTOOLS__) {
), const { socketHost, socketPort } = await initDevtoolsServer()
__VUE_DEVTOOLS_PORT__: JSON.stringify( __VUE_DEVTOOLS_HOST__ = socketHost
process.env.__VUE_DEVTOOLS_PORT__ || '8098' __VUE_DEVTOOLS_PORT__ = socketPort
), }
},
} resolve({
define: {
__VUE_PROD_DEVTOOLS__: process.env.__VUE_PROD_DEVTOOLS__ === 'true',
__VUE_DEVTOOLS_HOST__: JSON.stringify(`${__VUE_DEVTOOLS_HOST__}`),
__VUE_DEVTOOLS_PORT__: JSON.stringify(`${__VUE_DEVTOOLS_PORT__}`),
},
})
})
}, },
generateBundle() { generateBundle() {
// 仅处理小程序 // 仅处理小程序
...@@ -51,32 +60,34 @@ const uniVueDevtoolsPlugin = (): Plugin => { ...@@ -51,32 +60,34 @@ const uniVueDevtoolsPlugin = (): Plugin => {
} }
} }
export default () => [ export default () => {
uniVueDevtoolsPlugin(), return [
defineUniMainJsPlugin((opts) => { uniVueDevtoolsPlugin(),
let devtoolsCode = `;import '@dcloudio/uni-vue-devtools';` defineUniMainJsPlugin((opts) => {
if (isMiniProgramPlatform()) { let devtoolsCode = `;import '@dcloudio/uni-vue-devtools';`
devtoolsCode += `require('./vue-devtools/hook.js');require('./vue-devtools/backend.js');` if (isMiniProgramPlatform()) {
} else { devtoolsCode += `require('./vue-devtools/hook.js');require('./vue-devtools/backend.js');`
const dir = process.env.UNI_PLATFORM === 'app' ? 'app' : 'web' } else {
devtoolsCode += `import '@dcloudio/uni-vue-devtools/lib/${dir}/hook.js';import '@dcloudio/uni-vue-devtools/lib/${dir}/backend.js';` const dir = process.env.UNI_PLATFORM === 'app' ? 'app' : 'web'
} devtoolsCode += `import '@dcloudio/uni-vue-devtools/lib/${dir}/hook.js';import '@dcloudio/uni-vue-devtools/lib/${dir}/backend.js';`
}
return { return {
name: 'uni:vue-devtools-main-js', name: 'uni:vue-devtools-main-js',
enforce: 'post', enforce: 'post',
transform(code: string, id: string) { transform(code: string, id: string) {
if (process.env.__VUE_PROD_DEVTOOLS__ !== 'true') { if (process.env.__VUE_PROD_DEVTOOLS__ !== 'true') {
return return
} }
if (!opts.filter(id)) { if (!opts.filter(id)) {
return return
} }
return { return {
code: devtoolsCode + code, code: devtoolsCode + code,
map: null, map: null,
} }
}, },
} }
}), }),
] ]
}
declare const __VUE_DEVTOOLS_HOST__: string declare const __VUE_DEVTOOLS_HOST__: string
declare const __VUE_DEVTOOLS_PORT__: string declare const __VUE_DEVTOOLS_PORT__: string
declare const my: any
type Callback = (data: unknown) => void type Callback = (data: unknown) => void
......
...@@ -10,5 +10,9 @@ ...@@ -10,5 +10,9 @@
"../global.d.ts", "../global.d.ts",
"../shims-node.d.ts", "../shims-node.d.ts",
"../shims-uni-app.d.ts" "../shims-uni-app.d.ts"
] ],
"baseUrl":".",
"paths": {
"tslib" : ["node_modules/tslib/tslib.d.ts"]
}
} }
...@@ -836,8 +836,20 @@ importers: ...@@ -836,8 +836,20 @@ importers:
packages/uni-vue-devtools: packages/uni-vue-devtools:
specifiers: specifiers:
'@dcloudio/uni-cli-shared': 3.0.0-alpha-3060920221117001 '@dcloudio/uni-cli-shared': 3.0.0-alpha-3060920221117001
detect-port: ^1.5.1
express: ^4.17.1
open: ^8.4.0
picocolors: ^1.0.0
socket.io: ^4.4.0
tslib: ^2.4.1
dependencies: dependencies:
'@dcloudio/uni-cli-shared': link:../uni-cli-shared '@dcloudio/uni-cli-shared': link:../uni-cli-shared
detect-port: 1.5.1
express: 4.18.2
open: 8.4.0
picocolors: 1.0.0
socket.io: 4.5.4
tslib: 2.4.1
packages/uts: packages/uts:
specifiers: specifiers:
...@@ -2756,6 +2768,10 @@ packages: ...@@ -2756,6 +2768,10 @@ packages:
'@sinonjs/commons': 1.8.3 '@sinonjs/commons': 1.8.3
dev: true dev: true
/@socket.io/component-emitter/3.1.0:
resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==}
dev: false
/@types/adm-zip/0.5.0: /@types/adm-zip/0.5.0:
resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==}
dependencies: dependencies:
...@@ -2808,6 +2824,14 @@ packages: ...@@ -2808,6 +2824,14 @@ packages:
'@types/node': 18.11.9 '@types/node': 18.11.9
dev: true dev: true
/@types/cookie/0.4.1:
resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==}
dev: false
/@types/cors/2.8.12:
resolution: {integrity: sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==}
dev: false
/@types/debug/4.1.7: /@types/debug/4.1.7:
resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
dependencies: dependencies:
...@@ -3596,6 +3620,11 @@ packages: ...@@ -3596,6 +3620,11 @@ packages:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: true dev: true
/base64id/2.0.0:
resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==}
engines: {node: ^4.5.0 || >= 5.9}
dev: false
/base64url/3.0.1: /base64url/3.0.1:
resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
...@@ -4055,6 +4084,11 @@ packages: ...@@ -4055,6 +4084,11 @@ packages:
resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=}
dev: false dev: false
/cookie/0.4.2:
resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
engines: {node: '>= 0.6'}
dev: false
/cookie/0.5.0: /cookie/0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
...@@ -4085,6 +4119,14 @@ packages: ...@@ -4085,6 +4119,14 @@ packages:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: true dev: true
/cors/2.8.5:
resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
engines: {node: '>= 0.10'}
dependencies:
object-assign: 4.1.1
vary: 1.1.2
dev: false
/cosmiconfig/7.0.1: /cosmiconfig/7.0.1:
resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
...@@ -4330,6 +4372,11 @@ packages: ...@@ -4330,6 +4372,11 @@ packages:
abstract-leveldown: 0.12.4 abstract-leveldown: 0.12.4
dev: true dev: true
/define-lazy-prop/2.0.0:
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
engines: {node: '>=8'}
dev: false
/delayed-stream/1.0.0: /delayed-stream/1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
...@@ -4355,6 +4402,16 @@ packages: ...@@ -4355,6 +4402,16 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/detect-port/1.5.1:
resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==}
hasBin: true
dependencies:
address: 1.2.1
debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
/diff-sequences/29.3.1: /diff-sequences/29.3.1:
resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
...@@ -4426,6 +4483,31 @@ packages: ...@@ -4426,6 +4483,31 @@ packages:
once: 1.4.0 once: 1.4.0
dev: true dev: true
/engine.io-parser/5.0.4:
resolution: {integrity: sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==}
engines: {node: '>=10.0.0'}
dev: false
/engine.io/6.2.1:
resolution: {integrity: sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==}
engines: {node: '>=10.0.0'}
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.12
'@types/node': 18.11.9
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
cors: 2.8.5
debug: 4.3.4
engine.io-parser: 5.0.4
ws: 8.2.3
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
dev: false
/enquirer/2.3.6: /enquirer/2.3.6:
resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==}
engines: {node: '>=8.6'} engines: {node: '>=8.6'}
...@@ -5455,6 +5537,12 @@ packages: ...@@ -5455,6 +5537,12 @@ packages:
dependencies: dependencies:
has: 1.0.3 has: 1.0.3
/is-docker/2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
hasBin: true
dev: false
/is-extglob/2.1.1: /is-extglob/2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
...@@ -5534,6 +5622,13 @@ packages: ...@@ -5534,6 +5622,13 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/is-wsl/2.2.0:
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
engines: {node: '>=8'}
dependencies:
is-docker: 2.2.1
dev: false
/is/0.2.7: /is/0.2.7:
resolution: {integrity: sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==} resolution: {integrity: sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==}
dev: true dev: true
...@@ -6577,6 +6672,11 @@ packages: ...@@ -6577,6 +6672,11 @@ packages:
dependencies: dependencies:
path-key: 3.1.1 path-key: 3.1.1
/object-assign/4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
dev: false
/object-inspect/1.12.2: /object-inspect/1.12.2:
resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
dev: false dev: false
...@@ -6621,6 +6721,15 @@ packages: ...@@ -6621,6 +6721,15 @@ packages:
dependencies: dependencies:
mimic-fn: 2.1.0 mimic-fn: 2.1.0
/open/8.4.0:
resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==}
engines: {node: '>=12'}
dependencies:
define-lazy-prop: 2.0.0
is-docker: 2.2.1
is-wsl: 2.2.0
dev: false
/optionator/0.9.1: /optionator/0.9.1:
resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
...@@ -7352,7 +7461,7 @@ packages: ...@@ -7352,7 +7461,7 @@ packages:
/rxjs/7.5.7: /rxjs/7.5.7:
resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==}
dependencies: dependencies:
tslib: 2.4.0 tslib: 2.4.1
dev: true dev: true
/safe-area-insets/1.4.1: /safe-area-insets/1.4.1:
...@@ -7508,6 +7617,36 @@ packages: ...@@ -7508,6 +7617,36 @@ packages:
is-fullwidth-code-point: 3.0.0 is-fullwidth-code-point: 3.0.0
dev: true dev: true
/socket.io-adapter/2.4.0:
resolution: {integrity: sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==}
dev: false
/socket.io-parser/4.2.1:
resolution: {integrity: sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==}
engines: {node: '>=10.0.0'}
dependencies:
'@socket.io/component-emitter': 3.1.0
debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
/socket.io/4.5.4:
resolution: {integrity: sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==}
engines: {node: '>=10.0.0'}
dependencies:
accepts: 1.3.8
base64id: 2.0.0
debug: 4.3.4
engine.io: 6.2.1
socket.io-adapter: 2.4.0
socket.io-parser: 4.2.1
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
dev: false
/source-map-js/1.0.2: /source-map-js/1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
...@@ -7797,9 +7936,8 @@ packages: ...@@ -7797,9 +7936,8 @@ packages:
resolution: {integrity: sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==} resolution: {integrity: sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==}
dev: true dev: true
/tslib/2.4.0: /tslib/2.4.1:
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
dev: true
/tsutils/3.21.0_typescript@4.9.3: /tsutils/3.21.0_typescript@4.9.3:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
...@@ -8203,6 +8341,19 @@ packages: ...@@ -8203,6 +8341,19 @@ packages:
optional: true optional: true
dev: false dev: false
/ws/8.2.3:
resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
dev: false
/xmlhttprequest/1.8.0: /xmlhttprequest/1.8.0:
resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册