mirror of
https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced.git
synced 2026-08-12 17:10:37 +00:00
Compare commits
No commits in common. "6946dc8e14b6fb125191bc43525d4faa8123d8ae" and "60af95ac06e4b7cf9c711f96746d2bf459f57301" have entirely different histories.
6946dc8e14
...
60af95ac06
@ -45,14 +45,14 @@
|
|||||||
|
|
||||||
### 环境要求
|
### 环境要求
|
||||||
|
|
||||||
- Node.js 22 及以上
|
- Node.js 18 及以上
|
||||||
- 推荐使用 pnpm 进行依赖管理
|
- 推荐使用 pnpm 进行依赖管理
|
||||||
|
|
||||||
### 安装
|
### 安装
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/neteasecloudmusicapienhanced/api-enhanced.git
|
git clone https://github.com/neteasecloudmusicapienhanced/api-enhanced.git
|
||||||
cd api-enhanced
|
cd api
|
||||||
pnpm i
|
pnpm i
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
14
package.json
14
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@neteasecloudmusicapienhanced/api",
|
"name": "@neteasecloudmusicapienhanced/api",
|
||||||
"version": "4.36.2",
|
"version": "4.36.1",
|
||||||
"description": "全网最全的网易云音乐API接口 || A revival project for NeteaseCloudMusicApi Node.js Services (Half Refactor & Enhanced) || 网易云音乐 API 备份 + 增强 || 本项目自原版v4.28.0版本后开始自行维护",
|
"description": "全网最全的网易云音乐API接口 || A revival project for NeteaseCloudMusicApi Node.js Services (Half Refactor & Enhanced) || 网易云音乐 API 备份 + 增强 || 本项目自原版v4.28.0版本后开始自行维护",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nodemon app.js",
|
"dev": "nodemon app.js",
|
||||||
@ -75,8 +75,8 @@
|
|||||||
"data"
|
"data"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@neteasecloudmusicapienhanced/unblockmusic-utils": "^0.3.4",
|
"@neteasecloudmusicapienhanced/unblockmusic-utils": "^0.3.3",
|
||||||
"axios": "^1.18.1",
|
"axios": "^1.18.0",
|
||||||
"crypto-js": "^4.2.0",
|
"crypto-js": "^4.2.0",
|
||||||
"dotenv": "^17.4.2",
|
"dotenv": "^17.4.2",
|
||||||
"express": "^5.2.1",
|
"express": "^5.2.1",
|
||||||
@ -98,13 +98,13 @@
|
|||||||
"@types/express-fileupload": "^1.5.1",
|
"@types/express-fileupload": "^1.5.1",
|
||||||
"@types/mocha": "^10.0.10",
|
"@types/mocha": "^10.0.10",
|
||||||
"@types/node": "25.9.2",
|
"@types/node": "25.9.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.62.1",
|
"@typescript-eslint/eslint-plugin": "^8.61.1",
|
||||||
"@typescript-eslint/parser": "^8.62.1",
|
"@typescript-eslint/parser": "^8.61.1",
|
||||||
"eslint": "^9.39.4",
|
"eslint": "^9.39.4",
|
||||||
"eslint-config-prettier": "^10.1.8",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"eslint-plugin-html": "^8.1.4",
|
"eslint-plugin-html": "^8.1.4",
|
||||||
"eslint-plugin-prettier": "^5.5.6",
|
"eslint-plugin-prettier": "^5.5.6",
|
||||||
"globals": "^17.7.0",
|
"globals": "^17.6.0",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"intelli-espower-loader": "^1.1.0",
|
"intelli-espower-loader": "^1.1.0",
|
||||||
"lint-staged": "^16.4.0",
|
"lint-staged": "^16.4.0",
|
||||||
@ -112,7 +112,7 @@
|
|||||||
"nodemon": "^3.1.14",
|
"nodemon": "^3.1.14",
|
||||||
"pkg": "^5.8.1",
|
"pkg": "^5.8.1",
|
||||||
"power-assert": "^1.6.1",
|
"power-assert": "^1.6.1",
|
||||||
"prettier": "^3.9.4",
|
"prettier": "^3.8.4",
|
||||||
"typescript": "^5.9.3"
|
"typescript": "^5.9.3"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
|
|||||||
236
pnpm-lock.yaml
generated
236
pnpm-lock.yaml
generated
@ -9,11 +9,11 @@ importers:
|
|||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@neteasecloudmusicapienhanced/unblockmusic-utils':
|
'@neteasecloudmusicapienhanced/unblockmusic-utils':
|
||||||
specifier: ^0.3.4
|
specifier: ^0.3.3
|
||||||
version: 0.3.4
|
version: 0.3.3
|
||||||
axios:
|
axios:
|
||||||
specifier: ^1.18.1
|
specifier: ^1.18.0
|
||||||
version: 1.18.1
|
version: 1.18.0
|
||||||
crypto-js:
|
crypto-js:
|
||||||
specifier: ^4.2.0
|
specifier: ^4.2.0
|
||||||
version: 4.2.0
|
version: 4.2.0
|
||||||
@ -73,11 +73,11 @@ importers:
|
|||||||
specifier: 25.9.2
|
specifier: 25.9.2
|
||||||
version: 25.9.2
|
version: 25.9.2
|
||||||
'@typescript-eslint/eslint-plugin':
|
'@typescript-eslint/eslint-plugin':
|
||||||
specifier: ^8.62.1
|
specifier: ^8.61.1
|
||||||
version: 8.62.1(@typescript-eslint/parser@8.62.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)
|
version: 8.61.1(@typescript-eslint/parser@8.61.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)
|
||||||
'@typescript-eslint/parser':
|
'@typescript-eslint/parser':
|
||||||
specifier: ^8.62.1
|
specifier: ^8.61.1
|
||||||
version: 8.62.1(eslint@9.39.4)(typescript@5.9.3)
|
version: 8.61.1(eslint@9.39.4)(typescript@5.9.3)
|
||||||
eslint:
|
eslint:
|
||||||
specifier: ^9.39.4
|
specifier: ^9.39.4
|
||||||
version: 9.39.4
|
version: 9.39.4
|
||||||
@ -89,10 +89,10 @@ importers:
|
|||||||
version: 8.1.4
|
version: 8.1.4
|
||||||
eslint-plugin-prettier:
|
eslint-plugin-prettier:
|
||||||
specifier: ^5.5.6
|
specifier: ^5.5.6
|
||||||
version: 5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(prettier@3.9.4)
|
version: 5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(prettier@3.8.4)
|
||||||
globals:
|
globals:
|
||||||
specifier: ^17.7.0
|
specifier: ^17.6.0
|
||||||
version: 17.7.0
|
version: 17.6.0
|
||||||
husky:
|
husky:
|
||||||
specifier: ^9.1.7
|
specifier: ^9.1.7
|
||||||
version: 9.1.7
|
version: 9.1.7
|
||||||
@ -115,8 +115,8 @@ importers:
|
|||||||
specifier: ^1.6.1
|
specifier: ^1.6.1
|
||||||
version: 1.6.1
|
version: 1.6.1
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^3.9.4
|
specifier: ^3.8.4
|
||||||
version: 3.9.4
|
version: 3.8.4
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.9.3
|
specifier: ^5.9.3
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
@ -222,8 +222,8 @@ packages:
|
|||||||
'@jridgewell/trace-mapping@0.3.31':
|
'@jridgewell/trace-mapping@0.3.31':
|
||||||
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
|
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
|
||||||
|
|
||||||
'@neteasecloudmusicapienhanced/unblockmusic-utils@0.3.4':
|
'@neteasecloudmusicapienhanced/unblockmusic-utils@0.3.3':
|
||||||
resolution: {integrity: sha512-3Lu/eYnDqf9/rHxa5G38TZxM7QVUBZpzKMWBmT6STHaMb6ztFRfrVrejIC1r7IUvtCWkoRulD+8UlllNTEsd6g==}
|
resolution: {integrity: sha512-Lm2Zxod4Qfhp3HNDmaHxzJPLiMfMNkUT2PXp0VVrDW+/dDZBfSANO+pnCHx+MkK7tDUb3wGwYp5q2w9Kw1+4OA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
@ -301,63 +301,63 @@ packages:
|
|||||||
'@types/serve-static@2.2.0':
|
'@types/serve-static@2.2.0':
|
||||||
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
|
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.62.1':
|
'@typescript-eslint/eslint-plugin@8.61.1':
|
||||||
resolution: {integrity: sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA==}
|
resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@typescript-eslint/parser': ^8.62.1
|
'@typescript-eslint/parser': ^8.61.1
|
||||||
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.62.1':
|
'@typescript-eslint/parser@8.61.1':
|
||||||
resolution: {integrity: sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA==}
|
resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/project-service@8.62.1':
|
'@typescript-eslint/project-service@8.61.1':
|
||||||
resolution: {integrity: sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg==}
|
resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.62.1':
|
'@typescript-eslint/scope-manager@8.61.1':
|
||||||
resolution: {integrity: sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg==}
|
resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.62.1':
|
'@typescript-eslint/tsconfig-utils@8.61.1':
|
||||||
resolution: {integrity: sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g==}
|
resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.62.1':
|
'@typescript-eslint/type-utils@8.61.1':
|
||||||
resolution: {integrity: sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg==}
|
resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/types@8.62.1':
|
'@typescript-eslint/types@8.61.1':
|
||||||
resolution: {integrity: sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==}
|
resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.62.1':
|
'@typescript-eslint/typescript-estree@8.61.1':
|
||||||
resolution: {integrity: sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA==}
|
resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.62.1':
|
'@typescript-eslint/utils@8.61.1':
|
||||||
resolution: {integrity: sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g==}
|
resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.62.1':
|
'@typescript-eslint/visitor-keys@8.61.1':
|
||||||
resolution: {integrity: sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==}
|
resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@unblockneteasemusic/server@0.28.0':
|
'@unblockneteasemusic/server@0.28.0':
|
||||||
@ -485,8 +485,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
|
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
axios@1.18.1:
|
axios@1.18.0:
|
||||||
resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==}
|
resolution: {integrity: sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==}
|
||||||
|
|
||||||
balanced-match@1.0.2:
|
balanced-match@1.0.2:
|
||||||
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||||
@ -523,8 +523,8 @@ packages:
|
|||||||
brace-expansion@2.1.1:
|
brace-expansion@2.1.1:
|
||||||
resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==}
|
resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==}
|
||||||
|
|
||||||
brace-expansion@5.0.7:
|
brace-expansion@5.0.6:
|
||||||
resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==}
|
resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==}
|
||||||
engines: {node: 18 || 20 || >=22}
|
engines: {node: 18 || 20 || >=22}
|
||||||
|
|
||||||
braces@3.0.3:
|
braces@3.0.3:
|
||||||
@ -888,8 +888,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
|
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
es-to-primitive@1.3.4:
|
es-to-primitive@1.3.1:
|
||||||
resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==}
|
resolution: {integrity: sha512-CxN9N56HYfd2m/acc/NOFrZQsN9kU4eh+2kk6A707Kz1krH8tKmfrs5RnftB8WNX80T0NS7vSQsDOlg23diR2g==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
es5-ext@0.10.64:
|
es5-ext@0.10.64:
|
||||||
@ -1262,8 +1262,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
|
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
globals@17.7.0:
|
globals@17.6.0:
|
||||||
resolution: {integrity: sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==}
|
resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
globalthis@1.0.4:
|
globalthis@1.0.4:
|
||||||
@ -1565,8 +1565,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
js-yaml@4.3.0:
|
js-yaml@4.2.0:
|
||||||
resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==}
|
resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
jsesc@2.5.2:
|
jsesc@2.5.2:
|
||||||
@ -1766,8 +1766,8 @@ packages:
|
|||||||
next-tick@1.1.0:
|
next-tick@1.1.0:
|
||||||
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
|
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
|
||||||
|
|
||||||
node-abi@3.93.0:
|
node-abi@3.92.0:
|
||||||
resolution: {integrity: sha512-Cu6yUpX5Iavugm8BeX7c0wgU9CvOqfd1yM6A1d2q2ZMjym7GjpASv2GdRcTq3Fx+Sb5OgBkEEpw4VnAbY6Y5RA==}
|
resolution: {integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
node-fetch@2.7.0:
|
node-fetch@2.7.0:
|
||||||
@ -2006,8 +2006,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==}
|
resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
|
|
||||||
prettier@3.9.4:
|
prettier@3.8.4:
|
||||||
resolution: {integrity: sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==}
|
resolution: {integrity: sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@ -2044,8 +2044,8 @@ packages:
|
|||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
qs@6.15.3:
|
qs@6.15.2:
|
||||||
resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==}
|
resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==}
|
||||||
engines: {node: '>=0.6'}
|
engines: {node: '>=0.6'}
|
||||||
|
|
||||||
queue-microtask@1.2.3:
|
queue-microtask@1.2.3:
|
||||||
@ -2061,10 +2061,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
|
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
range-parser@1.3.0:
|
|
||||||
resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==}
|
|
||||||
engines: {node: '>= 0.6'}
|
|
||||||
|
|
||||||
raw-body@2.5.3:
|
raw-body@2.5.3:
|
||||||
resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
|
resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
@ -2393,8 +2389,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==}
|
resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
|
||||||
tar-fs@2.1.5:
|
tar-fs@2.1.4:
|
||||||
resolution: {integrity: sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==}
|
resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==}
|
||||||
|
|
||||||
tar-stream@2.2.0:
|
tar-stream@2.2.0:
|
||||||
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
|
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
|
||||||
@ -2718,7 +2714,7 @@ snapshots:
|
|||||||
globals: 14.0.0
|
globals: 14.0.0
|
||||||
ignore: 5.3.2
|
ignore: 5.3.2
|
||||||
import-fresh: 3.3.1
|
import-fresh: 3.3.1
|
||||||
js-yaml: 4.3.0
|
js-yaml: 4.2.0
|
||||||
minimatch: 3.1.5
|
minimatch: 3.1.5
|
||||||
strip-json-comments: 3.1.1
|
strip-json-comments: 3.1.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -2772,10 +2768,10 @@ snapshots:
|
|||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.5
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
|
|
||||||
'@neteasecloudmusicapienhanced/unblockmusic-utils@0.3.4':
|
'@neteasecloudmusicapienhanced/unblockmusic-utils@0.3.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@unblockneteasemusic/server': 0.28.0
|
'@unblockneteasemusic/server': 0.28.0
|
||||||
axios: 1.18.1
|
axios: 1.18.0
|
||||||
dotenv: 17.4.2
|
dotenv: 17.4.2
|
||||||
express: 4.22.2
|
express: 4.22.2
|
||||||
https: 1.0.0
|
https: 1.0.0
|
||||||
@ -2867,14 +2863,14 @@ snapshots:
|
|||||||
'@types/http-errors': 2.0.5
|
'@types/http-errors': 2.0.5
|
||||||
'@types/node': 25.9.2
|
'@types/node': 25.9.2
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.62.1(@typescript-eslint/parser@8.62.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)':
|
'@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.2
|
'@eslint-community/regexpp': 4.12.2
|
||||||
'@typescript-eslint/parser': 8.62.1(eslint@9.39.4)(typescript@5.9.3)
|
'@typescript-eslint/parser': 8.61.1(eslint@9.39.4)(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.62.1
|
'@typescript-eslint/scope-manager': 8.61.1
|
||||||
'@typescript-eslint/type-utils': 8.62.1(eslint@9.39.4)(typescript@5.9.3)
|
'@typescript-eslint/type-utils': 8.61.1(eslint@9.39.4)(typescript@5.9.3)
|
||||||
'@typescript-eslint/utils': 8.62.1(eslint@9.39.4)(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.61.1(eslint@9.39.4)(typescript@5.9.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.62.1
|
'@typescript-eslint/visitor-keys': 8.61.1
|
||||||
eslint: 9.39.4
|
eslint: 9.39.4
|
||||||
ignore: 7.0.5
|
ignore: 7.0.5
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
@ -2883,41 +2879,41 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.62.1(eslint@9.39.4)(typescript@5.9.3)':
|
'@typescript-eslint/parser@8.61.1(eslint@9.39.4)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.62.1
|
'@typescript-eslint/scope-manager': 8.61.1
|
||||||
'@typescript-eslint/types': 8.62.1
|
'@typescript-eslint/types': 8.61.1
|
||||||
'@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3)
|
'@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.62.1
|
'@typescript-eslint/visitor-keys': 8.61.1
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
eslint: 9.39.4
|
eslint: 9.39.4
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/project-service@8.62.1(typescript@5.9.3)':
|
'@typescript-eslint/project-service@8.61.1(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3)
|
'@typescript-eslint/tsconfig-utils': 8.61.1(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.62.1
|
'@typescript-eslint/types': 8.61.1
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.62.1':
|
'@typescript-eslint/scope-manager@8.61.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.62.1
|
'@typescript-eslint/types': 8.61.1
|
||||||
'@typescript-eslint/visitor-keys': 8.62.1
|
'@typescript-eslint/visitor-keys': 8.61.1
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.62.1(typescript@5.9.3)':
|
'@typescript-eslint/tsconfig-utils@8.61.1(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.62.1(eslint@9.39.4)(typescript@5.9.3)':
|
'@typescript-eslint/type-utils@8.61.1(eslint@9.39.4)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.62.1
|
'@typescript-eslint/types': 8.61.1
|
||||||
'@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3)
|
'@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3)
|
||||||
'@typescript-eslint/utils': 8.62.1(eslint@9.39.4)(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.61.1(eslint@9.39.4)(typescript@5.9.3)
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
eslint: 9.39.4
|
eslint: 9.39.4
|
||||||
ts-api-utils: 2.5.0(typescript@5.9.3)
|
ts-api-utils: 2.5.0(typescript@5.9.3)
|
||||||
@ -2925,14 +2921,14 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/types@8.62.1': {}
|
'@typescript-eslint/types@8.61.1': {}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.62.1(typescript@5.9.3)':
|
'@typescript-eslint/typescript-estree@8.61.1(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/project-service': 8.62.1(typescript@5.9.3)
|
'@typescript-eslint/project-service': 8.61.1(typescript@5.9.3)
|
||||||
'@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3)
|
'@typescript-eslint/tsconfig-utils': 8.61.1(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.62.1
|
'@typescript-eslint/types': 8.61.1
|
||||||
'@typescript-eslint/visitor-keys': 8.62.1
|
'@typescript-eslint/visitor-keys': 8.61.1
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
minimatch: 10.2.5
|
minimatch: 10.2.5
|
||||||
semver: 7.8.5
|
semver: 7.8.5
|
||||||
@ -2942,20 +2938,20 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.62.1(eslint@9.39.4)(typescript@5.9.3)':
|
'@typescript-eslint/utils@8.61.1(eslint@9.39.4)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4)
|
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4)
|
||||||
'@typescript-eslint/scope-manager': 8.62.1
|
'@typescript-eslint/scope-manager': 8.61.1
|
||||||
'@typescript-eslint/types': 8.62.1
|
'@typescript-eslint/types': 8.61.1
|
||||||
'@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3)
|
'@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3)
|
||||||
eslint: 9.39.4
|
eslint: 9.39.4
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.62.1':
|
'@typescript-eslint/visitor-keys@8.61.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.62.1
|
'@typescript-eslint/types': 8.61.1
|
||||||
eslint-visitor-keys: 5.0.1
|
eslint-visitor-keys: 5.0.1
|
||||||
|
|
||||||
'@unblockneteasemusic/server@0.28.0':
|
'@unblockneteasemusic/server@0.28.0':
|
||||||
@ -3072,7 +3068,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
possible-typed-array-names: 1.1.0
|
possible-typed-array-names: 1.1.0
|
||||||
|
|
||||||
axios@1.18.1:
|
axios@1.18.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.16.0
|
follow-redirects: 1.16.0
|
||||||
form-data: 4.0.6
|
form-data: 4.0.6
|
||||||
@ -3108,7 +3104,7 @@ snapshots:
|
|||||||
http-errors: 2.0.1
|
http-errors: 2.0.1
|
||||||
iconv-lite: 0.4.24
|
iconv-lite: 0.4.24
|
||||||
on-finished: 2.4.1
|
on-finished: 2.4.1
|
||||||
qs: 6.15.3
|
qs: 6.15.2
|
||||||
raw-body: 2.5.3
|
raw-body: 2.5.3
|
||||||
type-is: 1.6.18
|
type-is: 1.6.18
|
||||||
unpipe: 1.0.0
|
unpipe: 1.0.0
|
||||||
@ -3123,7 +3119,7 @@ snapshots:
|
|||||||
http-errors: 2.0.1
|
http-errors: 2.0.1
|
||||||
iconv-lite: 0.7.2
|
iconv-lite: 0.7.2
|
||||||
on-finished: 2.4.1
|
on-finished: 2.4.1
|
||||||
qs: 6.15.3
|
qs: 6.15.2
|
||||||
raw-body: 3.0.2
|
raw-body: 3.0.2
|
||||||
type-is: 2.1.0
|
type-is: 2.1.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -3138,7 +3134,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
balanced-match: 1.0.2
|
balanced-match: 1.0.2
|
||||||
|
|
||||||
brace-expansion@5.0.7:
|
brace-expansion@5.0.6:
|
||||||
dependencies:
|
dependencies:
|
||||||
balanced-match: 4.0.4
|
balanced-match: 4.0.4
|
||||||
|
|
||||||
@ -3501,7 +3497,7 @@ snapshots:
|
|||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
es-object-atoms: 1.1.2
|
es-object-atoms: 1.1.2
|
||||||
es-set-tostringtag: 2.1.0
|
es-set-tostringtag: 2.1.0
|
||||||
es-to-primitive: 1.3.4
|
es-to-primitive: 1.3.1
|
||||||
function.prototype.name: 1.2.0
|
function.prototype.name: 1.2.0
|
||||||
get-intrinsic: 1.3.0
|
get-intrinsic: 1.3.0
|
||||||
get-proto: 1.0.1
|
get-proto: 1.0.1
|
||||||
@ -3559,10 +3555,9 @@ snapshots:
|
|||||||
has-tostringtag: 1.0.2
|
has-tostringtag: 1.0.2
|
||||||
hasown: 2.0.4
|
hasown: 2.0.4
|
||||||
|
|
||||||
es-to-primitive@1.3.4:
|
es-to-primitive@1.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
es-abstract-get: 1.0.0
|
es-abstract-get: 1.0.0
|
||||||
es-define-property: 1.0.1
|
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
is-callable: 1.2.7
|
is-callable: 1.2.7
|
||||||
is-date-object: 1.1.0
|
is-date-object: 1.1.0
|
||||||
@ -3656,10 +3651,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
htmlparser2: 10.1.0
|
htmlparser2: 10.1.0
|
||||||
|
|
||||||
eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(prettier@3.9.4):
|
eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(prettier@3.8.4):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.39.4
|
eslint: 9.39.4
|
||||||
prettier: 3.9.4
|
prettier: 3.8.4
|
||||||
prettier-linter-helpers: 1.0.1
|
prettier-linter-helpers: 1.0.1
|
||||||
synckit: 0.11.13
|
synckit: 0.11.13
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@ -3829,7 +3824,7 @@ snapshots:
|
|||||||
parseurl: 1.3.3
|
parseurl: 1.3.3
|
||||||
path-to-regexp: 0.1.13
|
path-to-regexp: 0.1.13
|
||||||
proxy-addr: 2.0.7
|
proxy-addr: 2.0.7
|
||||||
qs: 6.15.3
|
qs: 6.15.2
|
||||||
range-parser: 1.2.1
|
range-parser: 1.2.1
|
||||||
safe-buffer: 5.2.1
|
safe-buffer: 5.2.1
|
||||||
send: 0.19.2
|
send: 0.19.2
|
||||||
@ -3864,8 +3859,8 @@ snapshots:
|
|||||||
once: 1.4.0
|
once: 1.4.0
|
||||||
parseurl: 1.3.3
|
parseurl: 1.3.3
|
||||||
proxy-addr: 2.0.7
|
proxy-addr: 2.0.7
|
||||||
qs: 6.15.3
|
qs: 6.15.2
|
||||||
range-parser: 1.3.0
|
range-parser: 1.2.1
|
||||||
router: 2.2.0
|
router: 2.2.0
|
||||||
send: 1.2.1
|
send: 1.2.1
|
||||||
serve-static: 2.2.1
|
serve-static: 2.2.1
|
||||||
@ -4085,7 +4080,7 @@ snapshots:
|
|||||||
|
|
||||||
globals@14.0.0: {}
|
globals@14.0.0: {}
|
||||||
|
|
||||||
globals@17.7.0: {}
|
globals@17.6.0: {}
|
||||||
|
|
||||||
globalthis@1.0.4:
|
globalthis@1.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4378,7 +4373,7 @@ snapshots:
|
|||||||
|
|
||||||
joycon@3.1.1: {}
|
joycon@3.1.1: {}
|
||||||
|
|
||||||
js-yaml@4.3.0:
|
js-yaml@4.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
argparse: 2.0.1
|
argparse: 2.0.1
|
||||||
|
|
||||||
@ -4500,7 +4495,7 @@ snapshots:
|
|||||||
|
|
||||||
minimatch@10.2.5:
|
minimatch@10.2.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion: 5.0.7
|
brace-expansion: 5.0.6
|
||||||
|
|
||||||
minimatch@3.1.5:
|
minimatch@3.1.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4527,7 +4522,7 @@ snapshots:
|
|||||||
glob: 10.5.0
|
glob: 10.5.0
|
||||||
he: 1.2.0
|
he: 1.2.0
|
||||||
is-path-inside: 3.0.3
|
is-path-inside: 3.0.3
|
||||||
js-yaml: 4.3.0
|
js-yaml: 4.2.0
|
||||||
log-symbols: 4.1.0
|
log-symbols: 4.1.0
|
||||||
minimatch: 9.0.9
|
minimatch: 9.0.9
|
||||||
ms: 2.1.3
|
ms: 2.1.3
|
||||||
@ -4582,7 +4577,7 @@ snapshots:
|
|||||||
|
|
||||||
next-tick@1.1.0: {}
|
next-tick@1.1.0: {}
|
||||||
|
|
||||||
node-abi@3.93.0:
|
node-abi@3.92.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
semver: 7.8.5
|
semver: 7.8.5
|
||||||
|
|
||||||
@ -4780,7 +4775,7 @@ snapshots:
|
|||||||
node-fetch: 2.7.0
|
node-fetch: 2.7.0
|
||||||
progress: 2.0.3
|
progress: 2.0.3
|
||||||
semver: 7.8.5
|
semver: 7.8.5
|
||||||
tar-fs: 2.1.5
|
tar-fs: 2.1.4
|
||||||
yargs: 16.2.2
|
yargs: 16.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
@ -4884,11 +4879,11 @@ snapshots:
|
|||||||
minimist: 1.2.8
|
minimist: 1.2.8
|
||||||
mkdirp-classic: 0.5.3
|
mkdirp-classic: 0.5.3
|
||||||
napi-build-utils: 1.0.2
|
napi-build-utils: 1.0.2
|
||||||
node-abi: 3.93.0
|
node-abi: 3.92.0
|
||||||
pump: 3.0.4
|
pump: 3.0.4
|
||||||
rc: 1.2.8
|
rc: 1.2.8
|
||||||
simple-get: 4.0.1
|
simple-get: 4.0.1
|
||||||
tar-fs: 2.1.5
|
tar-fs: 2.1.4
|
||||||
tunnel-agent: 0.6.0
|
tunnel-agent: 0.6.0
|
||||||
|
|
||||||
prelude-ls@1.1.2: {}
|
prelude-ls@1.1.2: {}
|
||||||
@ -4899,7 +4894,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fast-diff: 1.3.0
|
fast-diff: 1.3.0
|
||||||
|
|
||||||
prettier@3.9.4: {}
|
prettier@3.8.4: {}
|
||||||
|
|
||||||
process-nextick-args@2.0.1: {}
|
process-nextick-args@2.0.1: {}
|
||||||
|
|
||||||
@ -4929,9 +4924,8 @@ snapshots:
|
|||||||
pngjs: 5.0.0
|
pngjs: 5.0.0
|
||||||
yargs: 15.4.1
|
yargs: 15.4.1
|
||||||
|
|
||||||
qs@6.15.3:
|
qs@6.15.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
es-define-property: 1.0.1
|
|
||||||
side-channel: 1.1.1
|
side-channel: 1.1.1
|
||||||
|
|
||||||
queue-microtask@1.2.3: {}
|
queue-microtask@1.2.3: {}
|
||||||
@ -4944,8 +4938,6 @@ snapshots:
|
|||||||
|
|
||||||
range-parser@1.2.1: {}
|
range-parser@1.2.1: {}
|
||||||
|
|
||||||
range-parser@1.3.0: {}
|
|
||||||
|
|
||||||
raw-body@2.5.3:
|
raw-body@2.5.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
bytes: 3.1.2
|
bytes: 3.1.2
|
||||||
@ -5107,7 +5099,7 @@ snapshots:
|
|||||||
mime-types: 3.0.2
|
mime-types: 3.0.2
|
||||||
ms: 2.1.3
|
ms: 2.1.3
|
||||||
on-finished: 2.4.1
|
on-finished: 2.4.1
|
||||||
range-parser: 1.3.0
|
range-parser: 1.2.1
|
||||||
statuses: 2.0.2
|
statuses: 2.0.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -5371,7 +5363,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@pkgr/core': 0.3.6
|
'@pkgr/core': 0.3.6
|
||||||
|
|
||||||
tar-fs@2.1.5:
|
tar-fs@2.1.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
chownr: 1.1.4
|
chownr: 1.1.4
|
||||||
mkdirp-classic: 0.5.3
|
mkdirp-classic: 0.5.3
|
||||||
|
|||||||
532
public/api.html
532
public/api.html
@ -115,182 +115,6 @@
|
|||||||
textarea:focus {
|
textarea:focus {
|
||||||
border-color: #333;
|
border-color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===== 自定义选项区域 ===== */
|
|
||||||
.section-container {
|
|
||||||
margin-top: 20px;
|
|
||||||
padding: 16px 20px;
|
|
||||||
background: #fafafa;
|
|
||||||
border: 1px solid #e8e8e8;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-container + .section-container {
|
|
||||||
margin-top: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-title {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 600;
|
|
||||||
color: #555;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-title .count-badge {
|
|
||||||
font-size: 11px;
|
|
||||||
background: #ddd;
|
|
||||||
color: #666;
|
|
||||||
padding: 1px 8px;
|
|
||||||
border-radius: 10px;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dynamic-row {
|
|
||||||
display: flex;
|
|
||||||
gap: 8px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dynamic-row .key-input {
|
|
||||||
flex: 0 0 200px;
|
|
||||||
padding: 8px 12px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 6px;
|
|
||||||
font-size: 13px;
|
|
||||||
outline: none;
|
|
||||||
font-family: 'Courier New', monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dynamic-row .value-input {
|
|
||||||
flex: 1;
|
|
||||||
padding: 8px 12px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 6px;
|
|
||||||
font-size: 13px;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dynamic-row .key-input:focus,
|
|
||||||
.dynamic-row .value-input:focus {
|
|
||||||
border-color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.remove-btn {
|
|
||||||
width: 28px;
|
|
||||||
height: 28px;
|
|
||||||
padding: 0;
|
|
||||||
background: #fff;
|
|
||||||
color: #999;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 6px;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
transition: all 0.2s;
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.remove-btn:hover {
|
|
||||||
background: #fee;
|
|
||||||
color: #e33;
|
|
||||||
border-color: #fcc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-btn {
|
|
||||||
background: #fff;
|
|
||||||
color: #333;
|
|
||||||
border: 1px dashed #ccc;
|
|
||||||
padding: 6px 16px;
|
|
||||||
border-radius: 6px;
|
|
||||||
font-size: 13px;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.2s;
|
|
||||||
margin-top: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-btn:hover {
|
|
||||||
border-color: #999;
|
|
||||||
background: #f5f5f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ===== 参数编辑区 Tab ===== */
|
|
||||||
.param-container {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.param-header {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.param-header-title {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
.param-tabs {
|
|
||||||
display: flex;
|
|
||||||
gap: 0;
|
|
||||||
background: #f0f0f0;
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-btn {
|
|
||||||
padding: 4px 14px;
|
|
||||||
border: none;
|
|
||||||
background: transparent;
|
|
||||||
color: #888;
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 500;
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: 4px;
|
|
||||||
transition: all 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-btn:hover {
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-btn.active {
|
|
||||||
background: #fff;
|
|
||||||
color: #333;
|
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.param-panel {
|
|
||||||
flex: 1;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.param-panel textarea {
|
|
||||||
flex: 1;
|
|
||||||
padding: 12px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 6px;
|
|
||||||
font-family: 'Courier New', monospace;
|
|
||||||
font-size: 13px;
|
|
||||||
resize: vertical;
|
|
||||||
min-height: 350px;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.param-panel textarea:focus {
|
|
||||||
border-color: #333;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@ -301,16 +125,6 @@
|
|||||||
<label for="uri">URI</label>
|
<label for="uri">URI</label>
|
||||||
<input type="text" id="uri" name="uri" value="/api/song/lyric/v1">
|
<input type="text" id="uri" name="uri" value="/api/song/lyric/v1">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-row">
|
|
||||||
<label for="method">请求方法</label>
|
|
||||||
<select id="method" name="method">
|
|
||||||
<option value="POST" selected>POST</option>
|
|
||||||
<option value="GET">GET</option>
|
|
||||||
<option value="PUT">PUT</option>
|
|
||||||
<option value="DELETE">DELETE</option>
|
|
||||||
<option value="PATCH">PATCH</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="crypto">加密方式</label>
|
<label for="crypto">加密方式</label>
|
||||||
<select id="crypto" name="crypto">
|
<select id="crypto" name="crypto">
|
||||||
@ -322,41 +136,19 @@
|
|||||||
<option value="" selected>(默认)</option>
|
<option value="" selected>(默认)</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-row">
|
|
||||||
<label for="timeout">超时(ms)</label>
|
|
||||||
<input type="number" id="timeout" name="timeout" value="30000" min="0" step="1000" placeholder="0 表示无超时">
|
|
||||||
</div>
|
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label></label>
|
<label></label>
|
||||||
<button type="submit">发送请求</button>
|
<button type="submit">发送请求</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- ===== 自定义请求头 ===== -->
|
|
||||||
<div class="section-container" id="headersSection">
|
|
||||||
<div class="section-title">
|
|
||||||
请求头 (Headers)
|
|
||||||
<span class="count-badge" id="headerCount">4</span>
|
|
||||||
</div>
|
|
||||||
<div id="headersList"></div>
|
|
||||||
<button class="add-btn" onclick="addHeaderRow('', '')">+ 添加请求头</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="data-result">
|
<div class="data-result">
|
||||||
<div>
|
<div>
|
||||||
<label for="result">响应结果</label>
|
<label for="result">响应结果</label>
|
||||||
<textarea id="result" name="result" readonly></textarea>
|
<textarea id="result" name="result" readonly></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="param-container">
|
<div>
|
||||||
<div class="param-header">
|
<label for="data">请求数据</label>
|
||||||
<span class="param-header-title">请求参数</span>
|
<textarea id="data" name="data">
|
||||||
<div class="param-tabs">
|
|
||||||
<button class="tab-btn active" data-mode="json" onclick="switchParamTab('json')">JSON</button>
|
|
||||||
<button class="tab-btn" data-mode="kv" onclick="switchParamTab('kv')">键值对</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="param-panel" id="jsonPanel">
|
|
||||||
<textarea id="data" name="data">
|
|
||||||
{
|
{
|
||||||
"cp": false,
|
"cp": false,
|
||||||
"id": "2058263032",
|
"id": "2058263032",
|
||||||
@ -368,306 +160,64 @@
|
|||||||
"ytv": 0,
|
"ytv": 0,
|
||||||
"yv": 0
|
"yv": 0
|
||||||
}</textarea>
|
}</textarea>
|
||||||
</div>
|
|
||||||
<div class="param-panel" id="kvPanel" style="display:none">
|
|
||||||
<div id="kvList"></div>
|
|
||||||
<button class="add-btn" onclick="addKvRow('', '')">+ 添加参数</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="https://fastly.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
<script src="https://fastly.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
// ===== 动态行管理 =====
|
|
||||||
function escapeHtml(str) {
|
|
||||||
if (!str) return '';
|
|
||||||
return String(str)
|
|
||||||
.replace(/&/g, '&')
|
|
||||||
.replace(/</g, '<')
|
|
||||||
.replace(/>/g, '>')
|
|
||||||
.replace(/"/g, '"')
|
|
||||||
.replace(/'/g, ''');
|
|
||||||
}
|
|
||||||
|
|
||||||
function addHeaderRow(key, value) {
|
|
||||||
const list = document.getElementById('headersList');
|
|
||||||
const row = document.createElement('div');
|
|
||||||
row.className = 'dynamic-row';
|
|
||||||
row.innerHTML =
|
|
||||||
'<input type="text" class="key-input" placeholder="Header 名称" value="' +
|
|
||||||
escapeHtml(key) +
|
|
||||||
'">' +
|
|
||||||
'<input type="text" class="value-input" placeholder="值" value="' +
|
|
||||||
escapeHtml(value) +
|
|
||||||
'">' +
|
|
||||||
'<button class="remove-btn" onclick="removeRow(this)" title="删除">✕</button>';
|
|
||||||
list.appendChild(row);
|
|
||||||
updateCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
function addKvRow(key, value) {
|
|
||||||
const list = document.getElementById('kvList');
|
|
||||||
const row = document.createElement('div');
|
|
||||||
row.className = 'dynamic-row';
|
|
||||||
row.innerHTML =
|
|
||||||
'<input type="text" class="key-input" placeholder="参数名" value="' +
|
|
||||||
escapeHtml(key) +
|
|
||||||
'">' +
|
|
||||||
'<input type="text" class="value-input" placeholder="值" value="' +
|
|
||||||
escapeHtml(value) +
|
|
||||||
'">' +
|
|
||||||
'<button class="remove-btn" onclick="removeRow(this)" title="删除">✕</button>';
|
|
||||||
list.appendChild(row);
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeRow(btn) {
|
|
||||||
btn.parentElement.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
function collectHeaders() {
|
|
||||||
const headers = {};
|
|
||||||
document.querySelectorAll('#headersList .dynamic-row').forEach(function (row) {
|
|
||||||
var key = row.querySelector('.key-input').value.trim();
|
|
||||||
var value = row.querySelector('.value-input').value;
|
|
||||||
if (key) headers[key] = value;
|
|
||||||
});
|
|
||||||
return headers;
|
|
||||||
}
|
|
||||||
|
|
||||||
function collectKvData() {
|
|
||||||
var obj = {};
|
|
||||||
document.querySelectorAll('#kvList .dynamic-row').forEach(function (row) {
|
|
||||||
var key = row.querySelector('.key-input').value.trim();
|
|
||||||
var val = row.querySelector('.value-input').value;
|
|
||||||
if (!key) return;
|
|
||||||
// 自动类型转换
|
|
||||||
if (val === 'true') obj[key] = true;
|
|
||||||
else if (val === 'false') obj[key] = false;
|
|
||||||
else if (val === 'null') obj[key] = null;
|
|
||||||
else if (/^-?\d+(\.\d+)?$/.test(val) && !isNaN(Number(val))) obj[key] = Number(val);
|
|
||||||
else obj[key] = val;
|
|
||||||
});
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ===== Tab 切换 =====
|
|
||||||
function syncJsonToKv() {
|
|
||||||
try {
|
|
||||||
var data = JSON.parse(document.getElementById('data').value);
|
|
||||||
var list = document.getElementById('kvList');
|
|
||||||
list.innerHTML = '';
|
|
||||||
Object.keys(data).forEach(function (k) {
|
|
||||||
addKvRow(k, String(data[k]));
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function syncKvToJson() {
|
|
||||||
var obj = collectKvData();
|
|
||||||
document.getElementById('data').value = JSON.stringify(obj, null, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
function switchParamTab(mode) {
|
|
||||||
var jsonPanel = document.getElementById('jsonPanel');
|
|
||||||
var kvPanel = document.getElementById('kvPanel');
|
|
||||||
|
|
||||||
if (mode === 'kv') {
|
|
||||||
if (!syncJsonToKv()) {
|
|
||||||
alert('JSON 格式有误,无法切换到键值对模式,请先修正 JSON');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
jsonPanel.style.display = 'none';
|
|
||||||
kvPanel.style.display = 'block';
|
|
||||||
} else {
|
|
||||||
syncKvToJson();
|
|
||||||
kvPanel.style.display = 'none';
|
|
||||||
jsonPanel.style.display = 'block';
|
|
||||||
}
|
|
||||||
|
|
||||||
document.querySelectorAll('.tab-btn').forEach(function (btn) {
|
|
||||||
btn.classList.toggle('active', btn.dataset.mode === mode);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// ===== 默认请求头(直接套用后端预设值)=====
|
|
||||||
var defaultHeaders = [
|
|
||||||
{ key: 'Cookie', value: '' },
|
|
||||||
{
|
|
||||||
key: 'User-Agent',
|
|
||||||
value: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0',
|
|
||||||
},
|
|
||||||
{ key: 'Referer', value: 'https://music.163.com' },
|
|
||||||
{ key: 'Content-Type', value: 'application/json' },
|
|
||||||
];
|
|
||||||
|
|
||||||
// ===== 发送请求 =====
|
|
||||||
async function sendRequest() {
|
async function sendRequest() {
|
||||||
document.getElementById('result').value = '';
|
document.getElementById('result').value = ""
|
||||||
|
|
||||||
var uri = document.getElementById('uri').value;
|
const uri = document.getElementById('uri').value;
|
||||||
var method = document.getElementById('method').value;
|
const crypto = document.getElementById('crypto').value;
|
||||||
var crypto = document.getElementById('crypto').value;
|
const data = document.getElementById('data').value;
|
||||||
var timeout = parseInt(document.getElementById('timeout').value, 10) || 0;
|
|
||||||
var headers = collectHeaders();
|
|
||||||
|
|
||||||
// 根据当前激活的 tab 读取数据
|
|
||||||
var parsedData;
|
|
||||||
var activeTab = document.querySelector('.tab-btn.active');
|
|
||||||
if (activeTab && activeTab.dataset.mode === 'kv') {
|
|
||||||
parsedData = collectKvData();
|
|
||||||
} else {
|
|
||||||
var rawData = document.getElementById('data').value;
|
|
||||||
try {
|
|
||||||
parsedData = rawData.trim() ? JSON.parse(rawData) : {};
|
|
||||||
} catch (e) {
|
|
||||||
document.getElementById('result').value =
|
|
||||||
'请求数据格式错误:' + e.message;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var axiosConfig = {
|
|
||||||
url: '/api?timestamp=' + Date.now(),
|
|
||||||
method: method,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (timeout > 0) {
|
|
||||||
axiosConfig.timeout = timeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (method === 'GET') {
|
|
||||||
axiosConfig.params = {
|
|
||||||
uri: uri,
|
|
||||||
crypto: crypto,
|
|
||||||
data: JSON.stringify(parsedData),
|
|
||||||
headers: Object.keys(headers).length ? JSON.stringify(headers) : undefined,
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
axiosConfig.data = {
|
|
||||||
uri: uri,
|
|
||||||
crypto: crypto,
|
|
||||||
data: parsedData,
|
|
||||||
headers: Object.keys(headers).length ? headers : undefined,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var res = await axios(axiosConfig);
|
const res = await axios({
|
||||||
document.getElementById('result').value = JSON.stringify(
|
url: `/api?timestamp=${Date.now()}`,
|
||||||
res.data,
|
method: 'post',
|
||||||
null,
|
data: {
|
||||||
2,
|
uri: uri,
|
||||||
);
|
data: JSON.parse(data),
|
||||||
|
crypto: crypto,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('result').value = JSON.stringify(res.data, null, 2);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
document.getElementById('result').value =
|
document.getElementById('result').value = 'Request failed: ' + error.message;
|
||||||
'Request failed: ' + error.message;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===== 从 URL 查询参数恢复 =====
|
|
||||||
(function fillFromQuery() {
|
(function fillFromQuery() {
|
||||||
var params = new URLSearchParams(window.location.search);
|
const params = new URLSearchParams(window.location.search);
|
||||||
if (!params.toString()) {
|
if (!params.toString()) return;
|
||||||
// 没有查询参数,用默认 header
|
const uri = params.get('uri');
|
||||||
defaultHeaders.forEach(function (h) {
|
const crypto = params.get('crypto');
|
||||||
addHeaderRow(h.key, h.value);
|
const dataParam = params.get('data');
|
||||||
});
|
if (uri) {
|
||||||
return;
|
document.getElementById('uri').value = uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
var uri = params.get('uri');
|
|
||||||
var crypto = params.get('crypto');
|
|
||||||
var dataParam = params.get('data');
|
|
||||||
var method = params.get('method');
|
|
||||||
var timeout = params.get('timeout');
|
|
||||||
var headersParam = params.get('headers');
|
|
||||||
var kvParams = params.get('kvParams');
|
|
||||||
var paramMode = params.get('paramMode');
|
|
||||||
|
|
||||||
if (uri) document.getElementById('uri').value = uri;
|
|
||||||
if (method) {
|
|
||||||
var methodSelect = document.getElementById('method');
|
|
||||||
if (
|
|
||||||
[].slice.call(methodSelect.options).some(function (opt) {
|
|
||||||
return opt.value === method;
|
|
||||||
})
|
|
||||||
) {
|
|
||||||
methodSelect.value = method;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (timeout) document.getElementById('timeout').value = timeout;
|
|
||||||
|
|
||||||
if (crypto) {
|
if (crypto) {
|
||||||
var cryptoSelect = document.getElementById('crypto');
|
const cryptoSelect = document.getElementById('crypto');
|
||||||
if (
|
if ([...cryptoSelect.options].some((opt) => opt.value === crypto)) {
|
||||||
[].slice.call(cryptoSelect.options).some(function (opt) {
|
cryptoSelect.value = crypto;
|
||||||
return opt.value === crypto;
|
}
|
||||||
})
|
|
||||||
) {
|
|
||||||
cryptoSelect.value = crypto;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dataParam) {
|
if (dataParam) {
|
||||||
try {
|
const decoded = dataParam;
|
||||||
document.getElementById('data').value = JSON.stringify(
|
try {
|
||||||
JSON.parse(dataParam),
|
document.getElementById('data').value = JSON.stringify(
|
||||||
null,
|
JSON.parse(decoded),
|
||||||
2,
|
null,
|
||||||
);
|
2,
|
||||||
} catch (_) {
|
);
|
||||||
document.getElementById('data').value = dataParam;
|
} catch (error) {
|
||||||
}
|
document.getElementById('data').value = decoded;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
})();
|
||||||
if (headersParam) {
|
|
||||||
try {
|
|
||||||
var parsed = JSON.parse(headersParam);
|
|
||||||
Object.keys(parsed).forEach(function (k) {
|
|
||||||
addHeaderRow(k, parsed[k]);
|
|
||||||
});
|
|
||||||
} catch (_) {
|
|
||||||
// fallback: 用默认 header
|
|
||||||
defaultHeaders.forEach(function (h) {
|
|
||||||
addHeaderRow(h.key, h.value);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
defaultHeaders.forEach(function (h) {
|
|
||||||
addHeaderRow(h.key, h.value);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kvParams) {
|
|
||||||
try {
|
|
||||||
var parsed = JSON.parse(kvParams);
|
|
||||||
// 先填充 kv 列表,再切换到 kv 模式
|
|
||||||
Object.keys(parsed).forEach(function (k) {
|
|
||||||
addKvRow(k, String(parsed[k]));
|
|
||||||
});
|
|
||||||
if (paramMode === 'kv') {
|
|
||||||
switchParamTab('kv');
|
|
||||||
}
|
|
||||||
} catch (_) {
|
|
||||||
/* ignore */
|
|
||||||
}
|
|
||||||
} else if (paramMode === 'kv' && dataParam) {
|
|
||||||
// 从 data 参数同步到键值对模式
|
|
||||||
try {
|
|
||||||
var data = JSON.parse(dataParam);
|
|
||||||
Object.keys(data).forEach(function (k) {
|
|
||||||
addKvRow(k, String(data[k]));
|
|
||||||
});
|
|
||||||
switchParamTab('kv');
|
|
||||||
} catch (_) {
|
|
||||||
/* ignore */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -12,8 +12,6 @@ const createOption = (query, crypto = '') => {
|
|||||||
e_r: query.e_r || undefined,
|
e_r: query.e_r || undefined,
|
||||||
domain: query.domain || '',
|
domain: query.domain || '',
|
||||||
checkToken: query.checkToken || false,
|
checkToken: query.checkToken || false,
|
||||||
headers: query.headers || {},
|
|
||||||
timeout: query.timeout || 0,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.exports = createOption
|
module.exports = createOption
|
||||||
|
|||||||
@ -344,11 +344,6 @@ const createRequest = (uri, data, options) => {
|
|||||||
httpsAgent: createHttpsAgent(),
|
httpsAgent: createHttpsAgent(),
|
||||||
}
|
}
|
||||||
|
|
||||||
// 自定义超时
|
|
||||||
if (options.timeout > 0) {
|
|
||||||
settings.timeout = options.timeout
|
|
||||||
}
|
|
||||||
|
|
||||||
// 使用返回值加密
|
// 使用返回值加密
|
||||||
const use_e_r = (crypto === 'eapi' || crypto === 'weapi') && data.e_r
|
const use_e_r = (crypto === 'eapi' || crypto === 'weapi') && data.e_r
|
||||||
const use_xeapi = crypto === 'xeapi'
|
const use_xeapi = crypto === 'xeapi'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user