diff --git a/历届学生/17届课程/myshop_app/shop_android/.gradle/4.8.1/fileHashes/fileHashes.lock b/历届学生/17届课程/myshop_app/shop_android/.gradle/4.8.1/fileHashes/fileHashes.lock index ef25d571..3e0c3a60 100644 Binary files a/历届学生/17届课程/myshop_app/shop_android/.gradle/4.8.1/fileHashes/fileHashes.lock and b/历届学生/17届课程/myshop_app/shop_android/.gradle/4.8.1/fileHashes/fileHashes.lock differ diff --git a/历届学生/樊明宇 b/历届学生/樊明宇 new file mode 160000 index 00000000..94d42d63 --- /dev/null +++ b/历届学生/樊明宇 @@ -0,0 +1 @@ +Subproject commit 94d42d63b193d7bcfd42b486bff2b337cf1e70d2 diff --git a/历届学生/王智伟 b/历届学生/王智伟 new file mode 160000 index 00000000..44195c16 --- /dev/null +++ b/历届学生/王智伟 @@ -0,0 +1 @@ +Subproject commit 44195c16e7ee8d371a7fcea67c925f0b815c1908 diff --git a/模拟面试资料/自我介绍.txt b/模拟面试资料/自我介绍.txt index fafefe21..bf3cd159 100644 --- a/模拟面试资料/自我介绍.txt +++ b/模拟面试资料/自我介绍.txt @@ -27,4 +27,4 @@ js 1:https://segmentfault.com/a/1190000016418021?utm_source=tag-newest -2:http://c.biancheng.net/view/5669. html \ No newline at end of file +2:http://c.biancheng.net/view/5669.html \ No newline at end of file diff --git a/项目合集/.pydio b/项目合集/.pydio deleted file mode 100644 index e8d938d3..00000000 --- a/项目合集/.pydio +++ /dev/null @@ -1 +0,0 @@ -e00b97af-e54e-43df-a865-8050026500e0 \ No newline at end of file diff --git a/项目合集/最新写真app/backend/ .gitignore b/项目合集/最新写真app/backend/ .gitignore new file mode 100644 index 00000000..43d90337 --- /dev/null +++ b/项目合集/最新写真app/backend/ .gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? \ No newline at end of file diff --git a/项目合集/最新写真app/backend/.drone.yml b/项目合集/最新写真app/backend/.drone.yml new file mode 100644 index 00000000..d003e4e6 --- /dev/null +++ b/项目合集/最新写真app/backend/.drone.yml @@ -0,0 +1,15 @@ +kind: pipeline +type: docker +name: default + +clone: + disable: true + +steps: +- name: myclone + image: 2271608011/bmygit:v1.2 + network_mode: host + commands: + - echo "192.168.31.100 git.buyusdt.xyz" >> /etc/hosts + - git clone https://git.buyusdt.xyz/bmy/xiezheng.git + - cd /drone/src/xiezheng/ && npm install && npm run dev && npm run log \ No newline at end of file diff --git a/项目合集/最新写真app/backend/app.js b/项目合集/最新写真app/backend/app.js new file mode 100644 index 00000000..9fd2ba7d --- /dev/null +++ b/项目合集/最新写真app/backend/app.js @@ -0,0 +1,67 @@ +import express from "express"; +import config from "./config/config.js"; +import { ipv6, ipv4 } from "./utils/ip.js"; + +import tagsRouter from "./router/tags.js"; +import infoRouter from "./router/info.js"; +import searchRouter from "./router/search.js"; +import homeRouter from "./router/home.js"; +import hotRouter from "./router/hot.js"; +import http from "http"; + +const app = express() + +//解决跨域 +app.use((req, res, next) => { + // 设置是否运行客户端设置 withCredentials + // 即在不同域名下发出的请求也可以携带 cookie + res.header("Access-Control-Allow-Credentials", true) + // 第二个参数表示允许跨域的域名,* 代表所有域名 + res.header('Access-Control-Allow-Origin', '*')//配置80端口跨域 + res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, OPTIONS') // 允许的 http 请求的方法 + // 允许前台获得的除 Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma 这几张基本响应头之外的响应头 + res.header('Access-Control-Allow-Headers', '*') + if (req.method == 'OPTIONS') { + res.sendStatus(200) + } else { + next() + } +}) + +app.use('/v1/api/tag', tagsRouter); +app.use('/v1/api/info', infoRouter); +app.use('/v1/api/search', searchRouter); +app.use('/v1/api/home', homeRouter); +app.use('/v1/api/hot', hotRouter); + +http.createServer(app).listen(config.port, "::",() => { + console.log(` +爬虫运行在下面网址: + + 1️⃣ 公网 IPV6: http://[${ipv6()}]:${config.port} + 2️⃣ 局域网 IPV4: http://${ipv4()}:${config.port} + + `) +}) + +// error handler +app.use(function(err, req, res, next) { + console.log(` +程序出现错误 +status信息为:${err.status} +message信息为:${err.message} +error为:${err} +`) +}); + +// app.listen(config.port, () => { +// console.log(` +// 爬虫运行在下面网址: + +// 1️⃣ 公网 IPV6: http://[${ipv6()}]:${config.port} +// 2️⃣ 局域网 IPV4: http://${ipv4()}:${config.port} +// `) +// }) + + +export default app \ No newline at end of file diff --git a/项目合集/最新写真app/backend/config/config.js b/项目合集/最新写真app/backend/config/config.js new file mode 100644 index 00000000..88bc7693 --- /dev/null +++ b/项目合集/最新写真app/backend/config/config.js @@ -0,0 +1,8 @@ +export default { + port: 9940, + proxyPort: 7890, + baseUrl: 'https://www.06se.com', + hot_tags: function () { + return `${this.baseUrl}/hot_tags` + } +} \ No newline at end of file diff --git a/项目合集/最新写真app/backend/package-lock.json b/项目合集/最新写真app/backend/package-lock.json new file mode 100644 index 00000000..bfa1f30d --- /dev/null +++ b/项目合集/最新写真app/backend/package-lock.json @@ -0,0 +1,2515 @@ +{ + "name": "newbackapi", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "newbackapi", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^1.7.7", + "cheerio": "^1.0.0-rc.12", + "express": "^4.21.1", + "https-proxy-agent": "^7.0.5", + "ip": "^2.0.1", + "pm2": "^5.4.3" + } + }, + "node_modules/@pm2/agent": { + "version": "2.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/@pm2/agent/-/agent-2.0.4.tgz", + "integrity": "sha512-n7WYvvTJhHLS2oBb1PjOtgLpMhgImOq8sXkPBw6smeg9LJBWZjiEgPKOpR8mn9UJZsB5P3W4V/MyvNnp31LKeA==", + "license": "AGPL-3.0", + "dependencies": { + "async": "~3.2.0", + "chalk": "~3.0.0", + "dayjs": "~1.8.24", + "debug": "~4.3.1", + "eventemitter2": "~5.0.1", + "fast-json-patch": "^3.0.0-1", + "fclone": "~1.0.11", + "nssocket": "0.6.0", + "pm2-axon": "~4.0.1", + "pm2-axon-rpc": "~0.7.0", + "proxy-agent": "~6.3.0", + "semver": "~7.5.0", + "ws": "~7.5.10" + } + }, + "node_modules/@pm2/agent/node_modules/dayjs": { + "version": "1.8.36", + "resolved": "https://repo.huaweicloud.com/repository/npm/dayjs/-/dayjs-1.8.36.tgz", + "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==", + "license": "MIT" + }, + "node_modules/@pm2/agent/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pm2/agent/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pm2/io": { + "version": "6.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@pm2/io/-/io-6.0.1.tgz", + "integrity": "sha512-KiA+shC6sULQAr9mGZ1pg+6KVW9MF8NpG99x26Lf/082/Qy8qsTCtnJy+HQReW1A9Rdf0C/404cz0RZGZro+IA==", + "license": "Apache-2", + "dependencies": { + "async": "~2.6.1", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "require-in-the-middle": "^5.0.0", + "semver": "~7.5.4", + "shimmer": "^1.2.0", + "signal-exit": "^3.0.3", + "tslib": "1.9.3" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@pm2/io/node_modules/async": { + "version": "2.6.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/@pm2/io/node_modules/eventemitter2": { + "version": "6.4.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", + "license": "MIT" + }, + "node_modules/@pm2/io/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pm2/io/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pm2/js-api": { + "version": "0.8.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@pm2/js-api/-/js-api-0.8.0.tgz", + "integrity": "sha512-nmWzrA/BQZik3VBz+npRcNIu01kdBhWL0mxKmP1ciF/gTcujPTQqt027N9fc1pK9ERM8RipFhymw7RcmCyOEYA==", + "license": "Apache-2", + "dependencies": { + "async": "^2.6.3", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "extrareqp2": "^1.0.0", + "ws": "^7.0.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@pm2/js-api/node_modules/async": { + "version": "2.6.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/@pm2/js-api/node_modules/eventemitter2": { + "version": "6.4.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", + "license": "MIT" + }, + "node_modules/@pm2/pm2-version-check": { + "version": "1.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", + "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.1" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/amp": { + "version": "0.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/amp/-/amp-0.3.1.tgz", + "integrity": "sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==", + "license": "MIT" + }, + "node_modules/amp-message": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/amp-message/-/amp-message-0.1.2.tgz", + "integrity": "sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==", + "license": "MIT", + "dependencies": { + "amp": "0.3.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/blessed": { + "version": "0.1.81", + "resolved": "https://repo.huaweicloud.com/repository/npm/blessed/-/blessed-0.1.81.tgz", + "integrity": "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==", + "license": "MIT", + "bin": { + "blessed": "bin/tput.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/bodec": { + "version": "0.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/bodec/-/bodec-0.1.0.tgz", + "integrity": "sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/charm": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/charm/-/charm-0.1.2.tgz", + "integrity": "sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==", + "license": "MIT/X11" + }, + "node_modules/cheerio": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cli-tableau": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/cli-tableau/-/cli-tableau-2.0.1.tgz", + "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", + "dependencies": { + "chalk": "3.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.15.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/croner": { + "version": "4.1.97", + "resolved": "https://repo.huaweicloud.com/repository/npm/croner/-/croner-4.1.97.tgz", + "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==", + "license": "MIT" + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/culvert": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/culvert/-/culvert-0.1.2.tgz", + "integrity": "sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==", + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://repo.huaweicloud.com/repository/npm/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter2": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/eventemitter2/-/eventemitter2-5.0.1.tgz", + "integrity": "sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==", + "license": "MIT" + }, + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmmirror.com/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/extrareqp2": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/extrareqp2/-/extrareqp2-1.0.0.tgz", + "integrity": "sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/fast-json-patch": { + "version": "3.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", + "license": "MIT" + }, + "node_modules/fclone": { + "version": "1.0.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/fclone/-/fclone-1.0.11.tgz", + "integrity": "sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/git-node-fs": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/git-node-fs/-/git-node-fs-1.0.0.tgz", + "integrity": "sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==", + "license": "MIT" + }, + "node_modules/git-sha1": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/git-sha1/-/git-sha1-0.1.2.tgz", + "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==", + "license": "MIT" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ip": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/js-git": { + "version": "0.7.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/js-git/-/js-git-0.7.8.tgz", + "integrity": "sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==", + "license": "MIT", + "dependencies": { + "bodec": "^0.1.0", + "culvert": "^0.1.2", + "git-sha1": "^0.1.2", + "pako": "^0.2.5" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC", + "optional": true + }, + "node_modules/lazy": { + "version": "1.0.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", + "license": "MIT", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://repo.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "license": "ISC" + }, + "node_modules/needle": { + "version": "2.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nssocket": { + "version": "0.6.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/nssocket/-/nssocket-0.6.0.tgz", + "integrity": "sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==", + "license": "MIT", + "dependencies": { + "eventemitter2": "~0.4.14", + "lazy": "~1.0.11" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/nssocket/node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://repo.huaweicloud.com/repository/npm/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==", + "license": "MIT" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidusage": { + "version": "3.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/pidusage/-/pidusage-3.0.2.tgz", + "integrity": "sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pm2": { + "version": "5.4.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/pm2/-/pm2-5.4.3.tgz", + "integrity": "sha512-4/I1htIHzZk1Y67UgOCo4F1cJtas1kSds31N8zN0PybO230id1nigyjGuGFzUnGmUFPmrJ0On22fO1ChFlp7VQ==", + "license": "AGPL-3.0", + "dependencies": { + "@pm2/agent": "~2.0.0", + "@pm2/io": "~6.0.1", + "@pm2/js-api": "~0.8.0", + "@pm2/pm2-version-check": "latest", + "async": "~3.2.0", + "blessed": "0.1.81", + "chalk": "3.0.0", + "chokidar": "^3.5.3", + "cli-tableau": "^2.0.0", + "commander": "2.15.1", + "croner": "~4.1.92", + "dayjs": "~1.11.5", + "debug": "^4.3.1", + "enquirer": "2.3.6", + "eventemitter2": "5.0.1", + "fclone": "1.0.11", + "js-yaml": "~4.1.0", + "mkdirp": "1.0.4", + "needle": "2.4.0", + "pidusage": "~3.0", + "pm2-axon": "~4.0.1", + "pm2-axon-rpc": "~0.7.1", + "pm2-deploy": "~1.0.2", + "pm2-multimeter": "^0.1.2", + "promptly": "^2", + "semver": "^7.2", + "source-map-support": "0.5.21", + "sprintf-js": "1.1.2", + "vizion": "~2.2.1" + }, + "bin": { + "pm2": "bin/pm2", + "pm2-dev": "bin/pm2-dev", + "pm2-docker": "bin/pm2-docker", + "pm2-runtime": "bin/pm2-runtime" + }, + "engines": { + "node": ">=12.0.0" + }, + "optionalDependencies": { + "pm2-sysmonit": "^1.2.8" + } + }, + "node_modules/pm2-axon": { + "version": "4.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/pm2-axon/-/pm2-axon-4.0.1.tgz", + "integrity": "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==", + "license": "MIT", + "dependencies": { + "amp": "~0.3.1", + "amp-message": "~0.1.1", + "debug": "^4.3.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=5" + } + }, + "node_modules/pm2-axon-rpc": { + "version": "0.7.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz", + "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.1" + }, + "engines": { + "node": ">=5" + } + }, + "node_modules/pm2-deploy": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/pm2-deploy/-/pm2-deploy-1.0.2.tgz", + "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", + "license": "MIT", + "dependencies": { + "run-series": "^1.1.8", + "tv4": "^1.3.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pm2-multimeter": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", + "integrity": "sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==", + "license": "MIT/X11", + "dependencies": { + "charm": "~0.1.1" + } + }, + "node_modules/pm2-sysmonit": { + "version": "1.2.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz", + "integrity": "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==", + "license": "Apache", + "optional": true, + "dependencies": { + "async": "^3.2.0", + "debug": "^4.3.1", + "pidusage": "^2.0.21", + "systeminformation": "^5.7", + "tx2": "~1.0.4" + } + }, + "node_modules/pm2-sysmonit/node_modules/pidusage": { + "version": "2.0.21", + "resolved": "https://repo.huaweicloud.com/repository/npm/pidusage/-/pidusage-2.0.21.tgz", + "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/promptly": { + "version": "2.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/promptly/-/promptly-2.2.0.tgz", + "integrity": "sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==", + "license": "MIT", + "dependencies": { + "read": "^1.0.4" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "5.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", + "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/run-series": { + "version": "1.1.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/run-series/-/run-series-1.1.9.tgz", + "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "license": "BSD-2-Clause" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://repo.huaweicloud.com/repository/npm/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "license": "BSD-3-Clause" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/systeminformation": { + "version": "5.25.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/systeminformation/-/systeminformation-5.25.11.tgz", + "integrity": "sha512-jI01fn/t47rrLTQB0FTlMCC+5dYx8o0RRF+R4BPiUNsvg5OdY0s9DKMFmJGrx5SwMZQ4cag0Gl6v8oycso9b/g==", + "license": "MIT", + "optional": true, + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos", + "android" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "1.9.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "license": "Apache-2.0" + }, + "node_modules/tv4": { + "version": "1.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", + "license": [ + { + "type": "Public Domain", + "url": "http://geraintluff.github.io/tv4/LICENSE.txt" + }, + { + "type": "MIT", + "url": "http://jsonary.com/LICENSE.txt" + } + ], + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tx2": { + "version": "1.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/tx2/-/tx2-1.0.5.tgz", + "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==", + "license": "MIT", + "optional": true, + "dependencies": { + "json-stringify-safe": "^5.0.1" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/undici/-/undici-6.21.0.tgz", + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vizion": { + "version": "2.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/vizion/-/vizion-2.2.1.tgz", + "integrity": "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==", + "license": "Apache-2.0", + "dependencies": { + "async": "^2.6.3", + "git-node-fs": "^1.0.0", + "ini": "^1.3.5", + "js-git": "^0.7.8" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vizion/node_modules/async": { + "version": "2.6.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "engines": { + "node": ">=18" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://repo.huaweicloud.com/repository/npm/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + } + } +} diff --git a/项目合集/最新写真app/backend/package.json b/项目合集/最新写真app/backend/package.json new file mode 100644 index 00000000..2df70b71 --- /dev/null +++ b/项目合集/最新写真app/backend/package.json @@ -0,0 +1,25 @@ +{ + "name": "newbackapi", + "version": "1.0.0", + "description": "", + "main": "index.js", + "type": "module", + "scripts": { + "dev": "./node_modules/.bin/pm2 start app.js --stop-exit-codes 0", + "stop": "./node_modules/.bin/pm2 stop app", + "log": "./node_modules/.bin/pm2 log", + "list": "./node_modules/.bin/pm2 list", + "monit": "pm2 monit" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^1.7.7", + "cheerio": "^1.0.0-rc.12", + "express": "^4.21.1", + "https-proxy-agent": "^7.0.5", + "ip": "^2.0.1", + "pm2": "^5.4.3" + } +} diff --git a/项目合集/最新写真app/backend/router/home.js b/项目合集/最新写真app/backend/router/home.js new file mode 100644 index 00000000..a892546c --- /dev/null +++ b/项目合集/最新写真app/backend/router/home.js @@ -0,0 +1,78 @@ +import express from "express"; +import Util from '../utils/index.js' +import Config from '../config/config.js' + +const router = express.Router(); + +// 获取首页banner图 +// http://192.168.31.101:9940/v1/api/home/banner +router.get('/banner', async (req, res) => { + // let $ = await Util.get(`${Config.baseUrl}/?orderby=rand`) + // $(".new-swiper .swiper-wrapper .swiper-slide").each(function() { + // let src = $(this).find("span img").attr("src") + // console.log("src: ", src); + // if (src) { + // result.push({ src }) + // } + // }) + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: [ + { src: 'https://image.baidu.com/search/down?thumburl=https://baidu.com&url=https://imgsa.baidu.com/forum/pic/item/54e736d12f2eb938b7ce5c2990628535e4dd6f4d.jpg' }, + { src: 'https://image.baidu.com/search/down?thumburl=https://baidu.com&url=https://imgsa.baidu.com/forum/pic/item/b899a9014c086e06d533199047087bf40bd1cb56.jpg' }, + { src: 'https://image.baidu.com/search/down?thumburl=https://baidu.com&url=https://imgsa.baidu.com/forum/pic/item/269759ee3d6d55fb6c5d50fd28224f4a21a4dd56.jpg' }, + ] + }) +}) + +// 获取热门推荐的写真 +// http://192.168.31.101:9940/v1/api/home/hot +router.get('/hot', async (req, res) => { + let $ = await Util.get(`${Config.baseUrl}/?orderby=rand`) + let result = [] + + $(".box-body .tab-content .posts-mini").each(function() { + result.push({ + id: Util.split($(this).find(".item-thumbnail a").attr("href")).replace(/[^\d]/g, ""), + thumbnail: $(this).find(".item-thumbnail a img").attr("data-src"), + title: $(this).find(".item-heading a").text(), + time: $(this).find(".item-meta .icon-circle").text(), + view: $(this).find(".item-meta .meta-right .meta-view").text() + }) + }) + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: result + }) +}) + + +// 获取首页 默认的随机写真 +// http://192.168.31.101:9940/v1/api/home/list +router.get('/list', async (req, res) => { + let $ = await Util.get(`${Config.baseUrl}/?orderby=rand`) + let result = [] + + $(".tab-content .posts-row .posts-item").each(function() { + result.push({ + id: Util.split($(this).find(".item-thumbnail a").attr("href")).replace(/[^\d]/g, ""), + thumbnail: $(this).find(".item-thumbnail a img").attr("data-src"), + title: $(this).find(".item-heading a").text(), + time: $(this).find(".item-meta .icon-circle").text(), + view: $(this).find(".item-meta .meta-right .meta-view").text() + }) + }) + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: result + }) +}) + + +export default router \ No newline at end of file diff --git a/项目合集/最新写真app/backend/router/hot.js b/项目合集/最新写真app/backend/router/hot.js new file mode 100644 index 00000000..f64ae191 --- /dev/null +++ b/项目合集/最新写真app/backend/router/hot.js @@ -0,0 +1,40 @@ +import express from "express"; +import Util from '../utils/index.js' +import Config from '../config/config.js' +import utils from "../utils/index.js"; + +const router = express.Router(); + +// 获取 底部导航的 热门 +// http://192.168.31.101:9940/v1/api/hot/list?page=1 +router.get('/list', async (req, res) => { + let { page } = req.query + page = page || 1 + + let $ = await Util.get(`${Config.baseUrl}/other/page/${page}`) + + let result = { + currentPage: page, + totalPage: utils.maxPage(".pagenav a", $), + message: $(".search-content .badg .focus-color").text(), + list: [], + } + + $(".posts-row .posts-item").each(function() { + result.list.push({ + id: Util.split($(this).find(".item-thumbnail a").attr("href")).replace(/[^\d]/g, ""), + thumbnail: $(this).find(".item-thumbnail a img").attr("data-src"), + title: $(this).find(".item-heading a").text(), + time: $(this).find(".item-meta .icon-circle").text(), + view: $(this).find(".item-meta .meta-right .meta-view").text() + }) + }) + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: result + }) +}) + +export default router \ No newline at end of file diff --git a/项目合集/最新写真app/backend/router/info.js b/项目合集/最新写真app/backend/router/info.js new file mode 100644 index 00000000..2decee16 --- /dev/null +++ b/项目合集/最新写真app/backend/router/info.js @@ -0,0 +1,42 @@ +import express from "express"; +import Util from '../utils/index.js' +import Config from '../config/config.js' + +const router = express.Router(); + +// 进入详情的接口 +// http://192.168.31.101:9940/v1/api/info/list?id=6808 +router.get('/list', async (req, res) => { + let { id } = req.query + let $ = await Util.get(`${Config.baseUrl}/${id}.html`) + let result = { + title: $(".article .article-header .article-title a").text(), + src_list: [], + recommend: [], + } + + $(".article-content .wp-posts-content p img").map(function(i, el) { + result.src_list.push($(el).attr("data-src")) + }) + + $(".swiper-container .swiper-slide a").each(function(i, el) { + result.recommend.push({ + id: Util.split($(this).attr("href")).replace(/[^\d]/g, ""), + thumbnail: $(this).find("img").attr("data-src"), + title: $(this).find(".text-ellipsis").text(), + time: $(this).find(".px12 item").eq(0).text(), + view: $(this).find(".px12 item").eq(1).text(), + }) + }) + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: result + }) + + + +}) + +export default router \ No newline at end of file diff --git a/项目合集/最新写真app/backend/router/search.js b/项目合集/最新写真app/backend/router/search.js new file mode 100644 index 00000000..6208479b --- /dev/null +++ b/项目合集/最新写真app/backend/router/search.js @@ -0,0 +1,70 @@ +import express from "express"; +import Util from '../utils/index.js' +import Config from '../config/config.js' + +const router = express.Router(); + +// 搜索页面的 热门关键词 & 推荐 +// http://192.168.31.101:9940/v1/api/search/hot +router.get('/hot', async (req, res) => { + let $ = await Util.get(`${Config.baseUrl}/wp-admin/admin-ajax.php?action=search_box`) + let result = { + hotKeyword: [], + recommend: [] + } + + $(".search-input .search-keywords").eq(0).find("div a").each(function() { + result.hotKeyword.push($(this).text()) + }) + + $(".search-input .relates-thumb .swiper-slide a").each(function() { + result.recommend.push({ + id: Util.split($(this).attr("href")).replace(/[^\d]/g, ""), + thumbnail: $(this).find("img").attr("data-src"), + title: $(this).find(".text-ellipsis").text(), + time: $(this).find(".px12 item").eq(0).text(), + view: $(this).find(".px12 item").eq(1).text(), + }) + }) + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: result + }) +}) + + +// 搜索接口 +// http://192.168.31.101:9940/v1/api/search/key?keyword=杨晨晨&page=1 +router.get('/key', async (req, res) => { + let { keyword, page } = req.query + page = page || 1 + + let $ = await Util.get(`${Config.baseUrl}/page/${page}?s=${encodeURI(keyword)}&type=post`) + let result = { + currentPage: page, + totalPage: Util.maxPage(".pagenav a", $), + message: $(".search-content .badg .focus-color").text(), + list: [], + } + + $(".search-content .posts-item").each(function() { + result.list.push({ + id: Util.split($(this).find(".item-thumbnail a").attr("href")).replace(/[^\d]/g, ""), + thumbnail: $(this).find(".item-thumbnail a img").attr("data-src"), + title: $(this).find(".item-body .item-heading a").text(), + time: $(this).find(".item-body .item-meta .icon-circle").text(), + view: $(this).find(".item-body .item-meta .meta-right .meta-view").text() + }) + }) + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: result + }) +}) + + +export default router \ No newline at end of file diff --git a/项目合集/最新写真app/backend/router/tags.js b/项目合集/最新写真app/backend/router/tags.js new file mode 100644 index 00000000..804e24ae --- /dev/null +++ b/项目合集/最新写真app/backend/router/tags.js @@ -0,0 +1,76 @@ +import express from "express"; +import Util from '../utils/index.js' +import Config from '../config/config.js' + +const router = express.Router(); + +// 获取 推荐标签 +// http://192.168.31.101:9940/v1/api/tag/recommend +router.get('/recommend', async (req, res) => { + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: [ + { title: '秀人网', count: '9059', url: '/xiuren', index: 0 }, + { title: 'ROSI写真', count: '6580', url: '/domestic/rosi', index: 2 }, + { title: '蜜桃社', count: '122', url: '/domestic/miitao', index: 27 }, + { title: '尤物馆', count: '138', url: '/domestic/youwu', index: 29 }, + ] + }); +}) + +// 获取 所有标签 +// http://192.168.31.101:9940/v1/api/tag/list +router.get('/list', async (req, res) => { + let $ = await Util.get(Config.hot_tags()) + let result = [] + $(".categorieslist ul li a").each(function (i) { + result.push({ + title: $(this).find("h2").text(), + count: $(this).find("small p").text().replace(/[^\d]/g, ""), + url: Util.split($(this).attr("href")), + }); + }); + + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: result + }); +}) + +// 进入对应标签的列表页面 +// http://192.168.31.101:9940/v1/api/tag/info?url=/xiuren&page=1 +router.get('/info', async (req, res) => { + let { url, page } = req.query + page = page || 1 + + let $ = await Util.get(`${Config.baseUrl}${url}/page/${page}`) + let result = { + count: $(".content-layout .title-h-left .icon-spot").text().replace(/[^\d]/g, ""), + introduce: $(".content-layout .muted-2-color").text(), + totalPage: Util.maxPage(".pagenav a", $), + currentPage: page, + list: [] + } + + $(".content-layout .posts-row .posts-item").each(function (i) { + result.list.push({ + id: Util.split($(this).find(".item-thumbnail a").attr("href")).replace(/[^\d]/g, ""), + thumbnail: $(this).find(".item-thumbnail a img").attr("data-src"), + title: $(this).find(".item-body .item-heading a").text(), + time: $(this).find(".item-body .item-meta .icon-circle").text(), + view: $(this).find(".item-body .item-meta .meta-right .meta-view").text() + }); + }); + + + res.json({ + status: 200, + copyright: `bmy ${new Date()}`, + data: result + }); +}) + +export default router \ No newline at end of file diff --git a/项目合集/最新写真app/backend/utils/index.js b/项目合集/最新写真app/backend/utils/index.js new file mode 100644 index 00000000..fba543e1 --- /dev/null +++ b/项目合集/最新写真app/backend/utils/index.js @@ -0,0 +1,81 @@ +import * as cheer from "cheerio"; +import axios from "axios"; +import { HttpsProxyAgent } from "https-proxy-agent"; +import Config from "../config/config.js"; + +class utils { + constructor() { + this.ax = axios + // 让 ajax 请求 走flclash的翻墙代理 + const httpsAgent = new HttpsProxyAgent(`http://127.0.0.1:${Config.proxyPort}`); + this.ax.defaults.httpsAgent = httpsAgent; + this.ax.defaults.proxy = false; + + this.ResponseInterceptor() + } + + /** + * 返回 cheerio 数据结构 + * @param html + * @returns {*} + */ + cheerio(html) { + return cheer.load(html) + } + + split(str, index = 1) { + return str.split(Config.baseUrl)[index] + } + + /** + * + * @param url 请求的地址 + * @returns {Promise>} + */ + async get(url) { + return await this.ax.get(url, { + headers: { + 'sec-ch-ua-mobile': '?1', + 'sec-fetch-site': 'same-origin', + 'upgrade-insecure-requests': '1', + 'priority': 'u=0, i', + 'sec-fetch-mode': 'navigate', + 'cookie': `_ga=GA1.1.1571194344.1732275775; _lscache_vary=0e8aace2958628a1edb01710bbabbcab; showed_system_notice=showed; PHPSESSID=5jmev023fsh6i76huat60njio3; _ga_ZT9Q6FCC5R=GS1.1.1732668048.9.1.1732668791.0.0.0`, + 'referer': 'https://www.06se.com/hot_tags', + 'user-agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1` + } + }); + } + + maxPage(el, $) { + let pageArr = [] + $(el).each(function() { + let page = Number($(this).text()) + page ? pageArr.push(page) : null + }) + return Math.max(...pageArr) + } + + /** + * + * 响应拦截器 + * @constructor + */ + async ResponseInterceptor() { + this.ax.interceptors.response.use((response) => { + return this.cheerio(response.data); + }, (error) => { + console.log(` + ❌ 请求错误❕❕❕ + 1: 错误信息 ${error.message} + 2: 原因:目标网站禁止国内大陆IP访问,爬虫会走系统代理进行请求访问 + 但检测到你未开启翻墙工具,请打开Clash或FlClash等代理工具,保证能正常访问 Google。 + + 3: 自定义代理端口:修改代码'/config/config.js'中 proxyPort 实现自定义端口,端口从代理工具中查看 + `); + return Promise.reject(error) + }) + } +} + +export default new utils(); \ No newline at end of file diff --git a/项目合集/最新写真app/backend/utils/ip.js b/项目合集/最新写真app/backend/utils/ip.js new file mode 100644 index 00000000..dd457c08 --- /dev/null +++ b/项目合集/最新写真app/backend/utils/ip.js @@ -0,0 +1,12 @@ +import ip from 'ip' + +class IP { + ipv6() { + return ip.address('private','ipv6') + } + ipv4() { + return ip.address('public','ipv4') + } +} + +export const {ipv6,ipv4} = new IP() \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/css/clear.css b/项目合集/最新写真app/fontend/css/clear.css new file mode 100644 index 00000000..dcbe2e66 --- /dev/null +++ b/项目合集/最新写真app/fontend/css/clear.css @@ -0,0 +1,32 @@ +body,p { + font-size: 0; + margin: 0; + line-height: 1; +} + +ul { + margin: 0; + padding: 0; +} + +li { + list-style: none; +} + +a { + text-decoration: none; + color: var(--textColor); +} + +input { + line-height: 0; +} + +img { + width: 100%; +} + +::-webkit-scrollbar { + width: 0; + height: 0; +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/css/color.css b/项目合集/最新写真app/fontend/css/color.css new file mode 100644 index 00000000..fb741778 --- /dev/null +++ b/项目合集/最新写真app/fontend/css/color.css @@ -0,0 +1,7 @@ +:root { + --whiteColor: #fff; + --textColor: #050505; + --themeColor: #fb7299; + --tipsTextColor: #929292; + --tipsBackGroundColor: #f5f5f5; +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/css/global.css b/项目合集/最新写真app/fontend/css/global.css new file mode 100644 index 00000000..41cc49a1 --- /dev/null +++ b/项目合集/最新写真app/fontend/css/global.css @@ -0,0 +1,141 @@ +.header { + top: 0; + left: 0; + right: 0; + width: 100%; + background: var(--whiteColor); + z-index: 999; + height: .9rem; + i { + font-size: .44rem; + } + .icon-wujiaoxing { + margin-right: .1rem; + } + .header_title { + color: var(--textColor); + font-size: .32rem; + margin: 0 .16rem; + flex: 1; + } +} + + + +.footer { + width: 100%; + height: 1rem; + background-color: var(--whiteColor); + padding: 0 .52rem; + bottom: 0; + left: 0; + right: 0; + z-index: 999; + + li { + a { + display: flex; + align-items: center; + flex-direction: column; + + i {} + + div { + font-size: 0.22rem; + margin-top: 0.1rem; + } + } + } + + .active { + + i, + div { + color: var(--themeColor); + } + } +} + +.recommend-model { + margin-top: .5rem; + .title { + height: .9rem; + font-size: .38rem; + font-weight: bolder; + } + + .list { + li { + width: 3.32rem; + margin-bottom: 0.4rem; + + a { + img { + width: 100%; + border-radius: 0.14rem; + margin-bottom: 0.18rem; + height: 4.98rem; + object-fit: cover; + } + + .desc { + .name { + font-size: .34rem; + color: var(--textColor); + margin-bottom: 0.12rem; + } + + .time { + font-size: .2rem; + color: var(--tipsTextColor); + + .text {} + + .view { + + i {} + + span {} + } + } + } + } + } + } +} + +.roll { + .list { + overflow-x: scroll; + } + li { + flex-shrink: 0; + margin-right: .3rem; + &:last-child { + margin-right: 0; + } + } +} + +.swiper-pagination-bullet-active { + background: var(--themeColor); +} + +.content { + margin-top: .9rem; + margin-bottom: 1rem; +} + +#nprogress { + .bar { + background: var(--themeColor); + height: .08rem; + .peg { + box-shadow: 0 0 10px var(--themeColor), 0 0 5px var(--themeColor) + } + } + .spinner-icon { + border-top-color: var(--themeColor); + border-left-color: var(--themeColor); + } +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/css/hot.css b/项目合集/最新写真app/fontend/css/hot.css new file mode 100644 index 00000000..e69de29b diff --git a/项目合集/最新写真app/fontend/css/index.css b/项目合集/最新写真app/fontend/css/index.css new file mode 100644 index 00000000..b3aab21f --- /dev/null +++ b/项目合集/最新写真app/fontend/css/index.css @@ -0,0 +1,52 @@ +.header { + height: .96rem; + + .search { + height: .76rem; + width: 93%; + border-radius: .4rem; + background: var(--tipsBackGroundColor); + padding: 0px 16px; + + i { + margin-right: .1rem; + } + + i, + div { + font-size: .3rem; + color: var(--tipsTextColor); + } + } +} + +.recommend-tag { + padding: 0 .36rem; + margin-top: .4rem; + margin-top: .5rem; + li { + a { + display: flex; + flex-direction: column; + align-items: center; + .title { + font-size: .5rem; + margin-bottom: 0.14rem; + } + + .desc { + font-size: .28rem; + color: var(--tipsTextColor); + } + } + } +} + +.swiper { + width: calc(100% - .56rem); + border-radius: 30px; +} + +.content { + margin-top: .96rem; +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/css/info.css b/项目合集/最新写真app/fontend/css/info.css new file mode 100644 index 00000000..f3efb9a5 --- /dev/null +++ b/项目合集/最新写真app/fontend/css/info.css @@ -0,0 +1,31 @@ + +.info { + height: 18rem; + + .img_arr { + img {} + } + + .all { + font-size: .32rem; + color: var(--themeColor); + width: 100%; + height: 1.2rem; + bottom: 0; + left: 0; + right: 0; + padding-bottom: .2rem; + background: linear-gradient(180deg, #fcfcfc00, #ffffff); + span { + margin-right: .1rem; + } + i {} + } +} + +.show { + height: auto !important; + .all { + display: none !important; + } +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/css/me.css b/项目合集/最新写真app/fontend/css/me.css new file mode 100644 index 00000000..e69de29b diff --git a/项目合集/最新写真app/fontend/css/public.css b/项目合集/最新写真app/fontend/css/public.css new file mode 100644 index 00000000..1c89816d --- /dev/null +++ b/项目合集/最新写真app/fontend/css/public.css @@ -0,0 +1,107 @@ +.block { + display: block; +} + +.flex-block { + display: flex block; +} + +.none { + display: none; +} + +.inline-block { + display: inline-block; +} + +.flex { + display: flex; +} + +.ai-c { + align-items: center; +} + +.ai-e { + align-items: flex-end; +} + +.jc-sb { + justify-content: space-between; +} + +.jc-c { + justify-content: center; +} + +.wrap { + flex-wrap: wrap; +} + +.shrink { + flex-shrink: 0; +} + +.x-scroll { + overflow-x: scroll; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.p-l { + padding-left: 0.115rem; +} + +.p-r { + padding-right: 0.12rem; +} + +.border-box { + box-sizing: border-box; +} + +/* 把css当成js来写 */ +/* css基本上都有 */ +/* .border-top(@fx: top) { + border-@fx: 1px solid #e8e8e8; +} */ + +.p18 { + padding: 0 .36rem; +} + +.ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.border-top { + border-top: 1px solid #e8e8e8; +} + +.border-bottom { + border-bottom: 1px solid #e8e8e8; +} + +.border-left { + border-left: 1px solid #e8e8e8; +} + +.border-right { + border-right: 1px solid #e8e8e8; +} + +.hidden { + overflow: hidden; +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/css/type.css b/项目合集/最新写真app/fontend/css/type.css new file mode 100644 index 00000000..341a735f --- /dev/null +++ b/项目合集/最新写真app/fontend/css/type.css @@ -0,0 +1,50 @@ +.tabs_title { + height: 0.8rem; + top: .9rem; + z-index: 999; + background: #fff; + width: 100%; + left: 0; + right: 0; + li { + margin-right: .3rem; + flex-shrink: 0; + font-size: .28rem; + color: var(--textColor); + position: relative; + &:last-child { + margin-right: .8rem; + } + } + .active { + color: var(--themeColor); + } + + .active::after { + position: absolute; + content: ""; + width: .5rem; + height: .08rem; + display: inline-block; + background: var(--themeColor); + left: 50%; + transform: translateX(-50%); + bottom: -0.24rem; + border-radius: .24rem; + } +} + +.swiper-slide { + height: calc(100vh - .9rem - .8rem - 1rem); + overflow-y: scroll; +} + +.recommend-model { + padding-top: .2rem; + margin-top: 0; + box-sizing: border-box; +} + +.content { + margin-top: 1.7rem; +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/js/config/index.js b/项目合集/最新写真app/fontend/js/config/index.js new file mode 100644 index 00000000..cb20a2d7 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/config/index.js @@ -0,0 +1,60 @@ +const config = { + stage: "prod", // dev test prod + + // 开发阶段请求地址 + devUrl: 'https://pc.buyusdt.xyz/v1/api', + + // 测试阶段请求地址 + testUrl: 'http://[240e:362:223f:2e00::fce]:3030/v1/test', + + // 正式阶段请求地址 + prodUrl: 'https://pc.buyusdt.xyz/v1/api', + + + urlList: { + homeHot: '/home/hot', // 获取热门推荐的写真 + homeBanner: '/home/banner', + homeList: '/home/list', + + tagRecommend: '/tag/recommend', + tagList: '/tag/list', + tagInfo: '/tag/info', + + infoList: '/info/list', + + hotList: '/hot/list', + + }, + footerArr: [ + { title: '首页', icon: 'icon-shouye', href: 'index.html' }, + { title: '分类', icon: 'icon-changchenglogo', href: 'type.html' }, + { title: '热门', icon: 'icon-hot', href: 'hot.html' }, + { title: '我的', icon: 'icon-wo', href: 'me.html' }, + ], + // 动态的返回不同阶段的项目 基地址 + checkStage: function () { + switch (this.stage) { + case "dev": + return this.devUrl + break; + + case "test": + return this.testUrl + break; + + case "prod": + return this.prodUrl + break; + + default: + break; + } + }, + +} + + + +// 基(基本)地址 短地址(具体的功能地址) +// http://[240e:362:223f:2e00::fce]:3030/v1/api /home/hot +// https://pc.buyusdt.xyz/v1/api /home/hot \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/js/http/index.js b/项目合集/最新写真app/fontend/js/http/index.js new file mode 100644 index 00000000..28359ef2 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/http/index.js @@ -0,0 +1,78 @@ +// 用js的function 来模拟class +const http = () => { + NProgress.configure({ + easing: 'ease', speed: 200, + trickleSpeed: 150 + }); + + const init = () => { + return new XMLHttpRequest(); + } + + const get = (params) => { + let http = init() + NProgress.start(); + return new Promise((success, error) => { + http.open("get", handleGetParams(params)) + http.send() + readystatechange(http, success, error) + }) + } + + const post = (params) => { + let http = init() + NProgress.start(); + return new Promise((success, error) => { + http.open("post", config.checkStage() + params.url) + http.setRequestHeader("Content-Type", "application/json") + http.send(JSON.stringify(params.data)) + readystatechange(http, success, error) + }) + } + + const readystatechange = (ajax, success, error) => { + ajax.onreadystatechange = () => { + // http status + // ajax readyState + // 接口提供的 标识当前你访问的接口操作的 具体信息 + if (ajax.readyState == 4) { + if (ajax.status == 200) { + NProgress.done(); + let result = JSON.parse(ajax.responseText) + + switch (result.status) { + case 200: + success(result.data) + break; + + case 500: + alert(result.message) + break; + + default: + break; + } + + } else { + error(ajax) + console.error(ajax) + } + } + } + } + + + // 处理get请求参数并 拼接地址 + const handleGetParams = (params) => { + let str = "" + for (const key in params.data) { + str += `&${key}=${params.data[key]}` + } + str = str.replace("&", "?") + return config.checkStage() + params.url + str + } + + + return { get, post } +} + diff --git a/项目合集/最新写真app/fontend/js/page/hot.js b/项目合集/最新写真app/fontend/js/page/hot.js new file mode 100644 index 00000000..0436ede8 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/page/hot.js @@ -0,0 +1,22 @@ + +// 每一个页面都应该有一个init方法 +// 用来做初始化 +const init = async () => { + header( + "", + "热门", + ) + footer() + getHotList() +} + + + +const getHotList = async () => { + + data = await hotList( + { page: 1 } + ); + item(".random ul", data.list); +} +init() diff --git a/项目合集/最新写真app/fontend/js/page/index.js b/项目合集/最新写真app/fontend/js/page/index.js new file mode 100644 index 00000000..d92e80fd --- /dev/null +++ b/项目合集/最新写真app/fontend/js/page/index.js @@ -0,0 +1,58 @@ +let mySwiper = null + + +// 每一个页面都应该有一个init方法 +// 用来做初始化 +const init = async () => { + footer() + getTagRecommend() + getHomeBanner() + getHomeHot() + getHomeList() +} + +const getHomeBanner = async () => { + innerMaps( + ".swiper-wrapper", + await homeBanner(), + v => `
+ +
` + ) + initSwiper(); +} + +const getTagRecommend = async () => { + innerMaps( + ".recommend-tag", + await tagRecommend(), + v => ` +
  • + +
    ${v.short_title}
    +
    ${v.title}
    +
    +
  • + ` + ) +} + +const getHomeHot= async () => item(".roll ul",await homeHot()) + +const getHomeList = async () => item(".random ul", await homeList()) + + +const initSwiper = () => { + mySwiper = new Swiper('.banner', { + loop: true, // 循环模式选项 + // 如果需要分页器 + pagination: { + el: '.swiper-pagination', + }, + }) +} + + + + +init() \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/js/page/info.js b/项目合集/最新写真app/fontend/js/page/info.js new file mode 100644 index 00000000..ae2c7005 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/page/info.js @@ -0,0 +1,95 @@ + +// 每一个页面都应该有一个init方法 +// 用来做初始化 +let infoData = {} +let likeData = JSON.parse(localStorage.getItem("like")) || [] +const init = async () => { + header( + `
    + + +
    `, + ) + getInfoList() + bindEvent() +} + +const getInfoList = async () => { + infoData = await infoList({ id: query("id") }) + $(".header_title").innerText = infoData.title + + item(".recommend-model ul", infoData.recommend) + + innerMaps( + ".info .img_arr", + infoData.src_list, + (v, i) => ` + + ` + ) + + + + _(".img_arr img").click(v => { + new SmartPhoto(".js-smartPhoto", { + resizeStyle: 'fit' + }); + }); +} + + +const bindEvent = () => { + _(".all").click(v => { + $(".info").classList.replace("hidden", "show") + }) + + + _(".icon-fenxiang").click(async v => { + await navigator.clipboard.writeText(stripIndents` + 我发现一个好看的,快来看看: 《${infoData.title}》 + ${location.href} + `); + alert("已粘贴,快分享给朋友吧") + }) + + + // 在这判断 写真是否收藏 + // foreach map filter + // 如果写真已经被收藏在本地,那么将图标改为收藏状态(实心) + likeData.filter(v => v.id == query("id") ? v : null).length != 0 + ? $(".icon-wujiaoxing").classList.add("icon-wujiaoxing1") + : null + + + _(".icon-wujiaoxing").click(async v => { + // $(".icon-wujiaoxing").classList.toggle("icon-wujiaoxing1") + + // 取消收藏 + if ($(".icon-wujiaoxing").classList.contains("icon-wujiaoxing1")) { + $(".icon-wujiaoxing").classList.remove("icon-wujiaoxing1") + likeData = likeData.filter((v,i) => { + if (v.id != query("id")) { + return v + } + }) + + localStorage.setItem("like", JSON.stringify(likeData)) + + // 收藏 + } else { + likeData.push({ + id: query("id"), + title: infoData.title, + thumbnail: infoData.src_list[0], + time: query("time"), + view: query("view") + }) + + localStorage.setItem("like", JSON.stringify(likeData)) + $(".icon-wujiaoxing").classList.add("icon-wujiaoxing1") + } + }) +} + + +init() \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/js/page/me.js b/项目合集/最新写真app/fontend/js/page/me.js new file mode 100644 index 00000000..e5c3e568 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/page/me.js @@ -0,0 +1,9 @@ + +// 每一个页面都应该有一个init方法 +// 用来做初始化 +const init = async () => { + footer() +} + + +init() \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/js/page/type.js b/项目合集/最新写真app/fontend/js/page/type.js new file mode 100644 index 00000000..b8f96346 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/page/type.js @@ -0,0 +1,134 @@ +let mySwiper = null; +let tagListData = []; +let tagIndex = 0; + +const init = async () => { + header( + "", + "分类", + ) + footer() + await getTagList() + + initSwiper() + bindEvent() +} + +const getTagList = async () => { + tagListData = await tagList() + + console.log("tagListData: ", tagListData); + + innerMaps( + ".tabs_title", + tagListData, + (v, i) => ` +
  • ${v.title}
  • + ` + ) + + innerMaps( + ".tabs_content .swiper-wrapper", + tagListData, + v => ` +
    + +
    + ` + ); + + await getTagInfo() +} + +const getTagInfo = async () => { + let res = await tagInfo({ + url: tagListData[tagIndex].url, + page: tagListData[tagIndex].page + }) + + tagListData[tagIndex].totalPage = res.totalPage + // tagListData[tagIndex].content = res.list + + tagListData[tagIndex].content = [ + ...tagListData[tagIndex].content, + ...res.list + ] + + // res.list.forEach(v => { + // tagListData[tagIndex].content.push(v) + // }) + + item( + _(".swiper-wrapper .swiper-slide ul")[tagIndex], + res.list + ) + + // 渲染页面 + // item() + // 滚动加载更多数据.... + + console.log("getTagInfo: ", tagListData); +} + +const initSwiper = async () => { + mySwiper = new Swiper('.tabs_content', { + on: { + slideChangeTransitionEnd: async function () { + tagIndex = this.activeIndex + changeLiActive(this.activeIndex) + if (tagListData[tagIndex].content.length == 0) { + await getTagInfo() + } + }, + }, + }) +} + +const bindEvent = async () => { + _(".tabs_title li").click((v, i) => { + mySwiper.slideTo(i) + }) + + + // TODO 防抖 节流 优化这块代码 + _(".swiper-slide").scroll(async v => { + //文档内容实际高度(包括超出视窗的溢出部分) + // ul 总高度 + + let ulHeight = v.children[0].clientHeight; + + //滚动条滚动距离 + // ul 在 swiper-slide 中的滚动距离 + let ulScrollTop = v.scrollTop + + //窗口可视范围高度 + // swiper-slide 高度 + let SwiperSlideHeight = v.clientHeight + + // console.log("ulHeight: ", ulHeight); + // console.log("ulScrollTop: ", ulScrollTop); + // console.log("SwiperSlideHeight: ", SwiperSlideHeight); + // console.log(""); + + if (SwiperSlideHeight + ulScrollTop >= ulHeight) { + tagListData[tagIndex].page += 1 + + if (tagListData[tagIndex].page <= tagListData[tagIndex].totalPage) { + console.log("===加载更多内容……==="); + await getTagInfo() + } + + } + }) + +} + +const changeLiActive = async (index) => { + _(".tabs_title li").forEach(v => v.classList.remove("active")) + _(".tabs_title li")[index].classList.add("active") +} + + + + +init() \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/js/serve/home.js b/项目合集/最新写真app/fontend/js/serve/home.js new file mode 100644 index 00000000..3647c8de --- /dev/null +++ b/项目合集/最新写真app/fontend/js/serve/home.js @@ -0,0 +1,38 @@ + + +/** + * + * @param {*} data 是get请求的参数, + * 由页面调用者传递过来给我 + */ +const homeBanner = async (data = {}) => { + return await http().get({ + url: config.urlList.homeBanner, + // data: data + data + }) +} + +const homeHot = async (data = {}) => { + let res = await http().get({ + url: config.urlList.homeHot, + // data: data + data + }) + res.forEach(v => v.view = v.view.replaceAll("W+", "")); + return res +} + + + +const homeList = async (data = {}) => { + let res = await http().get({ + url: config.urlList.homeList, + // data: data + data + }); + res.forEach(v => v.view = v.view.replaceAll("W+", "")); + return res +} + + diff --git a/项目合集/最新写真app/fontend/js/serve/hot.js b/项目合集/最新写真app/fontend/js/serve/hot.js new file mode 100644 index 00000000..849d869c --- /dev/null +++ b/项目合集/最新写真app/fontend/js/serve/hot.js @@ -0,0 +1,11 @@ + +const hotList = async (data = {}) => { + let res = await http().get({ + url: config.urlList.hotList, + // data: data + data + }); + console.log(res) + res.list.forEach(v => v.view = v.view.replaceAll("W+", "")); + return res + } diff --git a/项目合集/最新写真app/fontend/js/serve/info.js b/项目合集/最新写真app/fontend/js/serve/info.js new file mode 100644 index 00000000..87a94c53 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/serve/info.js @@ -0,0 +1,7 @@ +const infoList = async (data = {}) => { + return await http().get({ + url: config.urlList.infoList, + // data: data + data + }); +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/js/serve/search.js b/项目合集/最新写真app/fontend/js/serve/search.js new file mode 100644 index 00000000..e69de29b diff --git a/项目合集/最新写真app/fontend/js/serve/tag.js b/项目合集/最新写真app/fontend/js/serve/tag.js new file mode 100644 index 00000000..87477c57 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/serve/tag.js @@ -0,0 +1,33 @@ +const tagRecommend = async (data = {}) => { + let res = await http().get({ + url: config.urlList.tagRecommend, + // data: data + data + }); + res.forEach(v => v.short_title = v.title.substring(0,1)); + return res +} + +const tagList = async (data = {}) => { + let res = await http().get({ + url: config.urlList.tagList, + // data: data + data + }); + + res.forEach(v => { + v.page = 1; + v.totalPage = 0; + v.content = []; + }); + + return res; +} + +const tagInfo = async (data = {}) => { + return await http().get({ + url: config.urlList.tagInfo, + // data: data + data + }); +} \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/js/utils/index.js b/项目合集/最新写真app/fontend/js/utils/index.js new file mode 100644 index 00000000..de34fa44 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/utils/index.js @@ -0,0 +1,106 @@ +const footer = () => { + let currentHref = location.href + let html = ` + + ` + $("body").insertAdjacentHTML("beforeend", html) +} + +const header = (right, center = "", left = ``) => { + let html = ` +
    + ${left} +
    ${center}
    + ${right} +
    + ` + + $("body").insertAdjacentHTML("afterbegin", html) + _(".header .icon-fanhui").click(v => { + history.back() + }) +} + +const item = (father, data) => { + (typeof father == "string" ? $(father) : father).insertAdjacentHTML("beforeend",data.maps(v => { + return ` +
  • + + +
    +
    ${v.title}
    +
    +
    ${v.time}
    +
    + + ${v.view}W+ +
    +
    +
    +
    +
  • + ` + })) +} + +const query = name =>{ + var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); + var r = window.location.search.substr(1).match(reg); + if(r!=null)return decodeURIComponent(r[2]); return null; +} + +const stripIndents = (template, ...expressions) => { + let result = template.reduce((prev, next, i) => { + let expression = expressions[i - 1]; + return prev + expression + next; + }); + + result = result.replace(/\n[^\S\n]*/g, '\n'); + result = result.trim(); + + return result; +} + + +const innerMaps = (father, data, callback) => { + $(father).insertAdjacentHTML("afterbegin", data.maps((v,i) => { + return callback(v,i) + })) +} + +const $ = className => { + return document.querySelector(className) +} + +const _ = className => { + return document.querySelectorAll(className) +} + +// prototype 原型 +// js给我们提供的一个方法,通过这个方法作为入口, +// 我们可以直接对js进行修改 +Array.prototype.maps = function (callback) { + let result = [] + for (let i = 0; i < this.length; i++) { + result.push(callback(this[i], i, this)) + } + return result.toString().replaceAll(",", "") +} + +NodeList.prototype.click = function (callback) { + this.forEach((v,i) => v.onclick = () => callback(v,i)) +} + + +NodeList.prototype.scroll = function (callback) { + this.forEach((v,i) => v.onscroll = () => callback(v,i)) +} diff --git a/项目合集/最新写真app/fontend/js/utils/rem.js b/项目合集/最新写真app/fontend/js/utils/rem.js new file mode 100644 index 00000000..5dcc9fd8 --- /dev/null +++ b/项目合集/最新写真app/fontend/js/utils/rem.js @@ -0,0 +1,10 @@ +(function (w, d) { + function setSize() { + var screenWidth = d.documentElement.clientWidth; + var currentFontSize = screenWidth * 100 / 750; + d.documentElement.style.fontSize = currentFontSize + 'px'; + } + w.addEventListener('resize', setSize); + w.addEventListener('pageShow', setSize) + w.addEventListener('DOMContentLoaded', setSize) +})(window, document) \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/page/hot.html b/项目合集/最新写真app/fontend/page/hot.html new file mode 100644 index 00000000..9c25c8d3 --- /dev/null +++ b/项目合集/最新写真app/fontend/page/hot.html @@ -0,0 +1,41 @@ + + + + + + + 热门 + + + + + + + + + + + + + +
    + +
    +
      +
      + + +
      + + + + + + + + + + + + + \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/page/index.html b/项目合集/最新写真app/fontend/page/index.html new file mode 100644 index 00000000..9511ccde --- /dev/null +++ b/项目合集/最新写真app/fontend/page/index.html @@ -0,0 +1,87 @@ + + + + + + + 首页 + + + + + + + + + + + + + +
      + + +
      开启精彩搜索..
      +
      +
      + + +
      + + + + + + + +
      +
      推荐写真
      +
        +
        + + +
        + +
          +
          + + +
          + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/page/info.html b/项目合集/最新写真app/fontend/page/info.html new file mode 100644 index 00000000..4e0f4701 --- /dev/null +++ b/项目合集/最新写真app/fontend/page/info.html @@ -0,0 +1,52 @@ + + + + + + + 详情页 + + + + + + + + + + + + + +
          + + +
          +
          推荐写真
          +
            +
            + +
            + + + + + + + + + + + + + \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/page/me.html b/项目合集/最新写真app/fontend/page/me.html new file mode 100644 index 00000000..183b244e --- /dev/null +++ b/项目合集/最新写真app/fontend/page/me.html @@ -0,0 +1,27 @@ + + + + + + + 我的 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/page/search.html b/项目合集/最新写真app/fontend/page/search.html new file mode 100644 index 00000000..e69de29b diff --git a/项目合集/最新写真app/fontend/page/type.html b/项目合集/最新写真app/fontend/page/type.html new file mode 100644 index 00000000..4e233854 --- /dev/null +++ b/项目合集/最新写真app/fontend/page/type.html @@ -0,0 +1,38 @@ + + + + + + + 分类 + + + + + + + + + + + + + + +
            + +
            +
            +
            +
            + + + + + + + + + + + \ No newline at end of file diff --git a/项目合集/最新写真app/fontend/作业.doc b/项目合集/最新写真app/fontend/作业.doc new file mode 100644 index 00000000..c95efb1b Binary files /dev/null and b/项目合集/最新写真app/fontend/作业.doc differ diff --git a/项目合集/最新写真app/fontend/笔记.txt b/项目合集/最新写真app/fontend/笔记.txt new file mode 100644 index 00000000..66d57764 --- /dev/null +++ b/项目合集/最新写真app/fontend/笔记.txt @@ -0,0 +1,26 @@ +cookies: + 把用户登录成功的状态放在请求头中 + 每次访问网址的时候,后端会从请求头中拿到cookies, + 然后判断用户是否登录成功 + + 缺点: + cookie可能被禁用; + cookie与浏览器相关,不能互相访问; + cookie可能被用户删除; + cookie安全性不够高; + cookie存储空间很小(只有4–10KB左右) + +session: + 生命周期是仅在当前浏览器窗口关闭前有效,不能持久保持。 + 在整个浏览器未关闭前,其数据一直都是存在的。存储大小一般为5M + +localStorage: + + +http 协议 它是无状态 + +状态(是否登录) + +http + +http \ No newline at end of file