From 0b9da722799aad385b8f447888a4b8e0b4526945 Mon Sep 17 00:00:00 2001 From: ciniao <4041990@qq.com> Date: Tue, 19 Dec 2023 17:00:25 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0gc=20Test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js_pm2.config.js | 4 + package-lock.json | 31 ++++++++ package.json | 1 + src/api_o2s/games/Apiheapdump.ts | 23 ++++++ src/monopoly/protocols/games/Ptlheapdump.ts | 18 +++++ src/monopoly/protocols/serviceProto.ts | 84 ++++++++++++++++----- src/setHttp.ts | 3 +- 7 files changed, 145 insertions(+), 19 deletions(-) create mode 100644 src/api_o2s/games/Apiheapdump.ts create mode 100644 src/monopoly/protocols/games/Ptlheapdump.ts diff --git a/js_pm2.config.js b/js_pm2.config.js index 0efa009..bb6f27d 100644 --- a/js_pm2.config.js +++ b/js_pm2.config.js @@ -60,6 +60,8 @@ const localApps = [ instances: instancesNum, // 传递给脚本的参数 args: '-serverType msg', + //允许强制gc + node_args: '--expose-gc', // 是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。 watch: false, // 不用监听的文件 @@ -86,6 +88,8 @@ const crossApps = [ cwd: './', // 传递给脚本的参数 args: '-serverType cross', + //允许强制gc + node_args: '--expose-gc', // 是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。 watch: false, // 不用监听的文件 diff --git a/package-lock.json b/package-lock.json index 824ac2d..c0fc9f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "axios": "^1.4.0", "crypto-js": "^4.1.1", "express": "^4.18.2", + "heapdump": "^0.3.15", "ioredis": "^5.3.2", "json5": "^2.2.3", "mathjs": "^11.4.0", @@ -2545,6 +2546,18 @@ "he": "bin/he" } }, + "node_modules/heapdump": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.15.tgz", + "integrity": "sha512-n8aSFscI9r3gfhOcAECAtXFaQ1uy4QSke6bnaL+iymYZ/dWs9cqDqHM+rALfsHUwukUbxsdlECZ0pKmJdQ/4OA==", + "hasInstallScript": true, + "dependencies": { + "nan": "^2.13.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/http-basic": { "version": "8.1.3", "resolved": "https://registry.npmmirror.com/http-basic/-/http-basic-8.1.3.tgz", @@ -3199,6 +3212,11 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, "node_modules/nanoid": { "version": "3.3.1", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.1.tgz", @@ -6645,6 +6663,14 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "heapdump": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.15.tgz", + "integrity": "sha512-n8aSFscI9r3gfhOcAECAtXFaQ1uy4QSke6bnaL+iymYZ/dWs9cqDqHM+rALfsHUwukUbxsdlECZ0pKmJdQ/4OA==", + "requires": { + "nan": "^2.13.2" + } + }, "http-basic": { "version": "8.1.3", "resolved": "https://registry.npmmirror.com/http-basic/-/http-basic-8.1.3.tgz", @@ -7163,6 +7189,11 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, "nanoid": { "version": "3.3.1", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.1.tgz", diff --git a/package.json b/package.json index 99faaea..2f06bdb 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "axios": "^1.4.0", "crypto-js": "^4.1.1", "express": "^4.18.2", + "heapdump": "^0.3.15", "ioredis": "^5.3.2", "json5": "^2.2.3", "mathjs": "^11.4.0", diff --git a/src/api_o2s/games/Apiheapdump.ts b/src/api_o2s/games/Apiheapdump.ts new file mode 100644 index 0000000..e4b923d --- /dev/null +++ b/src/api_o2s/games/Apiheapdump.ts @@ -0,0 +1,23 @@ +import { ApiCall } from "tsrpc"; +import { Reqheapdump, Resheapdump } from "../../monopoly/protocols/games/Ptlheapdump"; +var heapdump = require('heapdump'); + +export default async function (call: ApiCall) { + + if(call.req.act == "heapdump"){ + let name = Date.now() + '.heapsnapshot' + heapdump.writeSnapshot(name); + call.succ({ + code:200, + data:name + }) + } + + if(call.req.act == "gc"){ + global.gc(); + call.succ({ + code:200, + data:"gc..." + }) + } +} \ No newline at end of file diff --git a/src/monopoly/protocols/games/Ptlheapdump.ts b/src/monopoly/protocols/games/Ptlheapdump.ts new file mode 100644 index 0000000..bd93a7f --- /dev/null +++ b/src/monopoly/protocols/games/Ptlheapdump.ts @@ -0,0 +1,18 @@ +import { StringTypeSchema } from "tsbuffer-schema"; + +/** + * 区服初始化 + */ +export type Reqheapdump = { + act:string, + data:any +}; + + +export type Resheapdump = { + /** + * 如果发送成功 将返回 + */ + code: number + data: any; +}; \ No newline at end of file diff --git a/src/monopoly/protocols/serviceProto.ts b/src/monopoly/protocols/serviceProto.ts index 782cc14..6ca08f2 100644 --- a/src/monopoly/protocols/serviceProto.ts +++ b/src/monopoly/protocols/serviceProto.ts @@ -1,6 +1,7 @@ import { ServiceProto } from 'tsrpc-proto'; import { Reqsendemail, Ressendemail } from './email/Ptlsendemail'; import { Reqdeploy, Resdeploy } from './games/Ptldeploy'; +import { Reqheapdump, Resheapdump } from './games/Ptlheapdump'; import { Reqmetrics, Resmetrics } from './games/Ptlmetrics'; import { Reqnotification, Resnotification } from './games/Ptlnotification'; import { Reqopen, Resopen } from './games/Ptlopen'; @@ -31,6 +32,10 @@ export interface ServiceType { req: Reqdeploy, res: Resdeploy }, + "games/heapdump": { + req: Reqheapdump, + res: Resheapdump + }, "games/metrics": { req: Reqmetrics, res: Resmetrics @@ -127,96 +132,101 @@ export const serviceProto: ServiceProto = { }, { "id": 2, - "name": "games/metrics", + "name": "games/heapdump", "type": "api" }, { "id": 3, - "name": "games/notification", + "name": "games/metrics", "type": "api" }, { "id": 4, - "name": "games/open", + "name": "games/notification", "type": "api" }, { "id": 5, - "name": "games/ranking", + "name": "games/open", "type": "api" }, { "id": 6, - "name": "gift/popup", + "name": "games/ranking", "type": "api" }, { "id": 7, - "name": "gm/Pay", + "name": "gift/popup", "type": "api" }, { "id": 8, - "name": "gm/SendPrize", + "name": "gm/Pay", "type": "api" }, { "id": 9, - "name": "hdinfo/details", + "name": "gm/SendPrize", "type": "api" }, { "id": 10, - "name": "AddHuoDong", + "name": "hdinfo/details", "type": "api" }, { "id": 11, - "name": "CatAllhd", + "name": "AddHuoDong", "type": "api" }, { "id": 12, - "name": "DelHuoDong", + "name": "CatAllhd", "type": "api" }, { "id": 13, - "name": "Email", + "name": "DelHuoDong", "type": "api" }, { "id": 14, - "name": "GetLog", + "name": "Email", "type": "api" }, { "id": 15, - "name": "healthz", + "name": "GetLog", "type": "api" }, { "id": 16, - "name": "union/rename", + "name": "healthz", "type": "api" }, { "id": 17, - "name": "user/data", + "name": "union/rename", "type": "api" }, { "id": 18, - "name": "user/disable", + "name": "user/data", "type": "api" }, { "id": 19, - "name": "user/getdata", + "name": "user/disable", "type": "api" }, { "id": 20, + "name": "user/getdata", + "type": "api" + }, + { + "id": 21, "name": "user/rename", "type": "api" } @@ -367,6 +377,44 @@ export const serviceProto: ServiceProto = { } ] }, + "games/Ptlheapdump/Reqheapdump": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "act", + "type": { + "type": "String" + } + }, + { + "id": 1, + "name": "data", + "type": { + "type": "Any" + } + } + ] + }, + "games/Ptlheapdump/Resheapdump": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "code", + "type": { + "type": "Number" + } + }, + { + "id": 1, + "name": "data", + "type": { + "type": "Any" + } + } + ] + }, "games/Ptlmetrics/Reqmetrics": { "type": "Interface" }, diff --git a/src/setHttp.ts b/src/setHttp.ts index 6c10173..62af391 100644 --- a/src/setHttp.ts +++ b/src/setHttp.ts @@ -10,7 +10,8 @@ export async function createHttp() { json: true, cors: '*', port: G.config.httpPort, - logLevel: G.argv.logModel as LogLevel + logLevel: G.argv.logModel as LogLevel, + apiTimeout:300000, }); setHttp(G.http); await G.http.autoImplementApi(resolve(__dirname, 'api_o2s'), true); From 3c84f4092aee08717a9387027bcf10b7e264801b Mon Sep 17 00:00:00 2001 From: ciniao <4041990@qq.com> Date: Wed, 20 Dec 2023 12:29:19 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E7=8E=8B=E8=80=85=E8=8D=A3=E8=80=80?= =?UTF-8?q?=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api_cross/wzry/ApiRank.ts | 12 +++++++++--- src/public/scheduler/scheduler_wzry.ts | 13 +++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/api_cross/wzry/ApiRank.ts b/src/api_cross/wzry/ApiRank.ts index 767fdc8..77ccad7 100644 --- a/src/api_cross/wzry/ApiRank.ts +++ b/src/api_cross/wzry/ApiRank.ts @@ -1,23 +1,29 @@ import {ApiCall} from "tsrpc"; import {ReqRank, ResRank} from "../../cross/protocols/wzry/PtlRank"; import {player} from "../../shared/protocols/user/type"; -import {FindOptions} from "mongodb"; +import {Filter, FindOptions, OptionalId} from "mongodb"; +import { CollectionRankList } from "../../module/collection_rank"; -export async function getRankList(limit?: number, projection?: any) { +export async function getRankList(limit?: number, projection?: any, _where?:any) { let option: FindOptions = { sort: { 'data.valArr': -1, 'data.player.power': -1 } } + let filter:Filter> = {type: 'wzryCross'}; + if (limit != null) { option.limit = limit; } if (projection != null) { option.projection = projection; } + if (_where != null) { + Object.assign(filter, _where); + } - let listArr = await G.mongodb.collection('rankList').find({type: 'wzryCross'}, option).toArray(); + let listArr = await G.mongodb.collection('rankList').find(filter, option).toArray(); let list = listArr.map(l => l.data); return list; diff --git a/src/public/scheduler/scheduler_wzry.ts b/src/public/scheduler/scheduler_wzry.ts index 2ae2094..02d3a8a 100644 --- a/src/public/scheduler/scheduler_wzry.ts +++ b/src/public/scheduler/scheduler_wzry.ts @@ -102,9 +102,10 @@ export class SchedulerWzryDlDjinji extends SchedulerWzryAutoBaoMing { return } - let _zuanshiUser = await getRankList(null,{ + let _zuanshiUser = await getRankList(256,{ 'data.player.uid':1 - }); //Rank.list.wzryCross.getRankListAll() + },{'data.player.isNpc':{$exists:false}}); + if (_zuanshiUser.length < 256) { console.log("本期无玩家,此次不执行") await this.record() @@ -117,10 +118,10 @@ export class SchedulerWzryDlDjinji extends SchedulerWzryAutoBaoMing { for (let index = 0; index < _zuanshiUser.length; index++) { const element = _zuanshiUser[index]; _userList.push(element.player.uid) - if (element.player.uid.indexOf('npc_') != -1) { - if (_userList.length >= 256) break - continue - } + // if (element.player.uid.indexOf('npc_') != -1) { + // if (_userList.length >= 256) break + // continue + // } // 发送晋级钻石赛奖励 prize.length > 0 && EmailFun.addEmail({ uid: element.player.uid, From 88a3c51e9d982489dcd41e47797168204dd50822 Mon Sep 17 00:00:00 2001 From: dy Date: Wed, 20 Dec 2023 15:27:31 +0800 Subject: [PATCH 03/11] package --- package-lock.json | 1792 ++++++++++++++++++++++++++++++++++++++++++++- package.json | 1 + 2 files changed, 1753 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index c0fc9f0..7ba4421 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "json5": "^2.2.3", "mathjs": "^11.4.0", "mongodb": "^4.17.1", + "node-gyp": "^10.0.1", "ramda": "^0.29.1", "redis": "^4.3.1", "shelljs": "^0.8.5", @@ -1071,6 +1072,95 @@ "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -1105,6 +1195,79 @@ "sparse-bitfield": "^3.0.3" } }, + "node_modules/@npmcli/agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", + "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@redis/bloom": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.0.2.tgz", @@ -1293,6 +1456,14 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1334,6 +1505,50 @@ "node": ">=0.8" } }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -1359,7 +1574,6 @@ "version": "5.0.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -1584,6 +1798,79 @@ "node": ">= 0.8" } }, + "node_modules/cacache": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", + "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", @@ -1669,6 +1956,22 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -1891,7 +2194,6 @@ "version": "7.0.3", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1910,7 +2212,6 @@ "version": "4.3.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -1926,8 +2227,7 @@ "node_modules/debug/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/decamelize": { "version": "4.0.0", @@ -1994,6 +2294,11 @@ "node": ">=0.3.1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "node_modules/editorconfig": { "version": "0.15.3", "resolved": "https://registry.npmmirror.com/editorconfig/-/editorconfig-0.15.3.tgz", @@ -2017,8 +2322,7 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { "version": "1.0.2", @@ -2028,6 +2332,27 @@ "node": ">= 0.8" } }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -2037,6 +2362,19 @@ "once": "^1.4.0" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", @@ -2093,6 +2431,11 @@ "node": ">=10" } }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -2281,6 +2624,32 @@ } } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "2.5.1", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.5.1.tgz", @@ -2340,6 +2709,17 @@ "node": ">=12" } }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2487,8 +2867,7 @@ "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "node_modules/growl": { "version": "1.10.5", @@ -2572,6 +2951,11 @@ "node": ">=6.0.0" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -2587,6 +2971,39 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/http-response-object": { "version": "3.0.2", "resolved": "https://registry.npmmirror.com/http-response-object/-/http-response-object-3.0.2.tgz", @@ -2600,6 +3017,18 @@ "resolved": "https://registry.npmmirror.com/@types/node/-/node-10.17.60.tgz", "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz", @@ -2634,6 +3063,22 @@ "node": ">= 4" } }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", @@ -2784,7 +3229,6 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -2810,6 +3254,11 @@ "node": ">=8" } }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", @@ -2855,8 +3304,24 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } }, "node_modules/javascript-natural-sort": { "version": "0.7.1", @@ -2998,6 +3463,27 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmmirror.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -3136,6 +3622,161 @@ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mocha": { "version": "9.2.2", "resolved": "https://registry.npmmirror.com/mocha/-/mocha-9.2.2.tgz", @@ -3237,6 +3878,138 @@ "node": ">= 0.6" } }, + "node_modules/node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3397,6 +4170,20 @@ "node": ">=10" } }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse-cache-control": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz", @@ -3431,7 +4218,6 @@ "version": "3.1.1", "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -3441,6 +4227,29 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -3455,6 +4264,14 @@ "node": ">=8.6" } }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -3468,6 +4285,18 @@ "asap": "~2.0.6" } }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -3672,6 +4501,14 @@ "node": ">=8" } }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz", @@ -3782,7 +4619,6 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -3794,7 +4630,6 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -3859,6 +4694,40 @@ "npm": ">= 3.0.0" } }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -3879,6 +4748,17 @@ "node": ">=0.8" } }, + "node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/standard-as-callback": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", @@ -3905,7 +4785,20 @@ "version": "4.2.3", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3919,7 +4812,18 @@ "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3995,6 +4899,57 @@ "get-port": "^3.1.0" } }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/then-request": { "version": "6.0.2", "resolved": "https://registry.npmmirror.com/then-request/-/then-request-6.0.2.tgz", @@ -4336,6 +5291,28 @@ "typescript": "^2.1.6 || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev" } }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", @@ -4421,7 +5398,6 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -4468,6 +5444,23 @@ "node": ">=10" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", @@ -5474,6 +6467,64 @@ "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -5505,6 +6556,62 @@ "sparse-bitfield": "^3.0.3" } }, + "@npmcli/agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", + "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "requires": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + } + } + }, + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "requires": { + "semver": "^7.3.5" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, "@redis/bloom": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.0.2.tgz", @@ -5678,6 +6785,11 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -5704,6 +6816,38 @@ "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" }, + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "requires": { + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -5722,8 +6866,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -5910,6 +7053,60 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, + "cacache": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", + "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", @@ -5980,6 +7177,16 @@ "readdirp": "~3.6.0" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -6159,7 +7366,6 @@ "version": "7.0.3", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6175,7 +7381,6 @@ "version": "4.3.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, "requires": { "ms": "2.1.2" }, @@ -6183,8 +7388,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -6234,6 +7438,11 @@ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "editorconfig": { "version": "0.15.3", "resolved": "https://registry.npmmirror.com/editorconfig/-/editorconfig-0.15.3.tgz", @@ -6254,14 +7463,33 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -6271,6 +7499,16 @@ "once": "^1.4.0" } }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", @@ -6315,6 +7553,11 @@ "strip-final-newline": "^2.0.0" } }, + "exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -6464,6 +7707,22 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } + }, "form-data": { "version": "2.5.1", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.5.1.tgz", @@ -6505,6 +7764,14 @@ "universalify": "^2.0.0" } }, + "fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "requires": { + "minipass": "^7.0.3" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6622,8 +7889,7 @@ "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "growl": { "version": "1.10.5", @@ -6682,6 +7948,11 @@ "parse-cache-control": "^1.0.1" } }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -6694,6 +7965,30 @@ "toidentifier": "1.0.1" } }, + "http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "http-response-object": { "version": "3.0.2", "resolved": "https://registry.npmmirror.com/http-response-object/-/http-response-object-3.0.2.tgz", @@ -6709,6 +8004,15 @@ } } }, + "https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz", @@ -6734,6 +8038,16 @@ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", @@ -6849,8 +8163,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", @@ -6867,6 +8180,11 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", @@ -6900,8 +8218,16 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } }, "javascript-natural-sort": { "version": "0.7.1", @@ -7023,6 +8349,24 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "requires": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + } + }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmmirror.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -7125,6 +8469,128 @@ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, + "minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "requires": { + "minipass": "^7.0.3" + } + }, + "minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "requires": { + "encoding": "^0.1.13", + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, "mocha": { "version": "9.2.2", "resolved": "https://registry.npmmirror.com/mocha/-/mocha-9.2.2.tgz", @@ -7205,6 +8671,95 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, + "node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "requires": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "requires": { + "isexe": "^3.1.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "requires": { + "abbrev": "^2.0.0" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7329,6 +8884,14 @@ "p-limit": "^3.0.2" } }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, "parse-cache-control": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz", @@ -7353,14 +8916,29 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + } + } + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -7372,6 +8950,11 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==" + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -7385,6 +8968,15 @@ "asap": "~2.0.6" } }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -7543,6 +9135,11 @@ "signal-exit": "^3.0.2" } }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz", @@ -7645,7 +9242,6 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -7653,8 +9249,7 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "shelljs": { "version": "0.8.5", @@ -7702,6 +9297,31 @@ "smart-buffer": "^4.2.0" } }, + "socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -7719,6 +9339,14 @@ "frac": "~1.1.2" } }, + "ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "requires": { + "minipass": "^7.0.3" + } + }, "standard-as-callback": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", @@ -7742,7 +9370,16 @@ "version": "4.2.3", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7753,7 +9390,14 @@ "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" } @@ -7808,6 +9452,49 @@ "get-port": "^3.1.0" } }, + "tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, "then-request": { "version": "6.0.2", "resolved": "https://registry.npmmirror.com/then-request/-/then-request-6.0.2.tgz", @@ -8077,6 +9764,22 @@ "editorconfig": "^0.15.0" } }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", @@ -8141,7 +9844,6 @@ "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -8173,6 +9875,16 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 2f06bdb..fb00982 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "json5": "^2.2.3", "mathjs": "^11.4.0", "mongodb": "^4.17.1", + "node-gyp": "^10.0.1", "ramda": "^0.29.1", "redis": "^4.3.1", "shelljs": "^0.8.5", From 715f564848c6209ce25866af8d2218df8e93268b Mon Sep 17 00:00:00 2001 From: dy Date: Wed, 20 Dec 2023 21:59:23 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E9=80=A0=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api_s2c/item/ApiUse.ts | 13 +- src/json/item.json | 44 +++++- src/json/playerHead.json | 108 ++++++++----- src/json/playerHeadFrame.json | 17 ++ src/json/playerModel.json | 138 ++++++++-------- src/json/tuisonglibao.json | 288 ++++++++++++++++++++++++++++++++-- src/jsonType.ts | 4 +- src/public/user.ts | 118 ++++++++++---- 8 files changed, 565 insertions(+), 165 deletions(-) diff --git a/src/api_s2c/item/ApiUse.ts b/src/api_s2c/item/ApiUse.ts index 7b850e0..65f786c 100644 --- a/src/api_s2c/item/ApiUse.ts +++ b/src/api_s2c/item/ApiUse.ts @@ -6,7 +6,7 @@ import {PublicShared} from '../../shared/public/public'; import {TanXianShared} from '../../shared/public/tanxian'; import {event_dldh_addPrize} from '../event/diaoluoduihuan/ApiOpen'; import {getEventPrize} from '../tanxian/ApiEvent'; -import { getItemByItemId } from "../../public/item"; +import {getItemByItemId} from "../../public/item"; const iType = { 3: 'hero', @@ -15,10 +15,10 @@ const iType = { }; export default async function (call: ApiCall) { - - //ȥ��item Redis��� - let itemInfo = await getItemByItemId(call.uid,call.req.itemId); //call.conn.item[call.req.itemId]; - if(!itemInfo[call.req.itemId]) return call.error(globalThis.lng.item_1); + + //ȥ��item Redis��� + let itemInfo = await getItemByItemId(call.uid, call.req.itemId); //call.conn.item[call.req.itemId]; + if (!itemInfo[call.req.itemId]) return call.error(globalThis.lng.item_1); let item = itemInfo[call.req.itemId]; let useNum = call.req.useNum; @@ -105,8 +105,9 @@ export default async function (call: ApiCall) { n: useNum } ]; - } else if ([7, 8].includes(itemConf.type)) { + } else if ([6, 7, 8].includes(itemConf.type)) { if (useNum > item.num) return call.error(globalThis.lng.item_3); + if (itemConf.type == 6) UserFun.activeModel(call.uid, itemConf.diaoluo.toString(), useNum); if (itemConf.type == 7) UserFun.activeHeadFrame(call.uid, itemConf.diaoluo.toString(), useNum); if (itemConf.type == 8) UserFun.activeChatFrame(call.uid, itemConf.diaoluo.toString(), useNum); diff --git a/src/json/item.json b/src/json/item.json index 1802cff..a5551b3 100644 --- a/src/json/item.json +++ b/src/json/item.json @@ -3860,6 +3860,7 @@ "way": [], "go": "", "icon": "txk_019", + "sicon": "txk_019", "describe": "intr_item_describe_50001", "diaoluo": 3, "useNeed": [], @@ -3878,6 +3879,7 @@ "way": [], "go": "", "icon": "txk_016", + "sicon": "txk_016", "describe": "intr_item_describe_50002", "diaoluo": 4, "useNeed": [], @@ -3896,6 +3898,7 @@ "way": [], "go": "", "icon": "txk_023", + "sicon": "txk_023", "describe": "intr_item_describe_50003", "diaoluo": 6, "useNeed": [], @@ -3914,6 +3917,7 @@ "way": [], "go": "", "icon": "txk_009", + "sicon": "txk_009", "describe": "intr_item_describe_50004", "diaoluo": 7, "useNeed": [], @@ -3932,6 +3936,7 @@ "way": [], "go": "", "icon": "txk_026", + "sicon": "txk_026", "describe": "intr_item_describe_50005", "diaoluo": 8, "useNeed": [], @@ -3950,6 +3955,7 @@ "way": [], "go": "", "icon": "txk_018", + "sicon": "txk_018", "describe": "intr_item_describe_50006", "diaoluo": 9, "useNeed": [], @@ -3968,6 +3974,7 @@ "way": [], "go": "", "icon": "txk_014", + "sicon": "txk_014", "describe": "intr_item_describe_50007", "diaoluo": 10, "useNeed": [], @@ -3986,6 +3993,7 @@ "way": [], "go": "", "icon": "txk_022", + "sicon": "txk_022", "describe": "intr_item_describe_50008", "diaoluo": 11, "useNeed": [], @@ -4004,6 +4012,7 @@ "way": [], "go": "", "icon": "txk_028", + "sicon": "txk_028", "describe": "intr_item_describe_50009", "diaoluo": 23, "useNeed": [], @@ -4012,6 +4021,24 @@ "payId": "", "advancedEffects": "" }, + "50010": { + "id": 50010, + "name": "playerheadFrame_name_24", + "type": 7, + "sort": 1, + "colour": 4, + "way": [], + "go": "", + "icon": "txk_025", + "sicon": "txk_025", + "describe": "intr_item_describe_50010", + "diaoluo": 24, + "useNeed": [], + "usePrize": [], + "selecPrize": [], + "payId": "", + "advancedEffects": "" + }, "50101": { "id": 50101, "name": "playerChatFrame_name_6", @@ -4022,6 +4049,7 @@ "way": [], "go": "", "icon": "lt_dhk11", + "sicon": "lt_dhk11", "describe": "intr_item_describe_50101", "diaoluo": 6, "useNeed": [], @@ -4040,6 +4068,7 @@ "way": [], "go": "", "icon": "lt_dhk10", + "sicon": "lt_dhk10", "describe": "intr_item_describe_50102", "diaoluo": 7, "useNeed": [], @@ -4058,6 +4087,7 @@ "way": [], "go": "", "icon": "txk_020", + "sicon": "txk_020", "describe": "intr_item_describe_50103", "diaoluo": 15, "useNeed": [], @@ -4076,6 +4106,7 @@ "way": [], "go": "", "icon": "lt_dhk14", + "sicon": "lt_dhk14", "describe": "intr_item_describe_50104", "diaoluo": 8, "useNeed": [], @@ -4094,6 +4125,7 @@ "way": [], "go": "", "icon": "txk_017", + "sicon": "txk_017", "describe": "intr_item_describe_50201", "diaoluo": 16, "useNeed": [], @@ -4112,6 +4144,7 @@ "way": [], "go": "", "icon": "txk_011", + "sicon": "txk_011", "describe": "intr_item_describe_50202", "diaoluo": 17, "useNeed": [], @@ -4130,6 +4163,7 @@ "way": [], "go": "", "icon": "txk_005", + "sicon": "txk_005", "describe": "intr_item_describe_50203", "diaoluo": 18, "useNeed": [], @@ -4148,6 +4182,7 @@ "way": [], "go": "", "icon": "txk_004", + "sicon": "txk_004", "describe": "intr_item_describe_50204", "diaoluo": 19, "useNeed": [], @@ -4166,6 +4201,7 @@ "way": [], "go": "", "icon": "txk_024", + "sicon": "txk_024", "describe": "intr_item_describe_50205", "diaoluo": 20, "useNeed": [], @@ -4184,6 +4220,7 @@ "way": [], "go": "", "icon": "txk_013", + "sicon": "txk_013", "describe": "intr_item_describe_50206", "diaoluo": 21, "useNeed": [], @@ -4202,6 +4239,7 @@ "way": [], "go": "", "icon": "txk_021", + "sicon": "txk_021", "describe": "intr_item_describe_50207", "diaoluo": 22, "useNeed": [], @@ -4220,7 +4258,8 @@ "way": [], "go": "", "icon": 100011, - "describe": "intr_item_describe_50208", + "sicon": 100011, + "describe": "intr_item_describe_50301", "diaoluo": 3, "useNeed": [], "usePrize": [], @@ -4238,7 +4277,8 @@ "way": [], "go": "", "icon": 100021, - "describe": "intr_item_describe_50209", + "sicon": 100021, + "describe": "intr_item_describe_50302", "diaoluo": 4, "useNeed": [], "usePrize": [], diff --git a/src/json/playerHead.json b/src/json/playerHead.json index 04f1367..37bf3c9 100644 --- a/src/json/playerHead.json +++ b/src/json/playerHead.json @@ -29,6 +29,36 @@ "colour": 1, "ani": "" }, + "3": { + "id": 3, + "name": "intr_playerinfo_name_3", + "undefined": "获得圣诞活动皮肤【圣诞庆典:男】后解锁", + "img": 100011, + "cond": [ + "model", + 3 + ], + "intr": "intr_playerinfo_intr_3", + "sort": 3, + "buff": {}, + "colour": 1, + "ani": "" + }, + "4": { + "id": 4, + "name": "intr_playerinfo_name_4", + "undefined": "获得圣诞活动皮肤【圣诞庆典:女】后解锁", + "img": 100021, + "cond": [ + "model", + 4 + ], + "intr": "intr_playerinfo_intr_4", + "sort": 4, + "buff": {}, + "colour": 1, + "ani": "" + }, "1001": { "id": 1001, "name": "intr_playerinfo_name_1001", @@ -39,7 +69,7 @@ 1001 ], "intr": "intr_playerinfo_intr_1001", - "sort": 40, + "sort": 42, "buff": {}, "colour": 1, "ani": "" @@ -54,7 +84,7 @@ 1002 ], "intr": "intr_playerinfo_intr_1002", - "sort": 41, + "sort": 43, "buff": {}, "colour": 1, "ani": "" @@ -69,7 +99,7 @@ 2001 ], "intr": "intr_playerinfo_intr_2001", - "sort": 38, + "sort": 40, "buff": {}, "colour": 1, "ani": "" @@ -84,7 +114,7 @@ 2002 ], "intr": "intr_playerinfo_intr_2002", - "sort": 39, + "sort": 41, "buff": {}, "colour": 1, "ani": "" @@ -99,7 +129,7 @@ 3001 ], "intr": "intr_playerinfo_intr_3001", - "sort": 23, + "sort": 25, "buff": {}, "colour": 1, "ani": "" @@ -114,7 +144,7 @@ 3002 ], "intr": "intr_playerinfo_intr_3002", - "sort": 24, + "sort": 26, "buff": {}, "colour": 1, "ani": "" @@ -129,7 +159,7 @@ 3003 ], "intr": "intr_playerinfo_intr_3003", - "sort": 25, + "sort": 27, "buff": {}, "colour": 1, "ani": "" @@ -144,7 +174,7 @@ 3004 ], "intr": "intr_playerinfo_intr_3004", - "sort": 26, + "sort": 28, "buff": {}, "colour": 1, "ani": "" @@ -159,7 +189,7 @@ 3005 ], "intr": "intr_playerinfo_intr_3005", - "sort": 27, + "sort": 29, "buff": {}, "colour": 1, "ani": "" @@ -174,7 +204,7 @@ 3006 ], "intr": "intr_playerinfo_intr_3006", - "sort": 28, + "sort": 30, "buff": {}, "colour": 1, "ani": "" @@ -189,7 +219,7 @@ 3007 ], "intr": "intr_playerinfo_intr_3007", - "sort": 29, + "sort": 31, "buff": {}, "colour": 1, "ani": "" @@ -204,7 +234,7 @@ 3008 ], "intr": "intr_playerinfo_intr_3008", - "sort": 30, + "sort": 32, "buff": {}, "colour": 1, "ani": "" @@ -219,7 +249,7 @@ 3009 ], "intr": "intr_playerinfo_intr_3009", - "sort": 31, + "sort": 33, "buff": {}, "colour": 1, "ani": "" @@ -234,7 +264,7 @@ 3010 ], "intr": "intr_playerinfo_intr_3010", - "sort": 32, + "sort": 34, "buff": {}, "colour": 1, "ani": "" @@ -249,7 +279,7 @@ 3011 ], "intr": "intr_playerinfo_intr_3011", - "sort": 33, + "sort": 35, "buff": {}, "colour": 1, "ani": "" @@ -264,7 +294,7 @@ 3012 ], "intr": "intr_playerinfo_intr_3012", - "sort": 34, + "sort": 36, "buff": {}, "colour": 1, "ani": "" @@ -279,7 +309,7 @@ 3013 ], "intr": "intr_playerinfo_intr_3013", - "sort": 35, + "sort": 37, "buff": {}, "colour": 1, "ani": "" @@ -294,7 +324,7 @@ 3014 ], "intr": "intr_playerinfo_intr_3014", - "sort": 36, + "sort": 38, "buff": {}, "colour": 1, "ani": "" @@ -309,7 +339,7 @@ 3015 ], "intr": "intr_playerinfo_intr_3015", - "sort": 37, + "sort": 39, "buff": {}, "colour": 1, "ani": "" @@ -324,7 +354,7 @@ 4001 ], "intr": "intr_playerinfo_intr_4001", - "sort": 8, + "sort": 10, "buff": {}, "colour": 1, "ani": "" @@ -339,7 +369,7 @@ 4002 ], "intr": "intr_playerinfo_intr_4002", - "sort": 9, + "sort": 11, "buff": {}, "colour": 1, "ani": "" @@ -354,7 +384,7 @@ 4003 ], "intr": "intr_playerinfo_intr_4003", - "sort": 10, + "sort": 12, "buff": {}, "colour": 1, "ani": "" @@ -369,7 +399,7 @@ 4004 ], "intr": "intr_playerinfo_intr_4004", - "sort": 11, + "sort": 13, "buff": {}, "colour": 1, "ani": "" @@ -384,7 +414,7 @@ 4005 ], "intr": "intr_playerinfo_intr_4005", - "sort": 12, + "sort": 14, "buff": {}, "colour": 1, "ani": "" @@ -399,7 +429,7 @@ 4006 ], "intr": "intr_playerinfo_intr_4006", - "sort": 13, + "sort": 15, "buff": {}, "colour": 1, "ani": "" @@ -414,7 +444,7 @@ 4007 ], "intr": "intr_playerinfo_intr_4007", - "sort": 14, + "sort": 16, "buff": {}, "colour": 1, "ani": "" @@ -429,7 +459,7 @@ 4008 ], "intr": "intr_playerinfo_intr_4008", - "sort": 15, + "sort": 17, "buff": {}, "colour": 1, "ani": "" @@ -444,7 +474,7 @@ 4009 ], "intr": "intr_playerinfo_intr_4009", - "sort": 16, + "sort": 18, "buff": {}, "colour": 1, "ani": "" @@ -459,7 +489,7 @@ 4010 ], "intr": "intr_playerinfo_intr_4010", - "sort": 17, + "sort": 19, "buff": {}, "colour": 1, "ani": "" @@ -474,7 +504,7 @@ 4011 ], "intr": "intr_playerinfo_intr_4011", - "sort": 18, + "sort": 20, "buff": {}, "colour": 1, "ani": "" @@ -489,7 +519,7 @@ 4012 ], "intr": "intr_playerinfo_intr_4012", - "sort": 19, + "sort": 21, "buff": {}, "colour": 1, "ani": "" @@ -504,7 +534,7 @@ 4013 ], "intr": "intr_playerinfo_intr_4013", - "sort": 20, + "sort": 22, "buff": {}, "colour": 1, "ani": "" @@ -519,7 +549,7 @@ 4014 ], "intr": "intr_playerinfo_intr_4014", - "sort": 21, + "sort": 23, "buff": {}, "colour": 1, "ani": "" @@ -534,7 +564,7 @@ 4015 ], "intr": "intr_playerinfo_intr_4015", - "sort": 22, + "sort": 24, "buff": {}, "colour": 1, "ani": "" @@ -549,7 +579,7 @@ 5001 ], "intr": "intr_playerinfo_intr_5001", - "sort": 3, + "sort": 5, "buff": {}, "colour": 1, "ani": "" @@ -564,7 +594,7 @@ 5002 ], "intr": "intr_playerinfo_intr_5002", - "sort": 4, + "sort": 6, "buff": {}, "colour": 1, "ani": "" @@ -579,7 +609,7 @@ 5003 ], "intr": "intr_playerinfo_intr_5003", - "sort": 5, + "sort": 7, "buff": {}, "colour": 1, "ani": "" @@ -594,7 +624,7 @@ 5004 ], "intr": "intr_playerinfo_intr_5004", - "sort": 6, + "sort": 8, "buff": {}, "colour": 1, "ani": "" @@ -609,7 +639,7 @@ 5005 ], "intr": "intr_playerinfo_intr_5005", - "sort": 7, + "sort": 9, "buff": {}, "colour": 1, "ani": "" diff --git a/src/json/playerHeadFrame.json b/src/json/playerHeadFrame.json index 485c541..a52191d 100644 --- a/src/json/playerHeadFrame.json +++ b/src/json/playerHeadFrame.json @@ -391,5 +391,22 @@ }, "colour": 4, "ani": "" + }, + "24": { + "id": 24, + "name": "playerheadFrame_name_24", + "undefined": "消费竞赛活动前三名获得,解锁后伤害加成+1%(限时7天)", + "img": "txk_025", + "cond": [ + "time", + 604800 + ], + "intr": "playerheadFrame_des_24", + "sort": 24, + "buff": { + "dpspro": 0.01 + }, + "colour": 5, + "ani": "" } } \ No newline at end of file diff --git a/src/json/playerModel.json b/src/json/playerModel.json index dcf972b..634d211 100644 --- a/src/json/playerModel.json +++ b/src/json/playerModel.json @@ -1,76 +1,74 @@ { "1": { - "1": { - "type": 1, - "id": 1, - "name": "playerModel_name_1", - "head": 10001, - "img": "zhu_10001", - "cond": [ - "lv", - 1 - ], - "intr": "playerModel_des_1", - "sort": 1, - "buff": {}, - "colour": 1, - "mwSpine": "ani_mingwangnan", - "fireHead": "img_lih2" + "id": 1, + "type": 1, + "name": "playerModel_name_1", + "head": 10001, + "img": "zhu_10001", + "cond": [ + "lv", + 1 + ], + "intr": "playerModel_des_1", + "sort": 1, + "buff": {}, + "colour": 1, + "mwSpine": "ani_mingwangnan", + "fireHead": "img_lih2" + }, + "2": { + "id": 2, + "type": 1, + "name": "playerModel_name_2", + "head": 10002, + "img": "zhu_10002", + "cond": [ + "lv", + 1 + ], + "intr": "playerModel_des_2", + "sort": 2, + "buff": {}, + "colour": 1, + "mwSpine": "ani_mingwangnv", + "fireHead": "img_lih1" + }, + "3": { + "id": 3, + "type": 1, + "name": "playerModel_name_3", + "head": 100011, + "img": 100011, + "cond": [ + "time", + -1 + ], + "intr": "playerModel_des_3", + "sort": 3, + "buff": { + "defpro": 0.02 }, - "2": { - "type": 1, - "id": 2, - "name": "playerModel_name_2", - "head": 10002, - "img": "zhu_10002", - "cond": [ - "lv", - 1 - ], - "intr": "playerModel_des_2", - "sort": 2, - "buff": {}, - "colour": 1, - "mwSpine": "ani_mingwangnv", - "fireHead": "img_lih1" + "colour": 5, + "mwSpine": "ani_mingwangnan", + "fireHead": "img_lih21" + }, + "4": { + "id": 4, + "type": 1, + "name": "playerModel_name_4", + "head": 100021, + "img": 100021, + "cond": [ + "time", + -1 + ], + "intr": "playerModel_des_4", + "sort": 4, + "buff": { + "atkpro": 0.02 }, - "3": { - "type": 1, - "id": 3, - "name": "playerModel_name_3", - "head": 100011, - "img": 100011, - "cond": [ - "time", - -1 - ], - "intr": "playerModel_des_3", - "sort": 3, - "buff": { - "defpro": 0.02 - }, - "colour": 5, - "mwSpine": "ani_mingwangnan", - "fireHead": "img_lih21" - }, - "4": { - "type": 1, - "id": 4, - "name": "playerModel_name_4", - "head": 100021, - "img": 100021, - "cond": [ - "time", - -1 - ], - "intr": "playerModel_des_4", - "sort": 4, - "buff": { - "atkpro": 0.02 - }, - "colour": 5, - "mwSpine": "ani_mingwangnv", - "fireHead": "img_lih11" - } + "colour": 5, + "mwSpine": "ani_mingwangnv", + "fireHead": "img_lih11" } } \ No newline at end of file diff --git a/src/json/tuisonglibao.json b/src/json/tuisonglibao.json index 737dbc1..20f6783 100644 --- a/src/json/tuisonglibao.json +++ b/src/json/tuisonglibao.json @@ -2,6 +2,7 @@ "1": { "id": 1, "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 5 ], @@ -17,6 +18,7 @@ "2": { "id": 2, "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 10 ], @@ -31,6 +33,7 @@ "3": { "id": 3, "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 20 ], @@ -44,7 +47,8 @@ }, "4": { "id": 4, - "type": 2, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ { "a": "item", @@ -61,7 +65,8 @@ }, "5": { "id": 5, - "type": 2, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ { "a": "item", @@ -78,7 +83,8 @@ }, "6": { "id": 6, - "type": 2, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ { "a": "attr", @@ -96,7 +102,8 @@ }, "7": { "id": 7, - "type": 3, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 1 ], @@ -111,7 +118,8 @@ }, "8": { "id": 8, - "type": 4, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 3 ], @@ -126,7 +134,8 @@ }, "9": { "id": 9, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 31 ], @@ -139,7 +148,8 @@ }, "10": { "id": 10, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 45 ], @@ -152,7 +162,8 @@ }, "11": { "id": 11, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 50 ], @@ -165,7 +176,8 @@ }, "12": { "id": 12, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 53 ], @@ -178,7 +190,8 @@ }, "13": { "id": 13, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 56 ], @@ -191,7 +204,8 @@ }, "14": { "id": 14, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 60 ], @@ -204,7 +218,8 @@ }, "15": { "id": 15, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 63 ], @@ -217,7 +232,8 @@ }, "16": { "id": 16, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 66 ], @@ -230,7 +246,8 @@ }, "17": { "id": 17, - "type": 5, + "type": 1, + "typeName": "tuisonglibao_name_2", "num": [ 68 ], @@ -243,7 +260,233 @@ }, "18": { "id": 18, + "type": 1, + "typeName": "tuisonglibao_name_2", + "num": [ + 760 + ], + "payId": [ + "guanqialibao_1", + "guanqialibao_2", + "guanqialibao_4" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "101": { + "id": 101, + "type": 2, + "typeName": "tuisonglibao_name_3", + "num": [ + { + "a": "item", + "t": "9" + } + ], + "payId": [ + "daojulibao_1", + "daojulibao_2", + "daojulibao_3" + ], + "time": 3600, + "displayCD": 86400, + "scale": 3000 + }, + "102": { + "id": 102, + "type": 2, + "typeName": "tuisonglibao_name_3", + "num": [ + { + "a": "item", + "t": "28" + } + ], + "payId": [ + "daojulibao_4", + "daojulibao_5", + "daojulibao_6" + ], + "time": 3600, + "displayCD": 86400, + "scale": 3000 + }, + "103": { + "id": 103, + "type": 2, + "typeName": "tuisonglibao_name_3", + "num": [ + { + "a": "item", + "t": "18" + } + ], + "payId": [ + "daojulibao_7", + "daojulibao_8", + "daojulibao_9" + ], + "time": 3600, + "displayCD": 86400, + "scale": 3000 + }, + "104": { + "id": 104, + "type": 2, + "typeName": "tuisonglibao_name_3", + "num": [ + { + "a": "item", + "t": "19" + } + ], + "payId": [ + "daojulibao_10", + "daojulibao_11", + "daojulibao_12" + ], + "time": 3600, + "displayCD": 86400, + "scale": 3000 + }, + "401": { + "id": 401, "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 15 + ], + "payId": [ + "lv15" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "402": { + "id": 402, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 25 + ], + "payId": [ + "lv25" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "403": { + "id": 403, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 40 + ], + "payId": [ + "lv40", + "lv40_1" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "404": { + "id": 404, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 50 + ], + "payId": [ + "lv50_1", + "lv50_2" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "405": { + "id": 405, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 55 + ], + "payId": [ + "lv55", + "lv55_1" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "406": { + "id": 406, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 60 + ], + "payId": [ + "lv60", + "lv60_1" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "407": { + "id": 407, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 63 + ], + "payId": [ + "lv63", + "lv63_1" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "408": { + "id": 408, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 66 + ], + "payId": [ + "lv66", + "lv66_1" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "409": { + "id": 409, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 69 + ], + "payId": [ + "lv69", + "lv69_1" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 + }, + "410": { + "id": 410, + "type": 5, + "typeName": "tuisonglibao_name_1", "num": [ 70 ], @@ -252,6 +495,21 @@ ], "time": 3600, "displayCD": 3600, - "scale": 1800 + "scale": 3000 + }, + "411": { + "id": 411, + "type": 5, + "typeName": "tuisonglibao_name_1", + "num": [ + 82 + ], + "payId": [ + "lv82_1", + "lv82_2" + ], + "time": 3600, + "displayCD": 3600, + "scale": 3000 } } \ No newline at end of file diff --git a/src/jsonType.ts b/src/jsonType.ts index 43654a4..e822019 100644 --- a/src/jsonType.ts +++ b/src/jsonType.ts @@ -1032,7 +1032,7 @@ type gc_playerLv = k_v<{ 'tujianlv': number }>; -type gc_playerModel = k_v>; +}>; type gc_pmd = { "get_hero_star5_pmd": string, "glkb_pmd": string, "jinjie_peijian": string, "guild_pmd": string, "tlsd_pmd": string, "hbzb_pmd1": string, "hbzb_pmd2": string, "hbzb_pmd3": string, [x: string]: any } diff --git a/src/public/user.ts b/src/public/user.ts index 0189473..ff9dcc1 100644 --- a/src/public/user.ts +++ b/src/public/user.ts @@ -1,14 +1,14 @@ import CryptoJS from 'crypto-js'; -import { ObjectId, OptionalId, WithId } from 'mongodb'; -import { BaseConnection } from 'tsrpc'; -import { Wjjl } from '../module/collection_wjjl'; -import { ServiceType } from '../shared/protocols/serviceProto'; -import { ReqLogin, ResLogin, playerAppend, playerAttr, playerInfo } from '../shared/protocols/user/PtlLogin'; -import { player } from '../shared/protocols/user/type'; -import { PublicShared } from '../shared/public/public'; -import { PlayerFun } from './player'; -import { ZhanLingTasks } from './zhanling'; -import { getGud, setGud } from './gud'; +import {ObjectId, OptionalId, WithId} from 'mongodb'; +import {BaseConnection} from 'tsrpc'; +import {Wjjl} from '../module/collection_wjjl'; +import {ServiceType} from '../shared/protocols/serviceProto'; +import {ReqLogin, ResLogin, playerAppend, playerAttr, playerInfo} from '../shared/protocols/user/PtlLogin'; +import {player} from '../shared/protocols/user/type'; +import {PublicShared} from '../shared/public/public'; +import {PlayerFun} from './player'; +import {ZhanLingTasks} from './zhanling'; +import {getGud, setGud} from './gud'; export const defaultUserInfo: playerInfo = { lv: 1, @@ -30,14 +30,12 @@ export const defaultUserAttr: playerAttr = { export const defaultUserAppend: playerAppend = { name: '', tujianLv: 0, - head: { id: "1", time: -1 }, - headFrame: { id: "1", time: -1 }, - chatFrame: { id: "1", time: -1 }, + head: {id: "1", time: -1}, + headFrame: {id: "1", time: -1}, + chatFrame: {id: "1", time: -1}, model: { - 1: { id: "1", time: -1 }, - 2: { id: "1", time: -1 }, - 3: { id: "1", time: -1 }, - 4: { id: "1", time: -1 }, + 1: {id: "1", time: -1}, + 2: {id: "2", time: -1} }, renown: 0, wxcLv: { @@ -60,12 +58,12 @@ export const defaultUserAppend: playerAppend = { ghId: '', ghName: '', ghLevel: 0, - ghwz: { 1: 0, 2: 0, 3: 0, 4: 0 } + ghwz: {1: 0, 2: 0, 3: 0, 4: 0} }; export class UserFun { static create(bUid: string) { - let { bindUid, ...userInfo } = defaultUserInfo; + let {bindUid, ...userInfo} = defaultUserInfo; return { bindUid: bUid, @@ -73,6 +71,7 @@ export class UserFun { ...defaultUserAttr }; } + static async check(gud: ResLogin['gud'], req: ReqLogin) { let obj: k_v = {}; let add: k_v = {}; @@ -126,14 +125,14 @@ export class UserFun { if (h_ids.length < 1) { gud.fightHeros = []; } else { - let dHeros = await G.mongodb.collection('hero').find({ _id: { $in: h_ids.map(id => G.mongodb.conversionId(id)) } }).toArray(); + let dHeros = await G.mongodb.collection('hero').find({_id: {$in: h_ids.map(id => G.mongodb.conversionId(id))}}).toArray(); gud.fightHeros = dHeros.map(h => h.heroId.toString()); } add.fightHeros = gud.fightHeros; } if (!gud.matrixPos) { - gud.matrixPos = Object.fromEntries(Object.keys(G.gc.fightPlan).map(pos => [pos, { ...gud.heroPos }])); + gud.matrixPos = Object.fromEntries(Object.keys(G.gc.fightPlan).map(pos => [pos, {...gud.heroPos}])); add.matrixPos = gud.matrixPos; } @@ -197,7 +196,7 @@ export class UserFun { add.loginTime = G.time; if (Object.keys(add).length > 0) { - G.mongodb.collection('user').updateOne({ bindUid: gud.bindUid,sid:gud.sid }, { + G.mongodb.collection('user').updateOne({bindUid: gud.bindUid, sid: gud.sid}, { $set: { ...add } @@ -211,24 +210,25 @@ export class UserFun { return obj; } - + // 检查空数据并修复 static async checkUidOrName() { - let users = await G.mongodb.collection('user').findOne({$or: [{uid: {$in:['', null]}},{name: {$in: ['', null]}}]}) - if(users) { + let users = await G.mongodb.collection('user').findOne({$or: [{uid: {$in: ['', null]}}, {name: {$in: ['', null]}}]}) + if (users) { let {bindUid, sid, _id} = users let uid = users.uid || (sid + '_' + _id) // 随机创建name let b64 = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(bindUid + sid)); let name = users.name || `temp_${b64}`.toLocaleLowerCase(); - await G.mongodb.collection('user').updateOne({ bindUid, sid }, { + await G.mongodb.collection('user').updateOne({bindUid, sid}, { $set: { uid, name } }); } - return + return } + /**创建账号数据 */ static async createUser(client: BaseConnection, bindUid: string, sid: number): Promise>> { // 开启事务 @@ -258,14 +258,17 @@ export class UserFun { // session.endSession() // 结束事务 return gud as WithId>; } + /**获取玩家附带的buff加成 */ static getOtherBuff(gud: ResLogin['gud']) { return gud; } + static async getGud(uid: string) { //return await G.redis.get('user', uid); return await getGud(uid); } + /**激活头像框 */ static async activeHeadFrame(uid: string, k: string, v: number) { let gud: player; @@ -312,11 +315,12 @@ export class UserFun { } if (change) { - PlayerFun.changeAttr(uid, { headFrames: gud.headFrames }); - G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', { headFrames: gud.headFrames }); + PlayerFun.changeAttr(uid, {headFrames: gud.headFrames}); + G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', {headFrames: gud.headFrames}); G.server.uid_connections[uid]?.refreshPower(); } } + /**激活聊天框 */ static async activeChatFrame(uid: string, k: string, v: number) { let gud: player; @@ -363,8 +367,60 @@ export class UserFun { } if (change) { - PlayerFun.changeAttr(uid, { chatFrames: gud.chatFrames }); - G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', { chatFrames: gud.chatFrames }); + PlayerFun.changeAttr(uid, {chatFrames: gud.chatFrames}); + G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', {chatFrames: gud.chatFrames}); + G.server.uid_connections[uid]?.refreshPower(); + } + } + + /**激活造型 */ + static async activeModel(uid: string, k: string, v: number) { + let gud: player; + // if (G.server.uid_connections[uid]) { + // gud = G.server.uid_connections[uid].gud; + // } else { + // gud = await G.redis.get('user', uid); + // } + gud = await getGud(uid); + + let change = false; + let model = G.gc.playerModel; + let checks = Object.values(model).filter(v => v.cond[0] == k); + if (checks.length > 0) { + checks.forEach(conf => { + let val = v; + if (k == 'wxcLv') val = gud.wxcLv.lv; + else if (gud[k] != undefined) val = gud[k]; + + if (k == 'jjc_rank' && !gud.model[conf.id] && val <= conf.cond[1]) { + gud.model[conf.id] = {id: conf.id + '', time: -1}; + change = true; + } else if (!gud.model[conf.id] && val >= conf.cond[1]) { + gud.model[conf.id] = {id: conf.id + '', time: -1}; + change = true; + } + }); + } else { + let conf = model[k]; + if (conf?.cond?.[0] == 'time') { + let val = conf.cond[1]; + + if (val == -1 && gud.model[conf.id]) { + change = true; + gud.model[conf.id] = {id: conf.id + '', time: -1}; + } else if (!gud.model[conf.id] || gud.model[conf.id].time < G.time) { + change = true; + gud.model[conf.id] = {id: conf.id + '', time: G.time + val * v}; + } else { + change = true; + gud.model[conf.id] = {id: conf.id + '', time: gud.model[conf.id].time += val * v} + } + } + } + + if (change) { + PlayerFun.changeAttr(uid, {model: gud.model}); + G.server.sendMsgByUid(uid, 'msg_s2c/PlayerChange', {model: gud.model}); G.server.uid_connections[uid]?.refreshPower(); } } From d633d52d80f1a9a3b53fbad0a021ea5fea21cca9 Mon Sep 17 00:00:00 2001 From: dy Date: Thu, 21 Dec 2023 10:14:21 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E9=80=A0=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api_s2c/user/ApiChangeInfo.ts | 6 +++--- src/shared/public/user.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/api_s2c/user/ApiChangeInfo.ts b/src/api_s2c/user/ApiChangeInfo.ts index 012bb9f..fdb78f5 100644 --- a/src/api_s2c/user/ApiChangeInfo.ts +++ b/src/api_s2c/user/ApiChangeInfo.ts @@ -6,13 +6,13 @@ import {UserShared} from '../../shared/public/user'; export default async function (call: ApiCall) { - if (call.req.type == 'model' && !call.req.pos) return call.error(globalThis.lng.shiwu_6); + // if (call.req.type == 'model' && !call.req.pos) return call.error(globalThis.lng.shiwu_6); const active = (await G.mongodb.collection('playerInfo', 'playerInfo').findOne({ uid: call.uid, type: 'playerInfo' }))?.active || {}; - const fmtId = UserShared.getInfoId(call.req.type, call.req.id, call.req.pos || ''); + const fmtId = UserShared.getInfoId(call.req.type, call.req.id); const isMeet = UserShared.chechIsActive(fmtId, { lv: call.conn.gud.lv, vip: call.conn.gud.vip, @@ -27,7 +27,7 @@ export default async function (call: ApiCall) { if (call.req.type == 'model') { let d = JSON.parse(JSON.stringify(call.conn.gud.model)); - d[call.req.pos] = { + d[call.req.id] = { id: call.req.id, time: active[fmtId] || -1 }; diff --git a/src/shared/public/user.ts b/src/shared/public/user.ts index 55361c3..26b3bc5 100644 --- a/src/shared/public/user.ts +++ b/src/shared/public/user.ts @@ -10,10 +10,10 @@ export class UserShared { */ static chechIsActive(fmtId: string, collection: Partial<{ lv: number, vip: number, lsyx: k_v, model: k_v, active: k_v; }>) { - const [type, id, pos] = fmtId.split('_'); + const [type, id] = fmtId.split('_'); const jsonName = 'player' + type.slice(0, 1).toLocaleUpperCase() + type.slice(1); const json = G.gc[jsonName] as any; - const conf: _gcType['playerHead'][''] = pos ? json[pos][id] : json[id]; + const conf: _gcType['playerHead'] = json[id]; if (conf.cond[0] == 'lv') return collection.lv >= conf.cond[1]; else if (conf.cond[0] == 'vip') return collection.vip >= conf.cond[1]; From 552da7995190a7d365d2589c2b5a9d69a14df1ec Mon Sep 17 00:00:00 2001 From: dy Date: Thu, 21 Dec 2023 11:32:15 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=A4=B4=E5=83=8F?= =?UTF-8?q?=E9=80=A0=E5=9E=8B=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api_s2c/user/ApiChangeInfo.ts | 4 +++- src/shared/public/user.ts | 21 +++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/api_s2c/user/ApiChangeInfo.ts b/src/api_s2c/user/ApiChangeInfo.ts index fdb78f5..cc04798 100644 --- a/src/api_s2c/user/ApiChangeInfo.ts +++ b/src/api_s2c/user/ApiChangeInfo.ts @@ -8,11 +8,13 @@ export default async function (call: ApiCall) { // if (call.req.type == 'model' && !call.req.pos) return call.error(globalThis.lng.shiwu_6); - const active = (await G.mongodb.collection('playerInfo', 'playerInfo').findOne({ + let active = (await G.mongodb.collection('playerInfo', 'playerInfo').findOne({ uid: call.uid, type: 'playerInfo' }))?.active || {}; const fmtId = UserShared.getInfoId(call.req.type, call.req.id); + if (R.values(active).length == 0) active = UserShared.getActive(fmtId, call.conn.gud, call.req.type, call.req.id) + const isMeet = UserShared.chechIsActive(fmtId, { lv: call.conn.gud.lv, vip: call.conn.gud.vip, diff --git a/src/shared/public/user.ts b/src/shared/public/user.ts index 26b3bc5..11fcf6c 100644 --- a/src/shared/public/user.ts +++ b/src/shared/public/user.ts @@ -4,6 +4,22 @@ export class UserShared { return Array.from(arguments).filter(s => s != '').join('_'); } + // todo active始终为空,暂时获取对应的avtive,解决打包上线的圣诞版本, + // 后续要理清数据格式,填入playerinfo的active,包括user/infoOpen接口的返回 + static getActive(fmtId, player, type, id?) { + switch (type) { + case 'head': + return {[fmtId]: player.head?.time} + case 'headFrame': + return {[fmtId]: player.headFrames[id]} + case 'chatFrame': + return {[fmtId]: player.chatFrames[id]} + case 'model': + return {[fmtId]: player.model?.[id]?.time} + } + return {} + } + /** * 判断头像之类是否激活 * @param id 请使用 UserShared.getInfo 转化后的id @@ -18,8 +34,9 @@ export class UserShared { if (conf.cond[0] == 'lv') return collection.lv >= conf.cond[1]; else if (conf.cond[0] == 'vip') return collection.vip >= conf.cond[1]; else if (conf.cond[0] == 'hero') return collection.lsyx[conf.cond[1]] > 0; - else if (conf.cond[0] == 'time') return collection.active[fmtId] == -1 || collection.active[fmtId] > G.time; - else if (conf.cond[0] == 'model') return Object.values(collection.model).find(i=>i.id==conf.cond[1]); + // else if (conf.cond[0] == 'time') return collection.active[fmtId] == -1 || collection.active[fmtId] > G.time; + else if (conf.cond[0] == 'time') return conf.cond[1] == -1 || collection.active[fmtId] > G.time; + else if (conf.cond[0] == 'model') return Object.values(collection.model).find(i => i.id == conf.cond[1]); else return false; } } \ No newline at end of file From 4ceaeb8a5ec0955e14f858d053859117305e2294 Mon Sep 17 00:00:00 2001 From: dy Date: Thu, 21 Dec 2023 11:36:53 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=A4=B4=E5=83=8F?= =?UTF-8?q?=E9=80=A0=E5=9E=8B=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/public/user.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/public/user.ts b/src/shared/public/user.ts index 11fcf6c..fe19f59 100644 --- a/src/shared/public/user.ts +++ b/src/shared/public/user.ts @@ -35,7 +35,7 @@ export class UserShared { else if (conf.cond[0] == 'vip') return collection.vip >= conf.cond[1]; else if (conf.cond[0] == 'hero') return collection.lsyx[conf.cond[1]] > 0; // else if (conf.cond[0] == 'time') return collection.active[fmtId] == -1 || collection.active[fmtId] > G.time; - else if (conf.cond[0] == 'time') return conf.cond[1] == -1 || collection.active[fmtId] > G.time; + else if (conf.cond[0] == 'time') return conf.cond[1] == -1 || collection.active?.[fmtId] > G.time; else if (conf.cond[0] == 'model') return Object.values(collection.model).find(i => i.id == conf.cond[1]); else return false; } From cd6c79f6ac7171c3577a4016c0ef149828e320fe Mon Sep 17 00:00:00 2001 From: dy Date: Thu, 21 Dec 2023 11:55:32 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E5=86=85=E5=AD=98=E6=B3=84=E9=9C=B2?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 + src/tsbufferIndex.js | 1122 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1124 insertions(+) create mode 100644 src/tsbufferIndex.js diff --git a/Dockerfile b/Dockerfile index a6e8b01..d6f9983 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,4 +11,6 @@ WORKDIR /app RUN npm config set registry http://registry.npm.taobao.org/ && npm install pm2@5.2.2 -g +RUN rm -rf node_modules/tsbuffer-validator/index.js && cp tsbufferIndex.js node_modules/tsbuffer-validator/index.js + CMD cd /app && sh zoeninfo.sh "Asia/Tokyo" && pm2-runtime start js_pm2.config.js -- ${Param} diff --git a/src/tsbufferIndex.js b/src/tsbufferIndex.js new file mode 100644 index 0000000..f9ac364 --- /dev/null +++ b/src/tsbufferIndex.js @@ -0,0 +1,1122 @@ +/*! + * TSBuffer Validator v2.1.1 + * ----------------------------------------- + * MIT LICENSE + * KingWorks (C) Copyright 2022 + * https://github.com/k8w/tsbuffer-validator + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +require('k8w-extend-native'); +var tslib = require('tslib'); +var tsbufferSchema = require('tsbuffer-schema'); + +var ProtoHelper = /** @class */ (function () { + function ProtoHelper(proto) { + //this._schemaWithUuids = []; + this._uuidIndex = 1; + //this._unionPropertiesCache = {}; + //this._flatInterfaceSchemaCache = {}; + this.proto = proto; + } + /** 将ReferenceTypeSchema层层转换为它最终实际引用的类型 */ + ProtoHelper.prototype.parseReference = function (schema) { + // Reference + if (schema.type === tsbufferSchema.SchemaType.Reference) { + var parsedSchema = this.proto[schema.target]; + if (!parsedSchema) { + throw new Error("Cannot find reference target: ".concat(schema.target)); + } + if (this.isTypeReference(parsedSchema)) { + return this.parseReference(parsedSchema); + } + else { + return parsedSchema; + } + } + // IndexedAccess + else if (schema.type === tsbufferSchema.SchemaType.IndexedAccess) { + if (!this.isInterface(schema.objectType)) { + throw new Error("Error objectType: ".concat(schema.objectType.type)); + } + // find prop item + var flat = this.getFlatInterfaceSchema(schema.objectType); + var propItem = flat.properties.find(function (v) { return v.name === schema.index; }); + var propType = void 0; + if (propItem) { + propType = propItem.type; + } + else { + if (flat.indexSignature) { + propType = flat.indexSignature.type; + } + else { + throw new Error("Error index: ".concat(schema.index)); + } + } + // optional -> | undefined + if (propItem && propItem.optional && // 引用的字段是optional + (propItem.type.type !== tsbufferSchema.SchemaType.Union // 自身不为Union + // 或自身为Union,但没有undefined成员条件 + || propItem.type.members.findIndex(function (v) { return v.type.type === tsbufferSchema.SchemaType.Literal && v.type.literal === undefined; }) === -1)) { + propType = { + type: tsbufferSchema.SchemaType.Union, + members: [ + { id: 0, type: propType }, + { + id: 1, + type: { + type: tsbufferSchema.SchemaType.Literal, + literal: undefined + } + } + ] + }; + } + return this.isTypeReference(propType) ? this.parseReference(propType) : propType; + } + else if (schema.type === tsbufferSchema.SchemaType.Keyof) { + var flatInterface = this.getFlatInterfaceSchema(schema.target); + return { + type: tsbufferSchema.SchemaType.Union, + members: flatInterface.properties.map(function (v, i) { return ({ + id: i, + type: { + type: tsbufferSchema.SchemaType.Literal, + literal: v.name + } + }); }) + }; + } + else { + return schema; + } + }; + ProtoHelper.prototype.isInterface = function (schema, excludeReference) { + if (excludeReference === void 0) { excludeReference = false; } + if (!excludeReference && this.isTypeReference(schema)) { + var parsed = this.parseReference(schema); + return this.isInterface(parsed, excludeReference); + } + else { + return schema.type === tsbufferSchema.SchemaType.Interface || this.isMappedType(schema) && this.parseMappedType(schema).type === tsbufferSchema.SchemaType.Interface; + } + }; + ProtoHelper.prototype.isMappedType = function (schema) { + return schema.type === tsbufferSchema.SchemaType.Pick || + schema.type === tsbufferSchema.SchemaType.Partial || + schema.type === tsbufferSchema.SchemaType.Omit || + schema.type === tsbufferSchema.SchemaType.Overwrite; + }; + ProtoHelper.prototype.isTypeReference = function (schema) { + return schema.type === tsbufferSchema.SchemaType.Reference || schema.type === tsbufferSchema.SchemaType.IndexedAccess || schema.type === tsbufferSchema.SchemaType.Keyof; + }; + ProtoHelper.prototype._getSchemaUuid = function (schema) { + var schemaWithUuid = schema; + if (!schemaWithUuid.uuid) { + //schemaWithUuid.uuid = this._schemaWithUuids.push(schemaWithUuid); + schemaWithUuid.uuid = this._uuidIndex; + this._uuidIndex++; + } + return schemaWithUuid.uuid; + }; + ProtoHelper.prototype.getUnionProperties = function (schema) { + return this._addUnionProperties([], schema.members.map(function (v) { return v.type; }));; + + // var uuid = this._getSchemaUuid(schema); + // if (!this._unionPropertiesCache[uuid]) { + // this._unionPropertiesCache[uuid] = this._addUnionProperties([], schema.members.map(function (v) { return v.type; })); + // } + // return this._unionPropertiesCache[uuid]; + }; + /** + * unionProperties: 在Union或Intersection类型中,出现在任意member中的字段 + */ + ProtoHelper.prototype._addUnionProperties = function (unionProperties, schemas) { + for (var i = 0, len = schemas.length; i < len; ++i) { + var schema = this.parseReference(schemas[i]); + // Interface及其Ref 加入interfaces + if (this.isInterface(schema)) { + var flat = this.getFlatInterfaceSchema(schema); + flat.properties.forEach(function (v) { + unionProperties.binaryInsert(v.name, true); + }); + if (flat.indexSignature) { + var key = "[[".concat(flat.indexSignature.keyType, "]]"); + unionProperties.binaryInsert(key, true); + } + } + // Intersection/Union 递归合并unionProperties + else if (schema.type === tsbufferSchema.SchemaType.Intersection || schema.type === tsbufferSchema.SchemaType.Union) { + this._addUnionProperties(unionProperties, schema.members.map(function (v) { return v.type; })); + } + else if (this.isMappedType(schema)) { + this._addUnionProperties(unionProperties, [this.parseMappedType(schema)]); + } + } + return unionProperties; + }; + /** + * 将unionProperties 扩展到 InterfaceTypeSchema中(optional的any类型) + * 以此来跳过对它们的检查(用于Intersection/Union) + */ + ProtoHelper.prototype.applyUnionProperties = function (schema, unionProperties) { + var newSchema = tslib.__assign(tslib.__assign({}, schema), { properties: schema.properties.slice() }); + var _loop_1 = function (prop) { + if (prop === '[[String]]') { + newSchema.indexSignature = newSchema.indexSignature || { + keyType: tsbufferSchema.SchemaType.String, + type: { type: tsbufferSchema.SchemaType.Any } + }; + } + else if (prop === '[[Number]]') { + newSchema.indexSignature = newSchema.indexSignature || { + keyType: tsbufferSchema.SchemaType.Number, + type: { type: tsbufferSchema.SchemaType.Any } + }; + } + else if (!schema.properties.find(function (v) { return v.name === prop; })) { + newSchema.properties.push({ + id: -1, + name: prop, + optional: true, + type: { + type: tsbufferSchema.SchemaType.Any + } + }); + } + }; + for (var _i = 0, unionProperties_1 = unionProperties; _i < unionProperties_1.length; _i++) { + var prop = unionProperties_1[_i]; + _loop_1(prop); + } + return newSchema; + }; + /** + * 将interface及其引用转换为展平的schema + */ + ProtoHelper.prototype.getFlatInterfaceSchema = function (schema) { + let res; + if (this.isTypeReference(schema)) { + var parsed = this.parseReference(schema); + if (parsed.type !== tsbufferSchema.SchemaType.Interface) { + throw new Error("Cannot flatten non interface type: ".concat(parsed.type)); + } + res = this.getFlatInterfaceSchema(parsed); + } + else if (schema.type === tsbufferSchema.SchemaType.Interface) { + res = this._flattenInterface(schema); + } + else if (this.isMappedType(schema)) { + res = this._flattenMappedType(schema); + } + else { + // @ts-expect-error + throw new Error('Invalid interface type: ' + schema.type); + } + return res; + + // var uuid = this._getSchemaUuid(schema); + // // from cache + // if (this._flatInterfaceSchemaCache[uuid]) { + // return this._flatInterfaceSchemaCache[uuid]; + // } + // if (this.isTypeReference(schema)) { + // var parsed = this.parseReference(schema); + // if (parsed.type !== tsbufferSchema.SchemaType.Interface) { + // throw new Error("Cannot flatten non interface type: ".concat(parsed.type)); + // } + // this._flatInterfaceSchemaCache[uuid] = this.getFlatInterfaceSchema(parsed); + // } + // else if (schema.type === tsbufferSchema.SchemaType.Interface) { + // this._flatInterfaceSchemaCache[uuid] = this._flattenInterface(schema); + // } + // else if (this.isMappedType(schema)) { + // this._flatInterfaceSchemaCache[uuid] = this._flattenMappedType(schema); + // } + // else { + // // @ts-expect-error + // throw new Error('Invalid interface type: ' + schema.type); + // } + // return this._flatInterfaceSchemaCache[uuid]; + }; + /** + * 展平interface + */ + ProtoHelper.prototype._flattenInterface = function (schema) { + var properties = {}; + var indexSignature; + // 自身定义的properties和indexSignature优先级最高 + if (schema.properties) { + for (var _i = 0, _a = schema.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + properties[prop.name] = { + optional: prop.optional, + type: prop.type + }; + } + } + if (schema.indexSignature) { + indexSignature = schema.indexSignature; + } + // extends的优先级次之,补全没有定义的字段 + if (schema.extends) { + for (var _b = 0, _c = schema.extends; _b < _c.length; _b++) { + var extend = _c[_b]; + // 解引用 + var parsedExtRef = this.parseReference(extend.type); + if (this.isMappedType(parsedExtRef)) { + parsedExtRef = this._flattenMappedType(parsedExtRef); + } + if (!this.isInterface(parsedExtRef)) { + throw new Error('SchemaError: extends must from interface but from ' + parsedExtRef.type); + } + // 递归展平extends + var flatenExtendsSchema = this.getFlatInterfaceSchema(parsedExtRef); + // properties + if (flatenExtendsSchema.properties) { + for (var _d = 0, _e = flatenExtendsSchema.properties; _d < _e.length; _d++) { + var prop = _e[_d]; + if (!properties[prop.name]) { + properties[prop.name] = { + optional: prop.optional, + type: prop.type + }; + } + } + } + // indexSignature + if (flatenExtendsSchema.indexSignature && !indexSignature) { + indexSignature = flatenExtendsSchema.indexSignature; + } + } + } + return { + type: tsbufferSchema.SchemaType.Interface, + properties: Object.entries(properties).map(function (v, i) { return ({ + id: i, + name: v[0], + optional: v[1].optional, + type: v[1].type + }); }), + indexSignature: indexSignature + }; + }; + /** 将MappedTypeSchema转换为展平的Interface + */ + ProtoHelper.prototype._flattenMappedType = function (schema) { + // target 解引用 + var target; + if (this.isTypeReference(schema.target)) { + var parsed = this.parseReference(schema.target); + target = parsed; + } + else { + target = schema.target; + } + var flatTarget; + // 内层仍然为MappedType 递归之 + if (target.type === tsbufferSchema.SchemaType.Pick || target.type === tsbufferSchema.SchemaType.Partial || target.type === tsbufferSchema.SchemaType.Omit || target.type === tsbufferSchema.SchemaType.Overwrite) { + flatTarget = this._flattenMappedType(target); + } + else if (target.type === tsbufferSchema.SchemaType.Interface) { + flatTarget = this._flattenInterface(target); + } + else { + throw new Error("Invalid target.type: ".concat(target.type)); + } + // 开始执行Mapped逻辑 + if (schema.type === tsbufferSchema.SchemaType.Pick) { + var properties = []; + var _loop_2 = function (key) { + var propItem = flatTarget.properties.find(function (v) { return v.name === key; }); + if (propItem) { + properties.push({ + id: properties.length, + name: key, + optional: propItem.optional, + type: propItem.type + }); + } + else if (flatTarget.indexSignature) { + properties.push({ + id: properties.length, + name: key, + type: flatTarget.indexSignature.type + }); + } + }; + for (var _i = 0, _a = schema.keys; _i < _a.length; _i++) { + var key = _a[_i]; + _loop_2(key); + } + return { + type: tsbufferSchema.SchemaType.Interface, + properties: properties + }; + } + else if (schema.type === tsbufferSchema.SchemaType.Partial) { + for (var _b = 0, _c = flatTarget.properties; _b < _c.length; _b++) { + var v = _c[_b]; + v.optional = true; + } + return flatTarget; + } + else if (schema.type === tsbufferSchema.SchemaType.Omit) { + var _loop_3 = function (key) { + flatTarget.properties.removeOne(function (v) { return v.name === key; }); + }; + for (var _d = 0, _e = schema.keys; _d < _e.length; _d++) { + var key = _e[_d]; + _loop_3(key); + } + return flatTarget; + } + else if (schema.type === tsbufferSchema.SchemaType.Overwrite) { + var overwrite = this.getFlatInterfaceSchema(schema.overwrite); + if (overwrite.indexSignature) { + flatTarget.indexSignature = overwrite.indexSignature; + } + var _loop_4 = function (prop) { + flatTarget.properties.removeOne(function (v) { return v.name === prop.name; }); + flatTarget.properties.push(prop); + }; + for (var _f = 0, _g = overwrite.properties; _f < _g.length; _f++) { + var prop = _g[_f]; + _loop_4(prop); + } + return flatTarget; + } + else { + throw new Error("Unknown type: ".concat(schema.type)); + } + }; + ProtoHelper.prototype.parseMappedType = function (schema) { + // 解嵌套,例如:Pick>> + var parents = []; + var child = schema; + do { + parents.push(child); + child = this.parseReference(child.target); + } while (this.isMappedType(child)); + // 最内层是 interface,直接返回(validator 会验证 key 匹配) + if (child.type === tsbufferSchema.SchemaType.Interface) { + return child; + } + // PickOmit === PickOmit | PickOmit + else if (child.type === tsbufferSchema.SchemaType.Union || child.type === tsbufferSchema.SchemaType.Intersection) { + var newSchema = { + type: child.type, + members: child.members.map(function (v) { + // 从里面往外装 + var type = v.type; + for (var i = parents.length - 1; i > -1; --i) { + var parent_1 = parents[i]; + type = tslib.__assign(tslib.__assign({}, parent_1), { target: type }); + } + return { + id: v.id, + type: type + }; + }) + }; + return newSchema; + } + else { + throw new Error("Unsupported pattern ".concat(schema.type, "<").concat(child.type, ">")); + } + }; + return ProtoHelper; +}()); + +var _a; +/** @internal */ +var ErrorType; +(function (ErrorType) { + ErrorType["TypeError"] = "TypeError"; + ErrorType["InvalidScalarType"] = "InvalidScalarType"; + ErrorType["TupleOverLength"] = "TupleOverLength"; + ErrorType["InvalidEnumValue"] = "InvalidEnumValue"; + ErrorType["InvalidLiteralValue"] = "InvalidLiteralValue"; + ErrorType["MissingRequiredProperty"] = "MissingRequiredProperty"; + ErrorType["ExcessProperty"] = "ExcessProperty"; + ErrorType["InvalidNumberKey"] = "InvalidNumberKey"; + ErrorType["UnionTypesNotMatch"] = "UnionTypesNotMatch"; + ErrorType["UnionMembersNotMatch"] = "UnionMembersNotMatch"; + ErrorType["CustomError"] = "CustomError"; +})(ErrorType || (ErrorType = {})); +/** @internal */ +var ErrorMsg = (_a = {}, + _a[ErrorType.TypeError] = function (expect, actual) { return "Expected type to be `".concat(expect, "`, actually `").concat(actual, "`."); }, + _a[ErrorType.InvalidScalarType] = function (value, scalarType) { return "`".concat(value, "` is not a valid `").concat(scalarType, "`."); }, + _a[ErrorType.TupleOverLength] = function (valueLength, schemaLength) { return "Value has ".concat(valueLength, " elements but schema allows only ").concat(schemaLength, "."); }, + _a[ErrorType.InvalidEnumValue] = function (value) { return "`".concat(value, "` is not a valid enum member."); }, + _a[ErrorType.InvalidLiteralValue] = function (expected, actual) { return "Expected to equals `".concat(stringify(expected), "`, actually `").concat(stringify(actual), "`"); }, + _a[ErrorType.MissingRequiredProperty] = function (propName) { return "Missing required property `".concat(propName, "`."); }, + _a[ErrorType.ExcessProperty] = function (propName) { return "Excess property `".concat(propName, "` should not exists."); }, + _a[ErrorType.InvalidNumberKey] = function (key) { return "`".concat(key, "` is not a valid key, the key here should be a `number`."); }, + // Union + _a[ErrorType.UnionTypesNotMatch] = function (value, types) { return "`".concat(stringify(value), "` is not matched to `").concat(types.join(' | '), "`"); }, + _a[ErrorType.UnionMembersNotMatch] = function (memberErrors) { return "No union member matched, detail:\n".concat(memberErrors.map(function (v, i) { return " <".concat(i, "> ").concat(v.errMsg); }).join('\n')); }, + _a[ErrorType.CustomError] = function (errMsg) { return errMsg; }, + _a); +/** @internal */ +function stringify(value) { + if (typeof value === 'string') { + var output = JSON.stringify(value); + return "'" + output.substr(1, output.length - 2) + "'"; + } + return JSON.stringify(value); +} + +/** @internal */ +var ValidateResultError = /** @class */ (function () { + function ValidateResultError(error) { + this.isSucc = false; + this.error = error; + } + Object.defineProperty(ValidateResultError.prototype, "errMsg", { + get: function () { + return ValidateResultError.getErrMsg(this.error); + }, + enumerable: false, + configurable: true + }); + ValidateResultError.getErrMsg = function (error) { + var _a; + var errMsg = ErrorMsg[error.type].apply(ErrorMsg, error.params); + if ((_a = error.inner) === null || _a === void 0 ? void 0 : _a.property.length) { + return "Property `".concat(error.inner.property.join('.'), "`: ").concat(errMsg); + } + else { + return errMsg; + } + }; + return ValidateResultError; +}()); +/** @internal */ +var ValidateResultUtil = /** @class */ (function () { + function ValidateResultUtil() { + } + ValidateResultUtil.error = function (type) { + var params = []; + for (var _i = 1; _i < arguments.length; _i++) { + params[_i - 1] = arguments[_i]; + } + return new ValidateResultError({ + type: type, + params: params + }); + }; + ValidateResultUtil.innerError = function (property, value, schema, error) { + var _a; + if (error.error.inner) { + if (typeof property === 'string') { + error.error.inner.property.unshift(property); + } + else { + (_a = error.error.inner.property).unshift.apply(_a, property); + } + } + else { + error.error.inner = { + property: typeof property === 'string' ? [property] : property, + value: value, + schema: schema + }; + } + return error; + }; + ValidateResultUtil.succ = { isSucc: true }; + return ValidateResultUtil; +}()); + +var typedArrays = { + Int8Array: Int8Array, + Int16Array: Int16Array, + Int32Array: Int32Array, + BigInt64Array: typeof BigInt64Array !== 'undefined' ? BigInt64Array : undefined, + Uint8Array: Uint8Array, + Uint16Array: Uint16Array, + Uint32Array: Uint32Array, + BigUint64Array: typeof BigUint64Array !== 'undefined' ? BigUint64Array : undefined, + Float32Array: Float32Array, + Float64Array: Float64Array +}; +/** + * TSBuffer Schema Validator + * @public + */ +var TSBufferValidator = /** @class */ (function () { + function TSBufferValidator(proto, options) { + /** + * Default options + */ + this.options = { + excessPropertyChecks: true, + strictNullChecks: false, + cloneProto: true + }; + if (options) { + this.options = tslib.__assign(tslib.__assign({}, this.options), options); + } + this.proto = this.options.cloneProto ? Object.merge({}, proto) : proto; + this.protoHelper = new ProtoHelper(this.proto); + } + /** + * Validate whether the value is valid to the schema + * @param value - Value to be validated. + * @param schemaId - Schema or schema ID. + * For example, the schema ID for type `Test` in `a/b.ts` may be `a/b/Test`. + */ + TSBufferValidator.prototype.validate = function (value, schemaOrId, options) { + var _a, _b; + var schema; + var schemaId; + // Get schema + if (typeof schemaOrId === 'string') { + schemaId = schemaOrId; + schema = this.proto[schemaId]; + if (!schema) { + throw new Error("Cannot find schema: ".concat(schemaId)); + } + } + else { + schema = schemaOrId; + } + // Merge default options + return this._validate(value, schema, tslib.__assign(tslib.__assign({}, options), { excessPropertyChecks: (_a = options === null || options === void 0 ? void 0 : options.excessPropertyChecks) !== null && _a !== void 0 ? _a : this.options.excessPropertyChecks, strictNullChecks: (_b = options === null || options === void 0 ? void 0 : options.strictNullChecks) !== null && _b !== void 0 ? _b : this.options.strictNullChecks })); + }; + TSBufferValidator.prototype._validate = function (value, schema, options) { + var _a; + var vRes; + // Validate + switch (schema.type) { + case tsbufferSchema.SchemaType.Boolean: + vRes = this._validateBooleanType(value, schema); + break; + case tsbufferSchema.SchemaType.Number: + vRes = this._validateNumberType(value, schema); + break; + case tsbufferSchema.SchemaType.String: + vRes = this._validateStringType(value, schema); + break; + case tsbufferSchema.SchemaType.Array: + vRes = this._validateArrayType(value, schema, options); + break; + case tsbufferSchema.SchemaType.Tuple: + vRes = this._validateTupleType(value, schema, options); + break; + case tsbufferSchema.SchemaType.Enum: + vRes = this._validateEnumType(value, schema); + break; + case tsbufferSchema.SchemaType.Any: + vRes = this._validateAnyType(value); + break; + case tsbufferSchema.SchemaType.Literal: + vRes = this._validateLiteralType(value, schema, (_a = options === null || options === void 0 ? void 0 : options.strictNullChecks) !== null && _a !== void 0 ? _a : this.options.strictNullChecks); + break; + case tsbufferSchema.SchemaType.Object: + vRes = this._validateObjectType(value, schema); + break; + case tsbufferSchema.SchemaType.Interface: + vRes = this._validateInterfaceType(value, schema, options); + break; + case tsbufferSchema.SchemaType.Buffer: + vRes = this._validateBufferType(value, schema); + break; + case tsbufferSchema.SchemaType.IndexedAccess: + case tsbufferSchema.SchemaType.Reference: + case tsbufferSchema.SchemaType.Keyof: + vRes = this._validateReferenceType(value, schema, options); + break; + case tsbufferSchema.SchemaType.Union: + vRes = this._validateUnionType(value, schema, options); + break; + case tsbufferSchema.SchemaType.Intersection: + vRes = this._validateIntersectionType(value, schema, options); + break; + case tsbufferSchema.SchemaType.Pick: + case tsbufferSchema.SchemaType.Omit: + case tsbufferSchema.SchemaType.Partial: + case tsbufferSchema.SchemaType.Overwrite: + vRes = this._validateMappedType(value, schema, options); + break; + case tsbufferSchema.SchemaType.Date: + vRes = this._validateDateType(value); + break; + case tsbufferSchema.SchemaType.NonNullable: + vRes = this._validateNonNullableType(value, schema, options); + break; + case tsbufferSchema.SchemaType.Custom: + var res = schema.validate(value); + vRes = res.isSucc ? ValidateResultUtil.succ : ValidateResultUtil.error(ErrorType.CustomError, res.errMsg); + break; + // 错误的type + default: + // @ts-expect-error + throw new Error("Unsupported schema type: ".concat(schema.type)); + } + //vRes = ValidateResultUtil.succ; + // prune + if (options === null || options === void 0 ? void 0 : options.prune) { + // don't need prune, return original value + if (options.prune.output === undefined) { + options.prune.output = value; + } + // output to parent + if (options.prune.parent) { + options.prune.parent.value[options.prune.parent.key] = options.prune.output; + } + } + return vRes; + }; + /** + * 修剪 Object,移除 Schema 中未定义的 Key + * 需要确保 value 类型合法 + * @param value - value to be validated + * @param schemaOrId -Schema or schema ID. + * @returns Validate result and pruned value. if validate failed, `pruneOutput` would be undefined. + */ + TSBufferValidator.prototype.prune = function (value, schemaOrId, options) { + var _a; + var schema = typeof schemaOrId === 'string' ? this.proto[schemaOrId] : schemaOrId; + if (!schema) { + throw new Error('Cannot find schema: ' + schemaOrId); + } + var prune = {}; + var vRes = this._validate(value, schema, tslib.__assign(tslib.__assign({}, options), { prune: prune, excessPropertyChecks: false, strictNullChecks: (_a = options === null || options === void 0 ? void 0 : options.strictNullChecks) !== null && _a !== void 0 ? _a : this.options.strictNullChecks })); + if (vRes.isSucc) { + vRes.pruneOutput = prune.output; + } + return vRes; + }; + TSBufferValidator.prototype._validateBooleanType = function (value, schema) { + var type = this._getTypeof(value); + if (type === 'boolean') { + return ValidateResultUtil.succ; + } + else { + return ValidateResultUtil.error(ErrorType.TypeError, 'boolean', type); + } + }; + TSBufferValidator.prototype._validateNumberType = function (value, schema) { + // 默认为double + var scalarType = schema.scalarType || 'double'; + // Wrong Type + var type = this._getTypeof(value); + var rightType = scalarType.indexOf('big') > -1 ? 'bigint' : 'number'; + if (type !== rightType) { + return ValidateResultUtil.error(ErrorType.TypeError, rightType, type); + } + // scalarType类型检测 + // 整形却为小数 + if (scalarType !== 'double' && type === 'number' && !Number.isInteger(value)) { + return ValidateResultUtil.error(ErrorType.InvalidScalarType, value, scalarType); + } + // 无符号整形却为负数 + if (scalarType.indexOf('uint') > -1 && value < 0) { + return ValidateResultUtil.error(ErrorType.InvalidScalarType, value, scalarType); + } + return ValidateResultUtil.succ; + }; + TSBufferValidator.prototype._validateStringType = function (value, schema) { + var type = this._getTypeof(value); + return type === 'string' ? ValidateResultUtil.succ : ValidateResultUtil.error(ErrorType.TypeError, 'string', type); + }; + TSBufferValidator.prototype._validateArrayType = function (value, schema, options) { + // is Array type + var type = this._getTypeof(value); + if (type !== tsbufferSchema.SchemaType.Array) { + return ValidateResultUtil.error(ErrorType.TypeError, tsbufferSchema.SchemaType.Array, type); + } + // prune output + var prune = options.prune; + if (prune) { + prune.output = Array.from({ length: value.length }); + } + // validate elementType + for (var i = 0; i < value.length; ++i) { + var elemValidateResult = this._validate(value[i], schema.elementType, tslib.__assign(tslib.__assign({}, options), { prune: (prune === null || prune === void 0 ? void 0 : prune.output) ? { + parent: { + value: prune.output, + key: i + } + } : undefined })); + if (!elemValidateResult.isSucc) { + return ValidateResultUtil.innerError('' + i, value[i], schema.elementType, elemValidateResult); + } + } + return ValidateResultUtil.succ; + }; + TSBufferValidator.prototype._validateTupleType = function (value, schema, options) { + // is Array type + var type = this._getTypeof(value); + if (type !== tsbufferSchema.SchemaType.Array) { + return ValidateResultUtil.error(ErrorType.TypeError, tsbufferSchema.SchemaType.Array, type); + } + var prune = options.prune; + // validate length + // excessPropertyChecks 与 prune互斥 + if (!prune && options.excessPropertyChecks && value.length > schema.elementTypes.length) { + return ValidateResultUtil.error(ErrorType.TupleOverLength, value.length, schema.elementTypes.length); + } + // prune output + if (prune) { + prune.output = Array.from({ length: Math.min(value.length, schema.elementTypes.length) }); + } + // validate elementType + for (var i = 0; i < schema.elementTypes.length; ++i) { + // MissingRequiredProperty: NotOptional && is undefined + if (value[i] === undefined || value[i] === null && !options.strictNullChecks) { + var canBeNull = this._canBeNull(schema.elementTypes[i]); + var canBeUndefined = schema.optionalStartIndex !== undefined && i >= schema.optionalStartIndex || this._canBeUndefined(schema.elementTypes[i]); + var isOptional = canBeUndefined || !options.strictNullChecks && canBeNull; + // skip undefined property + if (isOptional) { + // Prune null & undefined->null + if (prune === null || prune === void 0 ? void 0 : prune.output) { + if (value[i] === null && canBeNull + || value[i] === undefined && !canBeUndefined && canBeNull) { + prune.output[i] = null; + } + } + continue; + } + else { + return ValidateResultUtil.error(ErrorType.MissingRequiredProperty, i); + } + } + // element type check + var elemValidateResult = this._validate(value[i], schema.elementTypes[i], { + prune: (prune === null || prune === void 0 ? void 0 : prune.output) ? { + parent: { + value: prune.output, + key: i + } + } : undefined, + strictNullChecks: options.strictNullChecks, + excessPropertyChecks: options.excessPropertyChecks + }); + if (!elemValidateResult.isSucc) { + return ValidateResultUtil.innerError('' + i, value[i], schema.elementTypes[i], elemValidateResult); + } + } + return ValidateResultUtil.succ; + }; + TSBufferValidator.prototype._canBeUndefined = function (schema) { + var _this = this; + if (schema.type === tsbufferSchema.SchemaType.Union) { + return schema.members.some(function (v) { return _this._canBeUndefined(v.type); }); + } + if (schema.type === tsbufferSchema.SchemaType.Literal && schema.literal === undefined) { + return true; + } + return false; + }; + TSBufferValidator.prototype._canBeNull = function (schema) { + var _this = this; + if (schema.type === tsbufferSchema.SchemaType.Union) { + return schema.members.some(function (v) { return _this._canBeNull(v.type); }); + } + if (schema.type === tsbufferSchema.SchemaType.Literal && schema.literal === null) { + return true; + } + return false; + }; + TSBufferValidator.prototype._validateEnumType = function (value, schema) { + // must be string or number + var type = this._getTypeof(value); + if (type !== 'string' && type !== 'number') { + return ValidateResultUtil.error(ErrorType.TypeError, 'string | number', type); + } + // 有值与预设相同 + if (schema.members.some(function (v) { return v.value === value; })) { + return ValidateResultUtil.succ; + } + else { + return ValidateResultUtil.error(ErrorType.InvalidEnumValue, value); + } + }; + TSBufferValidator.prototype._validateAnyType = function (value) { + return ValidateResultUtil.succ; + }; + TSBufferValidator.prototype._validateLiteralType = function (value, schema, strictNullChecks) { + // 非strictNullChecks严格模式,null undefined同等对待 + if (!strictNullChecks && (schema.literal === null || schema.literal === undefined)) { + return value === null || value === undefined ? + ValidateResultUtil.succ + : ValidateResultUtil.error(ErrorType.InvalidLiteralValue, schema.literal, value); + } + return value === schema.literal ? + ValidateResultUtil.succ + : ValidateResultUtil.error(ErrorType.InvalidLiteralValue, schema.literal, value); + }; + TSBufferValidator.prototype._validateObjectType = function (value, schema) { + var type = this._getTypeof(value); + return type === 'Object' || type === 'Array' ? ValidateResultUtil.succ : ValidateResultUtil.error(ErrorType.TypeError, 'Object', type); + }; + TSBufferValidator.prototype._validateInterfaceType = function (value, schema, options) { + var type = this._getTypeof(value); + if (type !== 'Object') { + return ValidateResultUtil.error(ErrorType.TypeError, 'Object', type); + } + // 先展平 + var flatSchema = this.protoHelper.getFlatInterfaceSchema(schema); + // From union or intersecton type + if (options.unionProperties) { + flatSchema = this.protoHelper.applyUnionProperties(flatSchema, options.unionProperties); + } + return this._validateFlatInterface(value, flatSchema, options); + }; + TSBufferValidator.prototype._validateMappedType = function (value, schema, options) { + var parsed = this.protoHelper.parseMappedType(schema); + if (parsed.type === tsbufferSchema.SchemaType.Interface) { + return this._validateInterfaceType(value, schema, options); + } + else if (parsed.type === tsbufferSchema.SchemaType.Union) { + return this._validateUnionType(value, parsed, options); + } + else if (parsed.type === tsbufferSchema.SchemaType.Intersection) { + return this._validateIntersectionType(value, parsed, options); + } + // @ts-expect-error + throw new Error("Invalid ".concat(schema.type, " target type: ").concat(parsed.type)); + }; + TSBufferValidator.prototype._validateFlatInterface = function (value, schema, options) { + // interfaceSignature强制了key必须是数字的情况 + if (schema.indexSignature && schema.indexSignature.keyType === tsbufferSchema.SchemaType.Number) { + for (var key in value) { + if (!this._isNumberKey(key)) { + return ValidateResultUtil.error(ErrorType.InvalidNumberKey, key); + } + } + } + var prune = options.prune; + if (prune) { + prune.output = {}; + } + // Excess property check (与prune互斥) + if (!prune && options.excessPropertyChecks && !schema.indexSignature) { + var validProperties_1 = schema.properties.map(function (v) { return v.name; }); + var firstExcessProperty = Object.keys(value).find(function (v) { return validProperties_1.indexOf(v) === -1; }); + if (firstExcessProperty) { + return ValidateResultUtil.error(ErrorType.ExcessProperty, firstExcessProperty); + } + } + // 校验properties + if (schema.properties) { + for (var _i = 0, _a = schema.properties; _i < _a.length; _i++) { + var property = _a[_i]; + // MissingRequiredProperty: is undefined && !isOptional + if (value[property.name] === undefined || value[property.name] === null && !options.strictNullChecks) { + var canBeNull = this._canBeNull(property.type); + var canBeUndefined = property.optional || this._canBeUndefined(property.type); + var isOptional = canBeUndefined || !options.strictNullChecks && canBeNull; + // skip undefined optional property + if (isOptional) { + // Prune null & undefined->null + if (prune === null || prune === void 0 ? void 0 : prune.output) { + if (value[property.name] === null && canBeNull + || value[property.name] === undefined && !canBeUndefined && canBeNull) { + prune.output[property.name] = null; + } + } + continue; + } + else { + return ValidateResultUtil.error(ErrorType.MissingRequiredProperty, property.name); + } + } + // property本身验证 + var vRes = this._validate(value[property.name], property.type, { + prune: (prune === null || prune === void 0 ? void 0 : prune.output) && property.id > -1 ? { + parent: { + value: prune.output, + key: property.name + } + } : undefined, + strictNullChecks: options.strictNullChecks, + excessPropertyChecks: options.excessPropertyChecks + }); + if (!vRes.isSucc) { + return ValidateResultUtil.innerError(property.name, value[property.name], property.type, vRes); + } + } + } + // 检测indexSignature + if (schema.indexSignature) { + for (var key in value) { + // only prune is (property is pruned already) + // let memberPrune: ValidatePruneOptions | undefined = schema.properties.some(v => v.name === key) ? undefined : {}; + // validate each field + var vRes = this._validate(value[key], schema.indexSignature.type, { + prune: (prune === null || prune === void 0 ? void 0 : prune.output) ? { + parent: { + value: prune.output, + key: key + } + } : undefined, + strictNullChecks: options.strictNullChecks, + excessPropertyChecks: options.excessPropertyChecks + }); + if (!vRes.isSucc) { + return ValidateResultUtil.innerError(key, value[key], schema.indexSignature.type, vRes); + } + } + } + return ValidateResultUtil.succ; + }; + TSBufferValidator.prototype._validateBufferType = function (value, schema) { + var _a, _b; + var type = this._getTypeof(value); + if (type !== 'Object') { + return ValidateResultUtil.error(ErrorType.TypeError, schema.arrayType || 'ArrayBuffer', type); + } + else if (schema.arrayType) { + var typeArrayClass = typedArrays[schema.arrayType]; + if (!typeArrayClass) { + throw new Error("Error TypedArray type: ".concat(schema.arrayType)); + } + return value instanceof typeArrayClass ? ValidateResultUtil.succ : ValidateResultUtil.error(ErrorType.TypeError, schema.arrayType, (_a = value === null || value === void 0 ? void 0 : value.constructor) === null || _a === void 0 ? void 0 : _a.name); + } + else { + return value instanceof ArrayBuffer ? ValidateResultUtil.succ : ValidateResultUtil.error(ErrorType.TypeError, 'ArrayBuffer', (_b = value === null || value === void 0 ? void 0 : value.constructor) === null || _b === void 0 ? void 0 : _b.name); + } + }; + TSBufferValidator.prototype._validateReferenceType = function (value, schema, options) { + return this._validate(value, this.protoHelper.parseReference(schema), options); + }; + TSBufferValidator.prototype._validateUnionType = function (value, schema, options) { + var _this = this; + options.unionProperties = options.unionProperties || this.protoHelper.getUnionProperties(schema); + var isObjectPrune = false; + var prune = options.prune; + if (prune && value && Object.getPrototypeOf(value) === Object.prototype) { + isObjectPrune = true; + prune.output = {}; + } + // 有一成功则成功 + var isSomeSucc = false; + var memberErrors = []; + for (var i = 0; i < schema.members.length; ++i) { + var member = schema.members[i]; + var memberType = this.protoHelper.isTypeReference(member.type) ? this.protoHelper.parseReference(member.type) : member.type; + var memberPrune = prune ? {} : undefined; + var vRes = this._validate(value, memberType, tslib.__assign(tslib.__assign({}, options), { prune: memberPrune })); + if (vRes.isSucc) { + isSomeSucc = true; + // if prune object: must prune all members + if (isObjectPrune) { + prune.output = tslib.__assign(tslib.__assign({}, prune.output), memberPrune.output); + } + // not prune object: stop checking after 1st member matched + else { + break; + } + } + else { + memberErrors.push(vRes); + } + } + // 有一成功则成功; + if (isSomeSucc) { + return ValidateResultUtil.succ; + } + // 全部失败,则失败 + else { + // All member error is the same, return the first + var msg0_1 = memberErrors[0].errMsg; + if (memberErrors.every(function (v) { return v.errMsg === msg0_1; })) { + return memberErrors[0]; + } + // mutual exclusion: return the only one + var nonLiteralErrors = memberErrors.filter(function (v) { return v.error.type !== ErrorType.InvalidLiteralValue; }); + if (nonLiteralErrors.length === 1) { + return nonLiteralErrors[0]; + } + // All member error without inner: show simple msg + if (memberErrors.every(function (v) { return !v.error.inner && (v.error.type === ErrorType.TypeError || v.error.type === ErrorType.InvalidLiteralValue); })) { + var valueType = this._getTypeof(value); + var expectedTypes = memberErrors.map(function (v) { return v.error.type === ErrorType.TypeError ? v.error.params[0] : _this._getTypeof(v.error.params[0]); }).distinct(); + // Expected type A|B|C, actually type D + if (expectedTypes.indexOf(valueType) === -1) { + return ValidateResultUtil.error(ErrorType.TypeError, expectedTypes.join(' | '), this._getTypeof(value)); + } + // `'D'` is not matched to `'A'|'B'|'C'` + if (valueType !== 'Object' && valueType !== tsbufferSchema.SchemaType.Array) { + var types = memberErrors.map(function (v) { return v.error.type === ErrorType.TypeError ? v.error.params[0] : stringify(v.error.params[0]); }).distinct(); + return ValidateResultUtil.error(ErrorType.UnionTypesNotMatch, value, types); + } + } + // other errors + return ValidateResultUtil.error(ErrorType.UnionMembersNotMatch, memberErrors); + } + }; + TSBufferValidator.prototype._validateIntersectionType = function (value, schema, options) { + options.unionProperties = options.unionProperties || this.protoHelper.getUnionProperties(schema); + var isObjectPrune = false; + var prune = options.prune; + if (prune && value && Object.getPrototypeOf(value) === Object.prototype) { + prune.output = {}; + isObjectPrune = true; + } + // 有一失败则失败 + for (var i = 0, len = schema.members.length; i < len; ++i) { + // 验证member + var memberType = schema.members[i].type; + memberType = this.protoHelper.isTypeReference(memberType) ? this.protoHelper.parseReference(memberType) : memberType; + var memberPrune = prune ? {} : undefined; + var vRes = this._validate(value, memberType, tslib.__assign(tslib.__assign({}, options), { prune: memberPrune })); + // 有一失败则失败 + if (!vRes.isSucc) { + return vRes; + } + if (isObjectPrune) { + prune.output = tslib.__assign(tslib.__assign({}, prune.output), memberPrune.output); + } + } + // 全成功则成功 + return ValidateResultUtil.succ; + }; + TSBufferValidator.prototype._validateDateType = function (value) { + if (value instanceof Date) { + return ValidateResultUtil.succ; + } + else { + return ValidateResultUtil.error(ErrorType.TypeError, 'Date', this._getTypeof(value)); + } + }; + TSBufferValidator.prototype._validateNonNullableType = function (value, schema, options) { + var type = this._getTypeof(value); + if ((type === 'null' || type === 'undefined') && schema.target.type !== 'Any') { + return ValidateResultUtil.error(ErrorType.TypeError, 'NonNullable', type); + } + return this._validate(value, schema.target, options); + }; + TSBufferValidator.prototype._isNumberKey = function (key) { + var int = parseInt(key); + return !(isNaN(int) || ('' + int) !== key); + }; + TSBufferValidator.prototype._getTypeof = function (value) { + var type = typeof value; + if (type === 'object') { + if (value === null) { + return 'null'; + } + else if (Array.isArray(value)) { + return tsbufferSchema.SchemaType.Array; + } + else { + return 'Object'; + } + } + return type; + }; + return TSBufferValidator; +}()); + +exports.ProtoHelper = ProtoHelper; +exports.TSBufferValidator = TSBufferValidator; From 59720a4a2b01853b3798f038b1a00d923e98c471 Mon Sep 17 00:00:00 2001 From: dy Date: Thu, 21 Dec 2023 12:01:00 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E5=86=85=E5=AD=98=E6=B3=84=E9=9C=B2?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 +++--- src/tsbufferIndex.js => tsbufferIndex.js | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename src/tsbufferIndex.js => tsbufferIndex.js (100%) diff --git a/package.json b/package.json index fb00982..d55ec03 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,9 @@ "private": true, "scripts": { "dev": "tsrpc-cli dev", - "build": "tsrpc-cli build && copy js_pm2.config.js dist && copy zoeninfo.sh dist && mkdir dist\\json && xcopy src\\json dist\\json /e ", - "build_win": "tsrpc-cli build && copy js_pm2.config.js dist && copy zoeninfo.sh dist && mkdir dist\\json && xcopy src\\json dist\\json /e ", - "build_linux": "tsrpc-cli build && cp js_pm2.config.js dist && cp zoeninfo.sh dist && cp src/json/ -a dist ", + "build": "tsrpc-cli build && copy js_pm2.config.js dist && copy zoeninfo.sh dist && copy tsbufferIndex.js dist && mkdir dist\\json && xcopy src\\json dist\\json /e ", + "build_win": "tsrpc-cli build && copy js_pm2.config.js dist && copy zoeninfo.sh dist && copy tsbufferIndex.js dist && mkdir dist\\json && xcopy src\\json dist\\json /e ", + "build_linux": "tsrpc-cli build && cp js_pm2.config.js dist && cp zoeninfo.sh dist && cp tsbufferIndex.js dist && cp src/json/ -a dist ", "build_docker_win": "npm run build_win && cd dist && npm i --omit=dev", "build_docker_linux": "npm run build_linux && cd dist && npm i --omit=dev", "doc": "tsrpc-cli doc && node js_uploadDoc.js", diff --git a/src/tsbufferIndex.js b/tsbufferIndex.js similarity index 100% rename from src/tsbufferIndex.js rename to tsbufferIndex.js From 3194dc6449c2df11547be198f61ab67f2c64d46f Mon Sep 17 00:00:00 2001 From: dy Date: Thu, 21 Dec 2023 12:37:39 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E9=80=A0=E5=9E=8B=E6=9B=B4=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api_s2c/user/ApiChangeInfo.ts | 6 +- src/cross/protocols/serviceProto.ts | 85 ++++++--- src/monopoly/protocols/serviceProto.ts | 85 ++++++--- src/shared/protocols/serviceProto.ts | 255 ++++++++++++++++--------- src/shared/protocols/user/PtlLogin.ts | 9 +- 5 files changed, 282 insertions(+), 158 deletions(-) diff --git a/src/api_s2c/user/ApiChangeInfo.ts b/src/api_s2c/user/ApiChangeInfo.ts index cc04798..5bfac14 100644 --- a/src/api_s2c/user/ApiChangeInfo.ts +++ b/src/api_s2c/user/ApiChangeInfo.ts @@ -29,10 +29,12 @@ export default async function (call: ApiCall) { if (call.req.type == 'model') { let d = JSON.parse(JSON.stringify(call.conn.gud.model)); - d[call.req.id] = { + let changeItem = { id: call.req.id, time: active[fmtId] || -1 - }; + } + d[call.req.id] = changeItem + change.upModel = changeItem change.model = d; } else { change[call.req.type] = { diff --git a/src/cross/protocols/serviceProto.ts b/src/cross/protocols/serviceProto.ts index 8dcedb7..e99cd52 100644 --- a/src/cross/protocols/serviceProto.ts +++ b/src/cross/protocols/serviceProto.ts @@ -875,6 +875,29 @@ export const serviceProto: ServiceProto = { }, { "id": 5, + "name": "upModel", + "type": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "id", + "type": { + "type": "String" + } + }, + { + "id": 1, + "name": "time", + "type": { + "type": "Number" + } + } + ] + } + }, + { + "id": 6, "name": "model", "type": { "type": "Interface", @@ -903,14 +926,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 6, + "id": 7, "name": "renown", "type": { "type": "Number" } }, { - "id": 7, + "id": 8, "name": "wxcLv", "type": { "type": "Interface", @@ -936,14 +959,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 8, + "id": 9, "name": "mapId", "type": { "type": "Number" } }, { - "id": 9, + "id": 10, "name": "shoucangping", "type": { "type": "Interface", @@ -956,14 +979,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 10, + "id": 11, "name": "useTujianLvPoint", "type": { "type": "Number" } }, { - "id": 11, + "id": 12, "name": "skills", "type": { "type": "Interface", @@ -976,7 +999,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 12, + "id": 13, "name": "fightSkills", "type": { "type": "Interface", @@ -989,7 +1012,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 13, + "id": 14, "name": "heroPos", "type": { "type": "Interface", @@ -1002,21 +1025,21 @@ export const serviceProto: ServiceProto = { } }, { - "id": 14, + "id": 15, "name": "ghId", "type": { "type": "String" } }, { - "id": 15, + "id": 16, "name": "ghName", "type": { "type": "String" } }, { - "id": 16, + "id": 17, "name": "ghLevel", "type": { "type": "Reference", @@ -1024,7 +1047,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 17, + "id": 18, "name": "ghwz", "type": { "type": "Interface", @@ -1038,7 +1061,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 18, + "id": 19, "name": "ghExitTime", "type": { "type": "Number" @@ -1046,7 +1069,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 19, + "id": 20, "name": "loginTime", "type": { "type": "Number" @@ -1054,7 +1077,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 20, + "id": 21, "name": "logoutTime", "type": { "type": "Number" @@ -1062,7 +1085,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 21, + "id": 22, "name": "cTime", "type": { "type": "Number" @@ -1070,7 +1093,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 22, + "id": 23, "name": "loginDays", "type": { "type": "Number" @@ -1078,7 +1101,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 23, + "id": 24, "name": "serverName", "type": { "type": "String" @@ -1086,7 +1109,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 24, + "id": 25, "name": "sid", "type": { "type": "Number" @@ -1094,7 +1117,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 25, + "id": 26, "name": "onlineTime", "type": { "type": "Number" @@ -1102,7 +1125,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 26, + "id": 27, "name": "newonlinetime", "type": { "type": "Number" @@ -1110,7 +1133,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 27, + "id": 28, "name": "isNpc", "type": { "type": "Boolean" @@ -1118,7 +1141,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 28, + "id": 29, "name": "matrix", "type": { "type": "Interface", @@ -1132,7 +1155,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 29, + "id": 30, "name": "matrixPos", "type": { "type": "Interface", @@ -1152,7 +1175,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 30, + "id": 31, "name": "selectMatrix", "type": { "type": "String" @@ -1160,7 +1183,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 31, + "id": 32, "name": "fightHeros", "type": { "type": "Array", @@ -1171,7 +1194,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 32, + "id": 33, "name": "helpHeros", "type": { "type": "Array", @@ -1248,7 +1271,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 33, + "id": 34, "name": "changeNameNum", "type": { "type": "Number" @@ -1256,7 +1279,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 34, + "id": 35, "name": "peijianUnlock", "type": { "type": "Interface", @@ -1270,7 +1293,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 35, + "id": 36, "name": "headFrames", "type": { "type": "Interface", @@ -1284,7 +1307,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 36, + "id": 37, "name": "chatFrames", "type": { "type": "Interface", diff --git a/src/monopoly/protocols/serviceProto.ts b/src/monopoly/protocols/serviceProto.ts index 782cc14..9eea14e 100644 --- a/src/monopoly/protocols/serviceProto.ts +++ b/src/monopoly/protocols/serviceProto.ts @@ -2145,6 +2145,29 @@ export const serviceProto: ServiceProto = { }, { "id": 5, + "name": "upModel", + "type": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "id", + "type": { + "type": "String" + } + }, + { + "id": 1, + "name": "time", + "type": { + "type": "Number" + } + } + ] + } + }, + { + "id": 6, "name": "model", "type": { "type": "Interface", @@ -2173,14 +2196,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 6, + "id": 7, "name": "renown", "type": { "type": "Number" } }, { - "id": 7, + "id": 8, "name": "wxcLv", "type": { "type": "Interface", @@ -2206,14 +2229,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 8, + "id": 9, "name": "mapId", "type": { "type": "Number" } }, { - "id": 9, + "id": 10, "name": "shoucangping", "type": { "type": "Interface", @@ -2226,14 +2249,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 10, + "id": 11, "name": "useTujianLvPoint", "type": { "type": "Number" } }, { - "id": 11, + "id": 12, "name": "skills", "type": { "type": "Interface", @@ -2246,7 +2269,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 12, + "id": 13, "name": "fightSkills", "type": { "type": "Interface", @@ -2259,7 +2282,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 13, + "id": 14, "name": "heroPos", "type": { "type": "Interface", @@ -2272,21 +2295,21 @@ export const serviceProto: ServiceProto = { } }, { - "id": 14, + "id": 15, "name": "ghId", "type": { "type": "String" } }, { - "id": 15, + "id": 16, "name": "ghName", "type": { "type": "String" } }, { - "id": 16, + "id": 17, "name": "ghLevel", "type": { "type": "Reference", @@ -2294,7 +2317,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 17, + "id": 18, "name": "ghwz", "type": { "type": "Interface", @@ -2308,7 +2331,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 18, + "id": 19, "name": "ghExitTime", "type": { "type": "Number" @@ -2316,7 +2339,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 19, + "id": 20, "name": "loginTime", "type": { "type": "Number" @@ -2324,7 +2347,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 20, + "id": 21, "name": "logoutTime", "type": { "type": "Number" @@ -2332,7 +2355,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 21, + "id": 22, "name": "cTime", "type": { "type": "Number" @@ -2340,7 +2363,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 22, + "id": 23, "name": "loginDays", "type": { "type": "Number" @@ -2348,7 +2371,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 23, + "id": 24, "name": "serverName", "type": { "type": "String" @@ -2356,7 +2379,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 24, + "id": 25, "name": "sid", "type": { "type": "Number" @@ -2364,7 +2387,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 25, + "id": 26, "name": "onlineTime", "type": { "type": "Number" @@ -2372,7 +2395,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 26, + "id": 27, "name": "newonlinetime", "type": { "type": "Number" @@ -2380,7 +2403,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 27, + "id": 28, "name": "isNpc", "type": { "type": "Boolean" @@ -2388,7 +2411,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 28, + "id": 29, "name": "matrix", "type": { "type": "Interface", @@ -2402,7 +2425,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 29, + "id": 30, "name": "matrixPos", "type": { "type": "Interface", @@ -2422,7 +2445,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 30, + "id": 31, "name": "selectMatrix", "type": { "type": "String" @@ -2430,7 +2453,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 31, + "id": 32, "name": "fightHeros", "type": { "type": "Array", @@ -2441,7 +2464,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 32, + "id": 33, "name": "helpHeros", "type": { "type": "Array", @@ -2518,7 +2541,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 33, + "id": 34, "name": "changeNameNum", "type": { "type": "Number" @@ -2526,7 +2549,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 34, + "id": 35, "name": "peijianUnlock", "type": { "type": "Interface", @@ -2540,7 +2563,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 35, + "id": 36, "name": "headFrames", "type": { "type": "Interface", @@ -2554,7 +2577,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 36, + "id": 37, "name": "chatFrames", "type": { "type": "Interface", diff --git a/src/shared/protocols/serviceProto.ts b/src/shared/protocols/serviceProto.ts index c60ab37..62ac7ca 100644 --- a/src/shared/protocols/serviceProto.ts +++ b/src/shared/protocols/serviceProto.ts @@ -3954,6 +3954,29 @@ export const serviceProto: ServiceProto = { }, { "id": 5, + "name": "upModel", + "type": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "id", + "type": { + "type": "String" + } + }, + { + "id": 1, + "name": "time", + "type": { + "type": "Number" + } + } + ] + } + }, + { + "id": 6, "name": "model", "type": { "type": "Interface", @@ -3982,14 +4005,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 6, + "id": 7, "name": "renown", "type": { "type": "Number" } }, { - "id": 7, + "id": 8, "name": "wxcLv", "type": { "type": "Interface", @@ -4015,14 +4038,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 8, + "id": 9, "name": "mapId", "type": { "type": "Number" } }, { - "id": 9, + "id": 10, "name": "shoucangping", "type": { "type": "Interface", @@ -4035,14 +4058,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 10, + "id": 11, "name": "useTujianLvPoint", "type": { "type": "Number" } }, { - "id": 11, + "id": 12, "name": "skills", "type": { "type": "Interface", @@ -4055,7 +4078,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 12, + "id": 13, "name": "fightSkills", "type": { "type": "Interface", @@ -4068,7 +4091,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 13, + "id": 14, "name": "heroPos", "type": { "type": "Interface", @@ -4081,21 +4104,21 @@ export const serviceProto: ServiceProto = { } }, { - "id": 14, + "id": 15, "name": "ghId", "type": { "type": "String" } }, { - "id": 15, + "id": 16, "name": "ghName", "type": { "type": "String" } }, { - "id": 16, + "id": 17, "name": "ghLevel", "type": { "type": "Reference", @@ -4103,7 +4126,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 17, + "id": 18, "name": "ghwz", "type": { "type": "Interface", @@ -4117,7 +4140,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 18, + "id": 19, "name": "ghExitTime", "type": { "type": "Number" @@ -4125,7 +4148,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 19, + "id": 20, "name": "loginTime", "type": { "type": "Number" @@ -4133,7 +4156,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 20, + "id": 21, "name": "logoutTime", "type": { "type": "Number" @@ -4141,7 +4164,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 21, + "id": 22, "name": "cTime", "type": { "type": "Number" @@ -4149,7 +4172,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 22, + "id": 23, "name": "loginDays", "type": { "type": "Number" @@ -4157,7 +4180,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 23, + "id": 24, "name": "serverName", "type": { "type": "String" @@ -4165,7 +4188,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 24, + "id": 25, "name": "sid", "type": { "type": "Number" @@ -4173,7 +4196,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 25, + "id": 26, "name": "onlineTime", "type": { "type": "Number" @@ -4181,7 +4204,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 26, + "id": 27, "name": "newonlinetime", "type": { "type": "Number" @@ -4189,7 +4212,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 27, + "id": 28, "name": "isNpc", "type": { "type": "Boolean" @@ -4197,7 +4220,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 28, + "id": 29, "name": "matrix", "type": { "type": "Interface", @@ -4211,7 +4234,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 29, + "id": 30, "name": "matrixPos", "type": { "type": "Interface", @@ -4231,7 +4254,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 30, + "id": 31, "name": "selectMatrix", "type": { "type": "String" @@ -4239,7 +4262,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 31, + "id": 32, "name": "fightHeros", "type": { "type": "Array", @@ -4250,7 +4273,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 32, + "id": 33, "name": "helpHeros", "type": { "type": "Array", @@ -4327,7 +4350,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 33, + "id": 34, "name": "changeNameNum", "type": { "type": "Number" @@ -4335,7 +4358,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 34, + "id": 35, "name": "peijianUnlock", "type": { "type": "Interface", @@ -4349,7 +4372,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 35, + "id": 36, "name": "headFrames", "type": { "type": "Interface", @@ -4363,7 +4386,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 36, + "id": 37, "name": "chatFrames", "type": { "type": "Interface", @@ -5175,6 +5198,29 @@ export const serviceProto: ServiceProto = { }, { "id": 5, + "name": "upModel", + "type": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "id", + "type": { + "type": "String" + } + }, + { + "id": 1, + "name": "time", + "type": { + "type": "Number" + } + } + ] + } + }, + { + "id": 6, "name": "model", "type": { "type": "Interface", @@ -5203,14 +5249,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 6, + "id": 7, "name": "renown", "type": { "type": "Number" } }, { - "id": 7, + "id": 8, "name": "wxcLv", "type": { "type": "Interface", @@ -5236,14 +5282,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 8, + "id": 9, "name": "mapId", "type": { "type": "Number" } }, { - "id": 9, + "id": 10, "name": "shoucangping", "type": { "type": "Interface", @@ -5256,14 +5302,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 10, + "id": 11, "name": "useTujianLvPoint", "type": { "type": "Number" } }, { - "id": 11, + "id": 12, "name": "skills", "type": { "type": "Interface", @@ -5276,7 +5322,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 12, + "id": 13, "name": "fightSkills", "type": { "type": "Interface", @@ -5289,7 +5335,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 13, + "id": 14, "name": "heroPos", "type": { "type": "Interface", @@ -5302,21 +5348,21 @@ export const serviceProto: ServiceProto = { } }, { - "id": 14, + "id": 15, "name": "ghId", "type": { "type": "String" } }, { - "id": 15, + "id": 16, "name": "ghName", "type": { "type": "String" } }, { - "id": 16, + "id": 17, "name": "ghLevel", "type": { "type": "Reference", @@ -5324,7 +5370,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 17, + "id": 18, "name": "ghwz", "type": { "type": "Interface", @@ -5338,7 +5384,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 18, + "id": 19, "name": "ghExitTime", "type": { "type": "Number" @@ -5346,7 +5392,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 19, + "id": 20, "name": "loginTime", "type": { "type": "Number" @@ -5354,7 +5400,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 20, + "id": 21, "name": "logoutTime", "type": { "type": "Number" @@ -5362,7 +5408,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 21, + "id": 22, "name": "cTime", "type": { "type": "Number" @@ -5370,7 +5416,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 22, + "id": 23, "name": "loginDays", "type": { "type": "Number" @@ -5378,7 +5424,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 23, + "id": 24, "name": "serverName", "type": { "type": "String" @@ -5386,7 +5432,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 24, + "id": 25, "name": "sid", "type": { "type": "Number" @@ -5394,7 +5440,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 25, + "id": 26, "name": "onlineTime", "type": { "type": "Number" @@ -5402,7 +5448,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 26, + "id": 27, "name": "newonlinetime", "type": { "type": "Number" @@ -5410,7 +5456,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 27, + "id": 28, "name": "isNpc", "type": { "type": "Boolean" @@ -5418,7 +5464,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 28, + "id": 29, "name": "matrix", "type": { "type": "Interface", @@ -5432,7 +5478,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 29, + "id": 30, "name": "matrixPos", "type": { "type": "Interface", @@ -5452,7 +5498,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 30, + "id": 31, "name": "selectMatrix", "type": { "type": "String" @@ -5460,7 +5506,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 31, + "id": 32, "name": "fightHeros", "type": { "type": "Array", @@ -5471,7 +5517,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 32, + "id": 33, "name": "helpHeros", "type": { "type": "Array", @@ -5548,7 +5594,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 33, + "id": 34, "name": "changeNameNum", "type": { "type": "Number" @@ -5556,7 +5602,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 34, + "id": 35, "name": "peijianUnlock", "type": { "type": "Interface", @@ -5570,7 +5616,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 35, + "id": 36, "name": "headFrames", "type": { "type": "Interface", @@ -5584,7 +5630,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 36, + "id": 37, "name": "chatFrames", "type": { "type": "Interface", @@ -22862,6 +22908,29 @@ export const serviceProto: ServiceProto = { }, { "id": 5, + "name": "upModel", + "type": { + "type": "Interface", + "properties": [ + { + "id": 0, + "name": "id", + "type": { + "type": "String" + } + }, + { + "id": 1, + "name": "time", + "type": { + "type": "Number" + } + } + ] + } + }, + { + "id": 6, "name": "model", "type": { "type": "Interface", @@ -22890,14 +22959,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 6, + "id": 7, "name": "renown", "type": { "type": "Number" } }, { - "id": 7, + "id": 8, "name": "wxcLv", "type": { "type": "Interface", @@ -22923,14 +22992,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 8, + "id": 9, "name": "mapId", "type": { "type": "Number" } }, { - "id": 9, + "id": 10, "name": "shoucangping", "type": { "type": "Interface", @@ -22943,14 +23012,14 @@ export const serviceProto: ServiceProto = { } }, { - "id": 10, + "id": 11, "name": "useTujianLvPoint", "type": { "type": "Number" } }, { - "id": 11, + "id": 12, "name": "skills", "type": { "type": "Interface", @@ -22963,7 +23032,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 12, + "id": 13, "name": "fightSkills", "type": { "type": "Interface", @@ -22976,7 +23045,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 13, + "id": 14, "name": "heroPos", "type": { "type": "Interface", @@ -22989,21 +23058,21 @@ export const serviceProto: ServiceProto = { } }, { - "id": 14, + "id": 15, "name": "ghId", "type": { "type": "String" } }, { - "id": 15, + "id": 16, "name": "ghName", "type": { "type": "String" } }, { - "id": 16, + "id": 17, "name": "ghLevel", "type": { "type": "Reference", @@ -23011,7 +23080,7 @@ export const serviceProto: ServiceProto = { } }, { - "id": 17, + "id": 18, "name": "ghwz", "type": { "type": "Interface", @@ -23025,7 +23094,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 18, + "id": 19, "name": "ghExitTime", "type": { "type": "Number" @@ -23033,7 +23102,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 19, + "id": 20, "name": "loginTime", "type": { "type": "Number" @@ -23041,7 +23110,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 20, + "id": 21, "name": "logoutTime", "type": { "type": "Number" @@ -23049,7 +23118,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 21, + "id": 22, "name": "cTime", "type": { "type": "Number" @@ -23057,7 +23126,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 22, + "id": 23, "name": "loginDays", "type": { "type": "Number" @@ -23065,7 +23134,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 23, + "id": 24, "name": "serverName", "type": { "type": "String" @@ -23073,7 +23142,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 24, + "id": 25, "name": "sid", "type": { "type": "Number" @@ -23081,7 +23150,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 25, + "id": 26, "name": "onlineTime", "type": { "type": "Number" @@ -23089,7 +23158,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 26, + "id": 27, "name": "newonlinetime", "type": { "type": "Number" @@ -23097,7 +23166,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 27, + "id": 28, "name": "isNpc", "type": { "type": "Boolean" @@ -23105,7 +23174,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 28, + "id": 29, "name": "matrix", "type": { "type": "Interface", @@ -23119,7 +23188,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 29, + "id": 30, "name": "matrixPos", "type": { "type": "Interface", @@ -23139,7 +23208,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 30, + "id": 31, "name": "selectMatrix", "type": { "type": "String" @@ -23147,7 +23216,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 31, + "id": 32, "name": "fightHeros", "type": { "type": "Array", @@ -23158,7 +23227,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 32, + "id": 33, "name": "helpHeros", "type": { "type": "Array", @@ -23235,7 +23304,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 33, + "id": 34, "name": "changeNameNum", "type": { "type": "Number" @@ -23243,7 +23312,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 34, + "id": 35, "name": "peijianUnlock", "type": { "type": "Interface", @@ -23257,7 +23326,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 35, + "id": 36, "name": "headFrames", "type": { "type": "Interface", @@ -23271,7 +23340,7 @@ export const serviceProto: ServiceProto = { "optional": true }, { - "id": 36, + "id": 37, "name": "chatFrames", "type": { "type": "Interface", diff --git a/src/shared/protocols/user/PtlLogin.ts b/src/shared/protocols/user/PtlLogin.ts index 3ac09f0..49f56e3 100644 --- a/src/shared/protocols/user/PtlLogin.ts +++ b/src/shared/protocols/user/PtlLogin.ts @@ -19,7 +19,7 @@ export type ResLogin = { /** * 开服天数 */ - openDay:number; + openDay: number; /**当前时间 */ curTime: number; /**是否第一次登录 */ @@ -94,6 +94,13 @@ export type playerAppend = { }; /**名字 */ name: string; + /**正在使用的造型 */ + upModel: { + /**id */ + id: string, + /**到期时间戳 -1:永久 */ + time: number; + }; /**造型 */ model: { [k: string]: { From 54c483bed09c3281444c6c243161c63dd1a8804e Mon Sep 17 00:00:00 2001 From: dy Date: Thu, 21 Dec 2023 12:43:25 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E9=80=A0=E5=9E=8B=E6=9B=B4=E6=8D=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/public/user.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/public/user.ts b/src/public/user.ts index ff9dcc1..a5cb191 100644 --- a/src/public/user.ts +++ b/src/public/user.ts @@ -33,6 +33,7 @@ export const defaultUserAppend: playerAppend = { head: {id: "1", time: -1}, headFrame: {id: "1", time: -1}, chatFrame: {id: "1", time: -1}, + upModel: {id: "1", time: -1}, model: { 1: {id: "1", time: -1}, 2: {id: "2", time: -1}