From 60724a923e489be513c141bf81e79619c277b596 Mon Sep 17 00:00:00 2001 From: funjia <13429193897@163.com> Date: Mon, 20 Jan 2025 16:05:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CURDHelper.mjs => CURDHelper.mts | 32 +- ConfigHelper.mjs => ConfigHelper.mts | 2 +- DBHelper.mjs => DBHelper.mts | 8 +- LogHelper.mjs => LogHelper.mts | 4 +- RouterFactory.mjs => RouterFactory.mts | 18 +- Server.mts | 140 +++++ config.example.yml | 22 + dbServer.mjs => dbServer.mts | 2 +- index.mjs | 27 - index.mts | 30 + lib/CURDHelper.d.mts | 43 ++ lib/ConfigHelper.d.mts | 7 + lib/DBHelper.d.mts | 9 + lib/LogHelper.d.mts | 7 + lib/RouterFactory.d.mts | 27 + lib/Server.d.mts | 6 + lib/dbServer.d.mts | 22 + lib/funjia-server.mjs | 389 +++++++------ lib/index.d.mts | 13 + lib/sleep.d.mts | 1 + package.json | 11 +- sleep.mjs => sleep.mts | 2 +- test.mjs | 5 +- tsconfig.json | 21 + types/Server.d.ts | 7 + vite.config.js | 16 +- yarn.lock | 742 ++++++++++++++++++++++++- 27 files changed, 1364 insertions(+), 249 deletions(-) rename CURDHelper.mjs => CURDHelper.mts (91%) rename ConfigHelper.mjs => ConfigHelper.mts (87%) rename DBHelper.mjs => DBHelper.mts (80%) rename LogHelper.mjs => LogHelper.mts (97%) rename RouterFactory.mjs => RouterFactory.mts (88%) create mode 100644 Server.mts create mode 100644 config.example.yml rename dbServer.mjs => dbServer.mts (96%) delete mode 100644 index.mjs create mode 100644 index.mts create mode 100644 lib/CURDHelper.d.mts create mode 100644 lib/ConfigHelper.d.mts create mode 100644 lib/DBHelper.d.mts create mode 100644 lib/LogHelper.d.mts create mode 100644 lib/RouterFactory.d.mts create mode 100644 lib/Server.d.mts create mode 100644 lib/dbServer.d.mts create mode 100644 lib/index.d.mts create mode 100644 lib/sleep.d.mts rename sleep.mjs => sleep.mts (69%) create mode 100644 tsconfig.json create mode 100644 types/Server.d.ts diff --git a/CURDHelper.mjs b/CURDHelper.mts similarity index 91% rename from CURDHelper.mjs rename to CURDHelper.mts index 647d9d1..4235d01 100644 --- a/CURDHelper.mjs +++ b/CURDHelper.mts @@ -3,21 +3,21 @@ import _ from "lodash"; import LogHelper from "./LogHelper.mjs"; class DataLogHelper { - name = ""; - type = ""; - id = null; + name: string = ""; + type: string = ""; + id: any = null; constructor({ name, type - }) { + }: any) { this.name = name; this.type = type; } async addDataLog({ data - }) { + }: any) { const { name, type @@ -61,10 +61,10 @@ export default class CURDHelper { db, name, params - }) { + }: any) { await db.read(); /******************************参数过滤**********************************/ - const data = db.data[name].filter((item) => { + const data = db.data[name].filter((item: any) => { let isMatch = true; for (let field in params) { if (["page", "pageSize"].includes(field)) { @@ -101,7 +101,7 @@ export default class CURDHelper { return { code: 0, - data: batchData.sort((a, b) => { + data: batchData.sort((a:any, b:any) => { return a.sort - b.sort; }) || [], total: data.length @@ -116,14 +116,14 @@ export default class CURDHelper { db, name, params - }) { + }:any) { await db.read(); const data = db.data[name]; const query = params; let detail = {}; if (query.id && data) { - detail = data.find((item) => { + detail = data.find((item:any) => { return item.id == query.id; }); } @@ -142,7 +142,7 @@ export default class CURDHelper { db, name, data - }) { + }:any) { await db.read(); // You can also use this syntax if you prefer @@ -154,7 +154,7 @@ export default class CURDHelper { const id = data.id; if (id && dataList) { - const currentDetail = dataList.find(item => item.id == id); + const currentDetail = dataList.find((item:any) => item.id == id); if (currentDetail) { _.merge(currentDetail, data); } @@ -187,7 +187,7 @@ export default class CURDHelper { db, name, data - }) { + }:any) { await db.read(); if (!db.data[name]) @@ -228,7 +228,7 @@ export default class CURDHelper { db, name, data - }) { + }: any) { await db.read(); // You can also use this syntax if you prefer @@ -239,12 +239,12 @@ export default class CURDHelper { const ids = data.ids; if (ids.length > 0 && dataList) { - let id = null; + let id: any = null; const delDataList = []; for (let i = 0; i < ids.length; i++) { id = ids[i]; - const idx = dataList.findIndex(item => item.id == id); + const idx = dataList.findIndex((item: any) => item.id == id); if (idx != -1) { delDataList.push(dataList[idx]); dataList.splice(idx, 1); diff --git a/ConfigHelper.mjs b/ConfigHelper.mts similarity index 87% rename from ConfigHelper.mjs rename to ConfigHelper.mts index 5f06a99..52277fc 100644 --- a/ConfigHelper.mjs +++ b/ConfigHelper.mts @@ -5,7 +5,7 @@ import fs from "fs"; * 配置信息帮助类 */ export default class ConfigHelper { - static config = null; + static config: any = null; static initConfig() { this.config = yaml.parse(fs.readFileSync("./config.yml").toString()); } diff --git a/DBHelper.mjs b/DBHelper.mts similarity index 80% rename from DBHelper.mjs rename to DBHelper.mts index 1b67218..24ac241 100644 --- a/DBHelper.mjs +++ b/DBHelper.mts @@ -6,10 +6,10 @@ import { } from "./dbServer.mjs"; export default class DBHelper { - static baseDB = null; - static resourceDB = null; - static backupDB = null; - static logDB = null; + static baseDB: any = null; + static resourceDB: any = null; + static backupDB: any = null; + static logDB: any = null; static async init() { this.baseDB = await getDb(); diff --git a/LogHelper.mjs b/LogHelper.mts similarity index 97% rename from LogHelper.mjs rename to LogHelper.mts index 9400ad4..d1482a4 100644 --- a/LogHelper.mjs +++ b/LogHelper.mts @@ -6,7 +6,7 @@ export default class LogHelper { tableName, type, data - }) { + }:any) { const db = await DBHelper.getLogDb(); return CURDHelper.create({ db, @@ -25,7 +25,7 @@ export default class LogHelper { static async modifyDataLogStatus({ id - }) { + }:any) { const db = await DBHelper.getLogDb(); const { data, diff --git a/RouterFactory.mjs b/RouterFactory.mts similarity index 88% rename from RouterFactory.mjs rename to RouterFactory.mts index e38e379..34b1713 100644 --- a/RouterFactory.mjs +++ b/RouterFactory.mts @@ -1,14 +1,14 @@ import CURDHelper from "./CURDHelper.mjs"; export default class RouterFactor { - name = ""; - db = null; - router = null; + name: string = ""; + db: any = null; + router: any = null; constructor({ router: _router, db: _db, name: _name - }) { + }: any) { this.router = _router; this.db = _db; this.name = _name; @@ -24,7 +24,7 @@ export default class RouterFactor { router } = this; - router.post(`/api/${name}/list`, async (ctx) => { + router.post(`/api/${name}/list`, async (ctx: any) => { // 设置头类型, 如果不设置,会直接下载该页面 ctx.type = 'application/json'; const body = ctx.request.body; @@ -47,7 +47,7 @@ export default class RouterFactor { db, router } = this; - router.get(`/api/${name}`, async (ctx) => { + router.get(`/api/${name}`, async (ctx:any) => { // 设置头类型, 如果不设置,会直接下载该页面 ctx.type = 'application/json'; const query = ctx.request.query; @@ -70,7 +70,7 @@ export default class RouterFactor { db, router } = this; - router.post(`/api/${name}/upd`, async (ctx) => { + router.post(`/api/${name}/upd`, async (ctx:any) => { // 设置头类型, 如果不设置,会直接下载该页面 ctx.type = 'application/json'; const body = ctx.request.body; @@ -93,7 +93,7 @@ export default class RouterFactor { db, router } = this; - router.post(`/api/${name}/add`, async (ctx) => { + router.post(`/api/${name}/add`, async (ctx:any) => { // 设置头类型, 如果不设置,会直接下载该页面 ctx.type = 'application/json'; const body = ctx.request.body; @@ -116,7 +116,7 @@ export default class RouterFactor { db, router } = this; - router.post(`/api/${name}/delete`, async (ctx) => { + router.post(`/api/${name}/delete`, async (ctx:any) => { // 设置头类型, 如果不设置,会直接下载该页面 ctx.type = 'application/json'; const body = ctx.request.body; diff --git a/Server.mts b/Server.mts new file mode 100644 index 0000000..5c7fe22 --- /dev/null +++ b/Server.mts @@ -0,0 +1,140 @@ +import path from 'path'; +import { + dirname +} from 'path'; +import { + fileURLToPath +} from 'url'; +import Koa from 'koa'; +import getRouter from 'koa-router'; +import koaBody from 'koa-body'; +import fs from "fs"; +// 静态文件服务 +import koaStatic from 'koa-static' +// 虚拟路径 +import koaMount from 'koa-mount'; +// import { ConfigHelper, DBHelper } from "funjia-server/lib/funjia-server.mjs"; +import ConfigHelper from './ConfigHelper.mjs'; +import DBHelper from './DBHelper.mjs'; + + +const __dirname = dirname(fileURLToPath( + import.meta.url)); + +ConfigHelper.initConfig(); + +(async () => await DBHelper.init())(); + + +export default CreateServer + +/** + * 创建服务 + * port: 服务端口号 + */ +function CreateServer(port = 4873) { + const router = new getRouter(); + const app = new Koa(); + app.use(koaBody()); + const staticPath = './static' + app.use( + koaMount('/resource/static', koaStatic( + path.join(__dirname, staticPath), {} + )) + ) + + // app.use(koaStatic('.')); + + app.use(router.routes()); + app.use(router.allowedMethods()); + + + // 初始化路由 + const initRouter = (folderPath: string) => { + // 读取文件夹中的文件列表 + fs.readdir(folderPath, async (err, files) => { + if (err) { + console.error('Error reading directory:', err); + return; + } + + // 筛选出.js 文件 + // const jsFiles = files.filter(file => path.extname(file) === '.mjs'); + + for (const file of files) { + try { + const filePath = path.join(folderPath, file); + const stats = await fs.statSync(filePath); + if (stats.isDirectory()) { + await initRouter(filePath); + } + else if (stats.isFile()) { + // 构建文件的完整路径 + const filePath = path.join(folderPath, file); + // 动态导入文件 + const module = await import("./" + path.relative(__dirname, filePath)); + // 在这里可以对导入的模块进行处理,例如调用其中的函数或使用其导出的对象 + module.default(router); + // console.log(module); + } + } catch (error) { + console.error(`Error importing ${file}:`, error); + } + } + }); + } + + (async () => { + // 目标文件夹的路径 + const folderPath = './routers'; + + await initRouter(folderPath); + })(); + + let server = null; + + const startServer = () => { + server = app.listen(port, () => { + console.log('server is listen in ', port); + }); + + server.on('close', (err: any, socket: any) => { + server = null; + console.log('server is close'); + }); + } + + startServer(); +} + +// const bH = new BackupHelper(); + +// 调度任务 (该模块内存占用会持续上升不建议使用,建议使用系统本身的调度任务) +// const task = cron.schedule('* */1 * * * Sunday', () => { +// console.log('running a task every 10 seconds'); +// task.stop(); +// server.close(async () => { +// await bH.bakFile(ConfigHelper.config.dbBak); +// startServer(); +// }); +// }, { +// scheduled: false, +// // https://timezonedb.com/download +// timezone: "Asia/Shanghai" +// }); + +// task.start(); + +// const delay = () => new Promise((resolve) => { +// setTimeout(() => { +// resolve(true); +// }, 1000 * 10); +// }); + +// (async () => { +// for (let i = 0; i < 20; i++) { +// console.log('running a task every 10 seconds'); +// await delay(); +// await bH.bakFile(ConfigHelper.config.dbBak); +// } +// })(); \ No newline at end of file diff --git a/config.example.yml b/config.example.yml new file mode 100644 index 0000000..d40fee2 --- /dev/null +++ b/config.example.yml @@ -0,0 +1,22 @@ +db: # 数据库配置 + db: &db C:\workspace\anki_admin\QuestionMakingSystem\server\db\db.json + resourceDB: &resourceDB C:\workspace\anki_admin\QuestionMakingSystem\server\db\resourceDB.json + backupDB: &backupDB C:\workspace\anki_admin\QuestionMakingSystem\server\db\backupDB.json + logDB: &logDB C:\workspace\anki_admin\QuestionMakingSystem\server\db\logDB.json +dbBak: # 数据库备份配置 + - # + original: *db + dest: F:/sourceCode/2022/compute-cms/bak/db + category: db + - # + original: *resourceDB + dest: F:/sourceCode/2022/compute-cms/bak/resourceDB + category: resourceDB + - # + original: *backupDB + dest: F:/sourceCode/2022/compute-cms/bak/backupDB + category: backupDB + - # + original: *logDB + dest: F:/sourceCode/2022/compute-cms/bak/logDB + category: logDB diff --git a/dbServer.mjs b/dbServer.mts similarity index 96% rename from dbServer.mjs rename to dbServer.mts index c3eae82..b5adb6d 100644 --- a/dbServer.mjs +++ b/dbServer.mts @@ -15,7 +15,7 @@ const __dirname = dirname(fileURLToPath( import.meta.url)); -const getDbPath = (dbName, defPath) => { +const getDbPath = (dbName:string, defPath:string) => { let file = ""; if (ConfigHelper.config && ConfigHelper.config.db && ConfigHelper.config.db[dbName]) { file = ConfigHelper.config.path + ConfigHelper.config.db[dbName]; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index 5ede8b2..0000000 --- a/index.mjs +++ /dev/null @@ -1,27 +0,0 @@ -// 备份 -// export * from "./backupHelper.mjs"; -// export { default as BackupHelper } from "./backupHelper.mjs"; - -// 配置 -export * from "./ConfigHelper.mjs"; -export { default as ConfigHelper } from "./ConfigHelper.mjs"; - -// 增删改查抽象方法 -export * from "./CURDHelper.mjs"; -export { default as CURDHelper } from "./CURDHelper.mjs"; - -// 数据库服务 -export * from "./dbServer.mjs"; -export { default as getDb } from "./dbServer.mjs"; - -// 日志服务 -export * from "./LogHelper.mjs"; -export { default as LogHelper } from "./LogHelper.mjs"; - -// 路由工厂类 -export * from "./RouterFactory.mjs"; -export { default as RouterFactory } from "./RouterFactory.mjs"; - -// 数据操作工具类 -export * from "./DBHelper.mjs"; -export { default as DBHelper } from "./DBHelper.mjs"; diff --git a/index.mts b/index.mts new file mode 100644 index 0000000..a880a1b --- /dev/null +++ b/index.mts @@ -0,0 +1,30 @@ +// 备份 +// export * from "./backupHelper.mjs"; +// export { default as BackupHelper } from "./backupHelper.mjs"; + +// 配置 +export * from "./ConfigHelper.mts"; +export { default as ConfigHelper } from "./ConfigHelper.mts"; + +// 增删改查抽象方法 +export * from "./CURDHelper.mts"; +export { default as CURDHelper } from "./CURDHelper.mts"; + +// 数据库服务 +export * from "./dbServer.mts"; +export { default as getDb } from "./dbServer.mts"; + +// 日志服务 +export * from "./LogHelper.mts"; +export { default as LogHelper } from "./LogHelper.mts"; + +// 路由工厂类 +export * from "./RouterFactory.mts"; +export { default as RouterFactor } from "./RouterFactory.mts"; + +// 数据操作工具类 +export * from "./DBHelper.mts"; +export { default as DBHelper } from "./DBHelper.mts"; + +// 服务启动类 +export { default as CreateServer } from "./Server.mts"; diff --git a/lib/CURDHelper.d.mts b/lib/CURDHelper.d.mts new file mode 100644 index 0000000..0cf827c --- /dev/null +++ b/lib/CURDHelper.d.mts @@ -0,0 +1,43 @@ +export default class CURDHelper { + /** + * 读取列表数据 + * @param {*} param0 + * @returns + */ + static retrieveList({ db, name, params }: any): Promise<{ + code: number; + data: any; + total: any; + }>; + /** + * 读取单条数据 + * @param {*} param0 + */ + static retrieveSingle({ db, name, params }: any): Promise<{ + code: number; + data: {}; + }>; + /** + * 修改数据 + * @param {*} param0 + */ + static update({ db, name, data }: any): Promise<{ + code: number; + }>; + /** + * 创建数据 + * @param {*} param0 + */ + static create({ db, name, data }: any): Promise<{ + code: number; + data: any; + }>; + /** + * 删除数据 + * @param {*} param0 + * @returns + */ + static delete({ db, name, data }: any): Promise<{ + code: number; + }>; +} diff --git a/lib/ConfigHelper.d.mts b/lib/ConfigHelper.d.mts new file mode 100644 index 0000000..8389301 --- /dev/null +++ b/lib/ConfigHelper.d.mts @@ -0,0 +1,7 @@ +/** + * 配置信息帮助类 + */ +export default class ConfigHelper { + static config: any; + static initConfig(): void; +} diff --git a/lib/DBHelper.d.mts b/lib/DBHelper.d.mts new file mode 100644 index 0000000..1326c8c --- /dev/null +++ b/lib/DBHelper.d.mts @@ -0,0 +1,9 @@ +export default class DBHelper { + static baseDB: any; + static resourceDB: any; + static backupDB: any; + static logDB: any; + static init(): Promise; + static getBackupDb(): any; + static getLogDb(): any; +} diff --git a/lib/LogHelper.d.mts b/lib/LogHelper.d.mts new file mode 100644 index 0000000..30ebe5e --- /dev/null +++ b/lib/LogHelper.d.mts @@ -0,0 +1,7 @@ +export default class LogHelper { + static addDataLog({ tableName, type, data }: any): Promise<{ + code: number; + data: any; + }>; + static modifyDataLogStatus({ id }: any): Promise; +} diff --git a/lib/RouterFactory.d.mts b/lib/RouterFactory.d.mts new file mode 100644 index 0000000..1d9fc26 --- /dev/null +++ b/lib/RouterFactory.d.mts @@ -0,0 +1,27 @@ +export default class RouterFactor { + name: string; + db: any; + router: any; + constructor({ router: _router, db: _db, name: _name }: any); + /** + * 创建列表数据路由 + */ + createGetList(): void; + /** + * 创建详情路由 + */ + createGetDetail(): void; + /** + * 修改数据 + */ + createUpdate(): void; + /** + * 新增数据 + */ + createAdd(): void; + /** + * 删除数据 + */ + createDelete(): void; + creaetBaseRouter(): void; +} diff --git a/lib/Server.d.mts b/lib/Server.d.mts new file mode 100644 index 0000000..6066832 --- /dev/null +++ b/lib/Server.d.mts @@ -0,0 +1,6 @@ +export default CreateServer; +/** + * 创建服务 + * port: 服务端口号 + */ +declare function CreateServer(port?: number): void; diff --git a/lib/dbServer.d.mts b/lib/dbServer.d.mts new file mode 100644 index 0000000..144b23b --- /dev/null +++ b/lib/dbServer.d.mts @@ -0,0 +1,22 @@ +import { Low } from 'lowdb'; +/** + * 基础数据库 + * @returns + */ +export declare const getDb: () => Promise>; +/** + * 文件资源库 + * @returns + */ +export declare const getResourceDb: () => Promise>; +/** + * 备份记录存储库 + * @returns + */ +export declare const getBackupDb: () => Promise>; +/** + * 日志存储库 + * @returns + */ +export declare const getLogDb: () => Promise>; +export default getDb; diff --git a/lib/funjia-server.mjs b/lib/funjia-server.mjs index 14d7ceb..ab9c10f 100644 --- a/lib/funjia-server.mjs +++ b/lib/funjia-server.mjs @@ -1,44 +1,46 @@ -var S = Object.defineProperty; -var j = (n, t, a) => t in n ? S(n, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : n[t] = a; -var d = (n, t, a) => j(n, typeof t != "symbol" ? t + "" : t, a); -import k from "yaml"; -import q from "fs"; -import R from "cuid"; -import v from "lodash"; -import { dirname as $, join as f } from "path"; -import { JSONFile as w, Low as D } from "lowdb"; -import { fileURLToPath as F } from "url"; -class g { +import F from "yaml"; +import B from "fs"; +import G from "cuid"; +import U from "lodash"; +import w, { dirname as R, join as h } from "path"; +import { JSONFile as m, Low as D } from "lowdb"; +import { fileURLToPath as $ } from "url"; +import A from "koa"; +import M from "koa-router"; +import T from "koa-body"; +import z from "koa-static"; +import C from "koa-mount"; +const j = class j { static initConfig() { - this.config = k.parse(q.readFileSync("./config.yml").toString()); + this.config = F.parse(B.readFileSync("./config.yml").toString()); } -} -d(g, "config", null); -const b = $(F( - import.meta.url -)), L = (n, t) => { - let a = ""; - return g.config && g.config.db && g.config.db[n] ? a = g.config.path + g.config.db[n] : a = t, a; -}, G = async () => { - let n = L("db", f(b, "db.json")); - const t = new w(n), a = new D(t); - return await a.read(), a; -}, U = async () => { - let n = L("resourceDB", f(b, "resourceDB.json")); - const t = new w(n), a = new D(t); - return await a.read(), a; -}, _ = async () => { - let n = L("backupDB", f(b, "backupDB.json")); - const t = new w(n), a = new D(t); - return await a.read(), a; -}, A = async () => { - let n = L("logDB", f(b, "logDB.json")); - const t = new w(n), a = new D(t); - return await a.read(), a; }; -class y { +j.config = null; +let u = j; +const b = R($( + import.meta.url +)), L = (n, a) => { + let t = ""; + return u.config && u.config.db && u.config.db[n] ? t = u.config.path + u.config.db[n] : t = a, t; +}, E = async () => { + let n = L("db", h(b, "db.json")); + const a = new m(n), t = new D(a); + return await t.read(), t; +}, I = async () => { + let n = L("resourceDB", h(b, "resourceDB.json")); + const a = new m(n), t = new D(a); + return await t.read(), t; +}, O = async () => { + let n = L("backupDB", h(b, "backupDB.json")); + const a = new m(n), t = new D(a); + return await t.read(), t; +}, J = async () => { + let n = L("logDB", h(b, "logDB.json")); + const a = new m(n), t = new D(a); + return await t.read(), t; +}, y = class y { static async init() { - this.baseDB = await G(), this.resourceDB = await U(), this.backupDB = await _(), this.logDB = await A(); + this.baseDB = await E(), this.resourceDB = await I(), this.backupDB = await O(), this.logDB = await J(); } static getBackupDb() { return this.backupDB; @@ -46,22 +48,23 @@ class y { static getLogDb() { return this.logDB; } -} -d(y, "baseDB", null), d(y, "resourceDB", null), d(y, "backupDB", null), d(y, "logDB", null); -class m { +}; +y.baseDB = null, y.resourceDB = null, y.backupDB = null, y.logDB = null; +let g = y; +class v { static async addDataLog({ - tableName: t, - type: a, + tableName: a, + type: t, data: i }) { - const e = await y.getLogDb(); + const e = await g.getLogDb(); return p.create({ db: e, name: "dataLog", data: { dataId: i.id, - type: a, - tableName: t, + type: t, + tableName: a, data: i, // 待生效 status: 0, @@ -70,20 +73,20 @@ class m { }); } static async modifyDataLogStatus({ - id: t + id: a }) { - const a = await y.getLogDb(), { + const t = await g.getLogDb(), { data: i, code: e } = await p.retrieveSingle({ - db: a, + db: t, name: "dataLog", params: { - id: t + id: a } }); e == 0 && await p.update({ - db: a, + db: t, name: "dataLog", data: { ...i, @@ -93,41 +96,38 @@ class m { }); } } -class h { +class S { constructor({ - name: t, - type: a + name: a, + type: t }) { - d(this, "name", ""); - d(this, "type", ""); - d(this, "id", null); - this.name = t, this.type = a; + this.name = "", this.type = "", this.id = null, this.name = a, this.type = t; } async addDataLog({ - data: t + data: a }) { const { - name: a, + name: t, type: i } = this; - if (a != "dataLog") { + if (t != "dataLog") { const { data: e - } = await m.addDataLog({ - tableName: a, + } = await v.addDataLog({ + tableName: t, type: i, - data: t + data: a }); this.id = e.id; } } async modifyDataLogStatus() { const { - name: t, - id: a + name: a, + id: t } = this; - t != "dataLog" && a && await m.modifyDataLogStatus({ - id: a + a != "dataLog" && t && await v.modifyDataLogStatus({ + id: t }); } } @@ -138,25 +138,25 @@ class p { * @returns */ static async retrieveList({ - db: t, - name: a, + db: a, + name: t, params: i }) { - await t.read(); - const e = t.data[a].filter((c) => { + await a.read(); + const e = a.data[t].filter((c) => { let l = !0; for (let r in i) if (!["page", "pageSize"].includes(r) && (typeof c[r] == "string" ? l = c[r].indexOf(i[r]) > -1 : typeof c[r] == "number" ? l = c[r] == i[r] : c[r] instanceof Array && (l = c[r].includes(i[r])), !l)) break; return l; }), { - page: s, - pageSize: o + page: o, + pageSize: s } = i; - let u = e; - return s && o && (u = e.slice((s - 1) * o, s * o)), { + let d = e; + return o && s && (d = e.slice((o - 1) * s, o * s)), { code: 0, - data: u.sort((c, l) => c.sort - l.sort) || [], + data: d.sort((c, l) => c.sort - l.sort) || [], total: e.length }; } @@ -165,16 +165,16 @@ class p { * @param {*} param0 */ static async retrieveSingle({ - db: t, - name: a, + db: a, + name: t, params: i }) { - await t.read(); - const e = t.data[a], s = i; - let o = {}; - return s.id && e && (o = e.find((u) => u.id == s.id)), { + await a.read(); + const e = a.data[t], o = i; + let s = {}; + return o.id && e && (s = e.find((d) => d.id == o.id)), { code: 0, - data: o || {} + data: s || {} }; } /** @@ -182,22 +182,22 @@ class p { * @param {*} param0 */ static async update({ - db: t, - name: a, + db: a, + name: t, data: i }) { - await t.read(), t.data[a] || (t.data[a] = []); - const e = t.data[a], s = i.id; - if (s && e) { - const o = e.find((c) => c.id == s); - o && v.merge(o, i); - const u = new h({ - name: a, + await a.read(), a.data[t] || (a.data[t] = []); + const e = a.data[t], o = i.id; + if (o && e) { + const s = e.find((c) => c.id == o); + s && U.merge(s, i); + const d = new S({ + name: t, type: "upd" }); - await u.addDataLog({ - data: o - }), await t.write(), await u.modifyDataLogStatus(); + await d.addDataLog({ + data: s + }), await a.write(), await d.modifyDataLogStatus(); } return { code: 0 @@ -208,20 +208,20 @@ class p { * @param {*} param0 */ static async create({ - db: t, - name: a, + db: a, + name: t, data: i }) { - await t.read(), t.data[a] || (t.data[a] = []); - const e = t.data[a]; - i.id = R(), i.createTime = /* @__PURE__ */ new Date(), e.push(i); - const s = new h({ - name: a, + await a.read(), a.data[t] || (a.data[t] = []); + const e = a.data[t]; + i.id = G(), i.createTime = /* @__PURE__ */ new Date(), e.push(i); + const o = new S({ + name: t, type: "add" }); - return await s.addDataLog({ + return await o.addDataLog({ data: i - }), await t.write(), await s.modifyDataLogStatus(), { + }), await a.write(), await o.modifyDataLogStatus(), { code: 0, data: i }; @@ -232,61 +232,58 @@ class p { * @returns */ static async delete({ - db: t, - name: a, + db: a, + name: t, data: i }) { - await t.read(), t.data[a] || (t.data[a] = []); - const e = t.data[a], s = i.ids; - if (s.length > 0 && e) { - let o = null; - const u = []; - for (let l = 0; l < s.length; l++) { - o = s[l]; - const r = e.findIndex((B) => B.id == o); - r != -1 && (u.push(e[r]), e.splice(r, 1)); + await a.read(), a.data[t] || (a.data[t] = []); + const e = a.data[t], o = i.ids; + if (o.length > 0 && e) { + let s = null; + const d = []; + for (let l = 0; l < o.length; l++) { + s = o[l]; + const r = e.findIndex((f) => f.id == s); + r != -1 && (d.push(e[r]), e.splice(r, 1)); } - const c = new h({ - name: a, + const c = new S({ + name: t, type: "del" }); await c.addDataLog({ - data: u - }), await t.write(), await c.modifyDataLogStatus(); + data: d + }), await a.write(), await c.modifyDataLogStatus(); } return { code: 0 }; } } -class M { +class et { constructor({ - router: t, - db: a, + router: a, + db: t, name: i }) { - d(this, "name", ""); - d(this, "db", null); - d(this, "router", null); - this.router = t, this.db = a, this.name = i; + this.name = "", this.db = null, this.router = null, this.router = a, this.db = t, this.name = i; } /** * 创建列表数据路由 */ createGetList() { const { - name: t, - db: a, + name: a, + db: t, router: i } = this; - i.post(`/api/${t}/list`, async (e) => { + i.post(`/api/${a}/list`, async (e) => { e.type = "application/json"; - const s = e.request.body, o = await p.retrieveList({ - db: a, - name: t, - params: s + const o = e.request.body, s = await p.retrieveList({ + db: t, + name: a, + params: o }); - e.body = o; + e.body = s; }); } /** @@ -294,18 +291,18 @@ class M { */ createGetDetail() { const { - name: t, - db: a, + name: a, + db: t, router: i } = this; - i.get(`/api/${t}`, async (e) => { + i.get(`/api/${a}`, async (e) => { e.type = "application/json"; - const s = e.request.query, o = await p.retrieveSingle({ - db: a, - name: t, - params: s + const o = e.request.query, s = await p.retrieveSingle({ + db: t, + name: a, + params: o }); - e.body = o; + e.body = s; }); } /** @@ -313,18 +310,18 @@ class M { */ createUpdate() { const { - name: t, - db: a, + name: a, + db: t, router: i } = this; - i.post(`/api/${t}/upd`, async (e) => { + i.post(`/api/${a}/upd`, async (e) => { e.type = "application/json"; - const s = e.request.body, o = await p.update({ - db: a, - name: t, - data: s + const o = e.request.body, s = await p.update({ + db: t, + name: a, + data: o }); - e.body = o; + e.body = s; }); } /** @@ -332,18 +329,18 @@ class M { */ createAdd() { const { - name: t, - db: a, + name: a, + db: t, router: i } = this; - i.post(`/api/${t}/add`, async (e) => { + i.post(`/api/${a}/add`, async (e) => { e.type = "application/json"; - const s = e.request.body, o = await p.create({ - db: a, - name: t, - data: s + const o = e.request.body, s = await p.create({ + db: t, + name: a, + data: o }); - e.body = o; + e.body = s; }); } /** @@ -351,32 +348,76 @@ class M { */ createDelete() { const { - name: t, - db: a, + name: a, + db: t, router: i } = this; - i.post(`/api/${t}/delete`, async (e) => { + i.post(`/api/${a}/delete`, async (e) => { e.type = "application/json"; - const s = e.request.body, o = await p.delete({ - db: a, - name: t, - data: s + const o = e.request.body, s = await p.delete({ + db: t, + name: a, + data: o }); - e.body = o; + e.body = s; }); } creaetBaseRouter() { this.createGetList(), this.createGetDetail(), this.createAdd(), this.createUpdate(), this.createDelete(); } } +const q = R($( + import.meta.url +)); +u.initConfig(); +(async () => await g.init())(); +function it(n = 4873) { + const a = new M(), t = new A(); + t.use(T()), t.use( + C("/resource/static", z( + w.join(q, "./static"), + {} + )) + ), t.use(a.routes()), t.use(a.allowedMethods()); + const e = (d) => { + B.readdir(d, async (c, l) => { + if (c) { + console.error("Error reading directory:", c); + return; + } + for (const r of l) + try { + const f = w.join(d, r), k = await B.statSync(f); + if (k.isDirectory()) + await e(f); + else if (k.isFile()) { + const P = w.join(d, r); + (await import("./" + w.relative(q, P))).default(a); + } + } catch (f) { + console.error(`Error importing ${r}:`, f); + } + }); + }; + (async () => await e("./routers"))(); + let o = null; + (() => { + o = t.listen(n, () => { + console.log("server is listen in ", n); + }), o.on("close", (d, c) => { + o = null, console.log("server is close"); + }); + })(); +} export { p as CURDHelper, - g as ConfigHelper, - y as DBHelper, - m as LogHelper, - M as RouterFactory, - _ as getBackupDb, - G as getDb, - A as getLogDb, - U as getResourceDb + u as ConfigHelper, + it as CreateServer, + g as DBHelper, + v as LogHelper, + et as RouterFactor, + O as getBackupDb, + E as getDb, + J as getLogDb, + I as getResourceDb }; diff --git a/lib/index.d.mts b/lib/index.d.mts new file mode 100644 index 0000000..1466874 --- /dev/null +++ b/lib/index.d.mts @@ -0,0 +1,13 @@ +export * from './ConfigHelper.mts'; +export { default as ConfigHelper } from './ConfigHelper.mts'; +export * from './CURDHelper.mts'; +export { default as CURDHelper } from './CURDHelper.mts'; +export * from './dbServer.mts'; +export { default as getDb } from './dbServer.mts'; +export * from './LogHelper.mts'; +export { default as LogHelper } from './LogHelper.mts'; +export * from './RouterFactory.mts'; +export { default as RouterFactor } from './RouterFactory.mts'; +export * from './DBHelper.mts'; +export { default as DBHelper } from './DBHelper.mts'; +export { default as CreateServer } from './Server.mts'; diff --git a/lib/sleep.d.mts b/lib/sleep.d.mts new file mode 100644 index 0000000..eef80a4 --- /dev/null +++ b/lib/sleep.d.mts @@ -0,0 +1 @@ +export default function sleep(timeout: number): Promise; diff --git a/package.json b/package.json index 653e05e..7905600 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,10 @@ "name": "funjia-server", "version": "1.0.0", "description": "", - "main": "index.js", + "main": "lib/funjia-server.mjs", + "types": "lib/index.d.mts", "scripts": { - "build":"vite build", + "build": "vite build", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", @@ -24,9 +25,15 @@ "multer": "^1.4.5-lts.1", "node-cron": "^3.0.1", "uuid": "^8.3.2", + "vite-plugin-dts": "^4.5.0", "yaml": "^2.1.1" }, "devDependencies": { + "@types/koa": "^2.15.0", + "@types/koa-mount": "^4.0.5", + "@types/koa-router": "^7.4.8", + "@types/koa-static": "^4.0.4", + "@types/lodash": "^4.17.14", "vite": "^6.0.7" } } diff --git a/sleep.mjs b/sleep.mts similarity index 69% rename from sleep.mjs rename to sleep.mts index b5a5975..5d8612c 100644 --- a/sleep.mjs +++ b/sleep.mts @@ -1,4 +1,4 @@ -export default async function sleep(timeout) { +export default async function sleep(timeout:number) { return new Promise((resolve) => { setTimeout(() => { resolve(true); diff --git a/test.mjs b/test.mjs index 712d98c..071145e 100644 --- a/test.mjs +++ b/test.mjs @@ -1,4 +1,3 @@ -// import { BackupHelper } from "./index.mjs"; +import { CreateServer,CURDHelper} from "./lib/index.mjs"; - -import { } from "./lib/funjia-server.mjs"; \ No newline at end of file +CreateServer() \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..7500f6e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es2018", + "module": "nodenext", + "moduleResolution": "nodenext", + "declaration": true, + "outDir": "dist", + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "noEmit": true, + "allowImportingTsExtensions": true + }, + "include": [ + "*.mts" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/types/Server.d.ts b/types/Server.d.ts new file mode 100644 index 0000000..ba01164 --- /dev/null +++ b/types/Server.d.ts @@ -0,0 +1,7 @@ +declare namespace Server { + /** + * 创建服务 + * @param port 端口号 默认:4873 + */ + export function CreateServer(port: number) { } +} \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index 72d1041..82859cb 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,25 +1,31 @@ import { defineConfig } from 'vite'; +import dts from 'vite-plugin-dts'; export default defineConfig({ build: { lib: { - entry: './index.mjs', // 你的库的入口文件,这里假设是 src/main.mjs + entry: './index.mts', // 你的库的入口文件,这里假设是 src/main.mjs name: 'funjia-server', // 库的全局名称,将在浏览器环境中使用 formats: ['es'], // 输出的模块格式,这里包含 ES 模块和 UMD 模块 // fileName: (format) => `your-library-name.${format}.js` // 输出的文件名,根据不同的格式生成不同的文件名 }, rollupOptions: { // 确保不包含 Node.js 特定的模块,避免将 Node.js 模块错误地打包到浏览器代码中 - external: ['child_process','fs', 'path','url','node','node-cron','cuid','dayjs','koa','koa-body', - 'koa-mount','koa-router','koa-static','lodash','lowdb','multer','uuid','yaml','@koa/multer','@types/yaml'], + external: ['child_process', 'fs', 'path', 'url', 'node', 'node-cron', 'cuid', 'dayjs', 'koa', 'koa-body', + 'koa-mount', 'koa-router', 'koa-static', 'lodash', 'lowdb', 'multer', 'uuid', 'yaml', '@koa/multer', '@types/yaml'], output: { exports: 'named', // 在 Node.js 环境中不需要全局变量,可将此设置为 undefined globals: undefined } - }, + }, // 构建为 Node.js 库时,将输出目录设置为 lib 而不是 dist,可根据需要修改 outDir: 'lib' - } + }, + plugins: [ + dts({ + insertTypesEntry: true, + }), + ], }); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 9c36dd0..24ca196 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,31 @@ # yarn lockfile v1 +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/parser@^7.25.3": + version "7.26.5" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.5.tgz#6fec9aebddef25ca57a935c86dbb915ae2da3e1f" + integrity sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw== + dependencies: + "@babel/types" "^7.26.5" + +"@babel/types@^7.26.5": + version "7.26.5" + resolved "https://registry.npmmirror.com/@babel/types/-/types-7.26.5.tgz#7a1e1c01d28e26d1fe7f8ec9567b3b92b9d07747" + integrity sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@esbuild/aix-ppc64@0.24.2": version "0.24.2" resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" @@ -127,11 +152,68 @@ resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + "@koa/multer@^3.0.0": version "3.0.0" resolved "https://registry.npmmirror.com/@koa/multer/-/multer-3.0.0.tgz#439777949f28097d7b329c0b4ce3048074c862f8" integrity sha512-y+OQBmex5D1jIl723gAEUYcAWPEicIXppaAKw/zCMfpllQ08ZNweDPwoCLxEoatqd5pCu2XG6V8dl67JRq3RJw== +"@microsoft/api-extractor-model@7.30.2": + version "7.30.2" + resolved "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.30.2.tgz#9c0b2446f6bbcdd0159e16b0e8f8694d645ce257" + integrity sha512-3/t2F+WhkJgBzSNwlkTIL0tBgUoBqDqL66pT+nh2mPbM0NIDGVGtpqbGWPgHIzn/mn7kGS/Ep8D8po58e8UUIw== + dependencies: + "@microsoft/tsdoc" "~0.15.1" + "@microsoft/tsdoc-config" "~0.17.1" + "@rushstack/node-core-library" "5.10.2" + +"@microsoft/api-extractor@^7.49.1": + version "7.49.1" + resolved "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.49.1.tgz#e525cadfa09a9d376fd05e8b9415f6bc6260f01a" + integrity sha512-jRTR/XbQF2kb+dYn8hfYSicOGA99+Fo00GrsdMwdfE3eIgLtKdH6Qa2M3wZV9S2XmbgCaGX1OdPtYctbfu5jQg== + dependencies: + "@microsoft/api-extractor-model" "7.30.2" + "@microsoft/tsdoc" "~0.15.1" + "@microsoft/tsdoc-config" "~0.17.1" + "@rushstack/node-core-library" "5.10.2" + "@rushstack/rig-package" "0.5.3" + "@rushstack/terminal" "0.14.5" + "@rushstack/ts-command-line" "4.23.3" + lodash "~4.17.15" + minimatch "~3.0.3" + resolve "~1.22.1" + semver "~7.5.4" + source-map "~0.6.1" + typescript "5.7.2" + +"@microsoft/tsdoc-config@~0.17.1": + version "0.17.1" + resolved "https://registry.npmmirror.com/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz#e0f0b50628f4ad7fe121ca616beacfe6a25b9335" + integrity sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw== + dependencies: + "@microsoft/tsdoc" "0.15.1" + ajv "~8.12.0" + jju "~1.4.0" + resolve "~1.22.2" + +"@microsoft/tsdoc@0.15.1", "@microsoft/tsdoc@~0.15.1": + version "0.15.1" + resolved "https://registry.npmmirror.com/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz#d4f6937353bc4568292654efb0a0e0532adbcba2" + integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw== + +"@rollup/pluginutils@^5.1.4": + version "5.1.4" + resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a" + integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^4.0.2" + "@rollup/rollup-android-arm-eabi@4.30.1": version "4.30.1" resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" @@ -227,11 +309,113 @@ resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== -"@types/estree@1.0.6": +"@rushstack/node-core-library@5.10.2": + version "5.10.2" + resolved "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-5.10.2.tgz#8d12bc5bd9244ea57f441877246efb0a1b7b7df6" + integrity sha512-xOF/2gVJZTfjTxbo4BDj9RtQq/HFnrrKdtem4JkyRLnwsRz2UDTg8gA1/et10fBx5RxmZD9bYVGST69W8ME5OQ== + dependencies: + ajv "~8.13.0" + ajv-draft-04 "~1.0.0" + ajv-formats "~3.0.1" + fs-extra "~7.0.1" + import-lazy "~4.0.0" + jju "~1.4.0" + resolve "~1.22.1" + semver "~7.5.4" + +"@rushstack/rig-package@0.5.3": + version "0.5.3" + resolved "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.5.3.tgz#ea4d8a3458540b1295500149c04e645f23134e5d" + integrity sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow== + dependencies: + resolve "~1.22.1" + strip-json-comments "~3.1.1" + +"@rushstack/terminal@0.14.5": + version "0.14.5" + resolved "https://registry.npmmirror.com/@rushstack/terminal/-/terminal-0.14.5.tgz#4b0e79b139b4372901956f920b5a4a405a1d09d8" + integrity sha512-TEOpNwwmsZVrkp0omnuTUTGZRJKTr6n6m4OITiNjkqzLAkcazVpwR1SOtBg6uzpkIBLgrcNHETqI8rbw3uiUfw== + dependencies: + "@rushstack/node-core-library" "5.10.2" + supports-color "~8.1.1" + +"@rushstack/ts-command-line@4.23.3": + version "4.23.3" + resolved "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-4.23.3.tgz#a42fe413159c0f3f2c57afdceedf91a5b75c2d67" + integrity sha512-HazKL8fv4HMQMzrKJCrOrhyBPPdzk7iajUXgsASwjQ8ROo1cmgyqxt/k9+SdmrNLGE1zATgRqMUH3s/6smbRMA== + dependencies: + "@rushstack/terminal" "0.14.5" + "@types/argparse" "1.0.38" + argparse "~1.0.9" + string-argv "~0.3.1" + +"@types/accepts@*": + version "1.3.7" + resolved "https://registry.npmmirror.com/@types/accepts/-/accepts-1.3.7.tgz#3b98b1889d2b2386604c2bbbe62e4fb51e95b265" + integrity sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ== + dependencies: + "@types/node" "*" + +"@types/argparse@1.0.38": + version "1.0.38" + resolved "https://registry.npmmirror.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" + integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.npmmirror.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/content-disposition@*": + version "0.5.8" + resolved "https://registry.npmmirror.com/@types/content-disposition/-/content-disposition-0.5.8.tgz#6742a5971f490dc41e59d277eee71361fea0b537" + integrity sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg== + +"@types/cookies@*": + version "0.9.0" + resolved "https://registry.npmmirror.com/@types/cookies/-/cookies-0.9.0.tgz#a2290cfb325f75f0f28720939bee854d4142aee2" + integrity sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q== + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + +"@types/estree@1.0.6", "@types/estree@^1.0.0": version "1.0.6" resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/express-serve-static-core@^5.0.0": + version "5.0.5" + resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.5.tgz#f6a851c7fd512e5da087f6f20d29f44b162a6a95" + integrity sha512-GLZPrd9ckqEBFMcVM/qRFAP0Hg3qiVEojgEFsx/N/zKXsBzbGF6z5FBDpZ0+Xhp1xr+qRZYjfGr1cWHB9oFHSA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.0" + resolved "https://registry.npmmirror.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c" + integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/formidable@^1.0.31": version "1.2.5" resolved "https://registry.npmmirror.com/@types/formidable/-/formidable-1.2.5.tgz#561d026e5f09179e5c8ef7b31e8f4652e11abe4c" @@ -239,11 +423,113 @@ dependencies: "@types/node" "*" +"@types/http-assert@*": + version "1.5.6" + resolved "https://registry.npmmirror.com/@types/http-assert/-/http-assert-1.5.6.tgz#b6b657c38a2350d21ce213139f33b03b2b5fa431" + integrity sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw== + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/keygrip@*": + version "1.0.6" + resolved "https://registry.npmmirror.com/@types/keygrip/-/keygrip-1.0.6.tgz#1749535181a2a9b02ac04a797550a8787345b740" + integrity sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ== + +"@types/koa-compose@*": + version "3.2.8" + resolved "https://registry.npmmirror.com/@types/koa-compose/-/koa-compose-3.2.8.tgz#dec48de1f6b3d87f87320097686a915f1e954b57" + integrity sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA== + dependencies: + "@types/koa" "*" + +"@types/koa-mount@^4.0.5": + version "4.0.5" + resolved "https://registry.npmmirror.com/@types/koa-mount/-/koa-mount-4.0.5.tgz#63f99d513a78dc9f13fb9a2dab75d9ff4a2050cf" + integrity sha512-pV1njJ7r94iqAFzT9D5sGSYKUHFGudCLAnmr4WFli7V5tJf5MAgRQK9leTPJ4gjvgr+hnTf86fZsKoFN358c7w== + dependencies: + "@types/koa" "*" + +"@types/koa-router@^7.4.8": + version "7.4.8" + resolved "https://registry.npmmirror.com/@types/koa-router/-/koa-router-7.4.8.tgz#471d0c9c20d4caa05721b50b0ae4d08c22a7cb03" + integrity sha512-SkWlv4F9f+l3WqYNQHnWjYnyTxYthqt8W9az2RTdQW7Ay8bc00iRZcrb8MC75iEfPqnGcg2csEl8tTG1NQPD4A== + dependencies: + "@types/koa" "*" + +"@types/koa-send@*": + version "4.1.6" + resolved "https://registry.npmmirror.com/@types/koa-send/-/koa-send-4.1.6.tgz#15d90e95e3ccce669a15b6a3c56c3a650a167cea" + integrity sha512-vgnNGoOJkx7FrF0Jl6rbK1f8bBecqAchKpXtKuXzqIEdXTDO6dsSTjr+eZ5m7ltSjH4K/E7auNJEQCAd0McUPA== + dependencies: + "@types/koa" "*" + +"@types/koa-static@^4.0.4": + version "4.0.4" + resolved "https://registry.npmmirror.com/@types/koa-static/-/koa-static-4.0.4.tgz#ce6f2a5d14cc7ef19f9bf6ee8e4f3eadfcc77323" + integrity sha512-j1AUzzl7eJYEk9g01hNTlhmipFh8RFbOQmaMNLvLcNNAkPw0bdTs3XTa3V045XFlrWN0QYnblbDJv2RzawTn6A== + dependencies: + "@types/koa" "*" + "@types/koa-send" "*" + +"@types/koa@*", "@types/koa@^2.15.0": + version "2.15.0" + resolved "https://registry.npmmirror.com/@types/koa/-/koa-2.15.0.tgz#eca43d76f527c803b491731f95df575636e7b6f2" + integrity sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/lodash@^4.17.14": + version "4.17.14" + resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.14.tgz#bafc053533f4cdc5fcc9635af46a963c1f3deaff" + integrity sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + "@types/node@*": version "17.0.33" resolved "https://registry.npmmirror.com/@types/node/-/node-17.0.33.tgz#3c1879b276dc63e73030bb91165e62a4509cd506" integrity sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ== +"@types/qs@*": + version "6.9.18" + resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2" + integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.npmmirror.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.7" + resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + "@types/yaml@^1.9.7": version "1.9.7" resolved "https://registry.npmmirror.com/@types/yaml/-/yaml-1.9.7.tgz#2331f36e0aac91311a63d33eb026c21687729679" @@ -251,6 +537,73 @@ dependencies: yaml "*" +"@volar/language-core@2.4.11", "@volar/language-core@~2.4.11": + version "2.4.11" + resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.11.tgz#d95a9ec4f14fbdb41a6a64f9f321d11d23a5291c" + integrity sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg== + dependencies: + "@volar/source-map" "2.4.11" + +"@volar/source-map@2.4.11": + version "2.4.11" + resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.11.tgz#5876d4531508129724c2755e295db1df98bd5895" + integrity sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ== + +"@volar/typescript@^2.4.11": + version "2.4.11" + resolved "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.11.tgz#aafbfa413337654db211bf4d8fb6670c89f6fa57" + integrity sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw== + dependencies: + "@volar/language-core" "2.4.11" + path-browserify "^1.0.1" + vscode-uri "^3.0.8" + +"@vue/compiler-core@3.5.13": + version "3.5.13" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz#b0ae6c4347f60c03e849a05d34e5bf747c9bda05" + integrity sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q== + dependencies: + "@babel/parser" "^7.25.3" + "@vue/shared" "3.5.13" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.2.0" + +"@vue/compiler-dom@^3.5.0": + version "3.5.13" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz#bb1b8758dbc542b3658dda973b98a1c9311a8a58" + integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA== + dependencies: + "@vue/compiler-core" "3.5.13" + "@vue/shared" "3.5.13" + +"@vue/compiler-vue2@^2.7.16": + version "2.7.16" + resolved "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz#2ba837cbd3f1b33c2bc865fbe1a3b53fb611e249" + integrity sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A== + dependencies: + de-indent "^1.0.2" + he "^1.2.0" + +"@vue/language-core@2.2.0": + version "2.2.0" + resolved "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.0.tgz#e48c54584f889f78b120ce10a050dfb316c7fcdf" + integrity sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw== + dependencies: + "@volar/language-core" "~2.4.11" + "@vue/compiler-dom" "^3.5.0" + "@vue/compiler-vue2" "^2.7.16" + "@vue/shared" "^3.5.0" + alien-signals "^0.4.9" + minimatch "^9.0.3" + muggle-string "^0.4.1" + path-browserify "^1.0.1" + +"@vue/shared@3.5.13", "@vue/shared@^3.5.0": + version "3.5.13" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f" + integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ== + accepts@^1.3.5: version "1.3.8" resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -259,11 +612,90 @@ accepts@^1.3.5: mime-types "~2.1.34" negotiator "0.6.3" +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +ajv-draft-04@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz#3b64761b268ba0b9e668f0b41ba53fce0ad77fc8" + integrity sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw== + +ajv-formats@~3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" + integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== + dependencies: + ajv "^8.0.0" + +ajv@^8.0.0: + version "8.17.1" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ajv@~8.12.0: + version "8.12.0" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@~8.13.0: + version "8.13.0" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +alien-signals@^0.4.9: + version "0.4.14" + resolved "https://registry.npmmirror.com/alien-signals/-/alien-signals-0.4.14.tgz#9ff8f72a272300a51692f54bd9bbbada78fbf539" + integrity sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q== + append-field@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== +argparse@~1.0.9: + version "1.0.10" + resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -312,6 +744,16 @@ co@^4.6.0: resolved "https://registry.npmmirror.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== +compare-versions@^6.1.1: + version "6.1.1" + resolved "https://registry.npmmirror.com/compare-versions/-/compare-versions-6.1.1.tgz#7af3cc1099ba37d244b3145a9af5201b629148a9" + integrity sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" @@ -322,6 +764,11 @@ concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" +confbox@^0.1.8: + version "0.1.8" + resolved "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06" + integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== + content-disposition@~0.5.2: version "0.5.4" resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -357,6 +804,11 @@ dayjs@^1.11.3: resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.3.tgz#4754eb694a624057b9ad2224b67b15d552589258" integrity sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A== +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + debug@^3.1.0: version "3.2.7" resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -371,6 +823,13 @@ debug@^4.0.1, debug@^4.1.1, debug@^4.3.2: dependencies: ms "2.1.2" +debug@^4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -406,6 +865,11 @@ encodeurl@^1.0.2: resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +entities@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + esbuild@^0.24.2: version "0.24.2" resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" @@ -442,6 +906,21 @@ escape-html@^1.0.3: resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-uri@^3.0.1: + version "3.0.5" + resolved "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.5.tgz#19f5f9691d0dab9b85861a7bb5d98fca961da9cd" + integrity sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q== + formidable@^1.1.1: version "1.2.6" resolved "https://registry.npmmirror.com/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168" @@ -452,6 +931,15 @@ fresh@~0.5.2: resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-extra@~7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -462,6 +950,11 @@ function-bind@^1.1.1: resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + get-intrinsic@^1.0.2: version "1.1.1" resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -471,6 +964,16 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.11" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.3" resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -490,6 +993,18 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + http-assert@^1.3.0: version "1.5.0" resolved "https://registry.npmmirror.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" @@ -537,6 +1052,11 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +import-lazy@~4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + inflation@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/inflation/-/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f" @@ -552,6 +1072,13 @@ inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" @@ -564,6 +1091,23 @@ isarray@~1.0.0: resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +jju@~1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + keygrip@~1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" @@ -658,7 +1202,20 @@ koa@^2.13.4: type-is "^1.6.16" vary "^1.1.2" -lodash@^4.17.21: +kolorist@^1.8.0: + version "1.8.0" + resolved "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c" + integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== + +local-pkg@^0.5.1: + version "0.5.1" + resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.1.tgz#69658638d2a95287534d4c2fff757980100dbb6d" + integrity sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ== + dependencies: + mlly "^1.7.3" + pkg-types "^1.2.1" + +lodash@^4.17.21, lodash@~4.17.15: version "4.17.21" resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -670,6 +1227,20 @@ lowdb@^3.0.0: dependencies: steno "^2.1.0" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.30.17: + version "0.30.17" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -692,6 +1263,20 @@ mime-types@^2.1.18, mime-types@~2.1.24, mime-types@~2.1.34: dependencies: mime-db "1.52.0" +minimatch@^9.0.3: + version "9.0.5" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@~3.0.3: + version "3.0.8" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" + integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.6: version "1.2.6" resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" @@ -704,16 +1289,31 @@ mkdirp@^0.5.4: dependencies: minimist "^1.2.6" +mlly@^1.7.3, mlly@^1.7.4: + version "1.7.4" + resolved "https://registry.npmmirror.com/mlly/-/mlly-1.7.4.tgz#3d7295ea2358ec7a271eaa5d000a0f84febe100f" + integrity sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw== + dependencies: + acorn "^8.14.0" + pathe "^2.0.1" + pkg-types "^1.3.0" + ufo "^1.5.4" + ms@2.1.2: version "2.1.2" resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +muggle-string@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328" + integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ== + multer@^1.4.5-lts.1: version "1.4.5-lts.1" resolved "https://registry.npmmirror.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" @@ -769,21 +1369,50 @@ parseurl@^1.3.2: resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-is-absolute@1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + path-to-regexp@^6.1.0: version "6.2.1" resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== +pathe@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/pathe/-/pathe-2.0.2.tgz#5ed86644376915b3c7ee4d00ac8c348d671da3a5" + integrity sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w== + picocolors@^1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + +pkg-types@^1.2.1, pkg-types@^1.3.0: + version "1.3.1" + resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz#bd7cc70881192777eef5326c19deb46e890917df" + integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ== + dependencies: + confbox "^0.1.8" + mlly "^1.7.4" + pathe "^2.0.1" + postcss@^8.4.49: version "8.5.1" resolved "https://registry.npmmirror.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" @@ -798,6 +1427,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + qs@^6.4.0: version "6.10.3" resolved "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" @@ -828,6 +1462,11 @@ readable-stream@^2.2.2: string_decoder "~1.1.1" util-deprecate "~1.0.1" +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + resolve-path@^1.4.0: version "1.4.0" resolved "https://registry.npmmirror.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" @@ -836,6 +1475,15 @@ resolve-path@^1.4.0: http-errors "~1.6.2" path-is-absolute "1.0.1" +resolve@~1.22.1, resolve@~1.22.2: + version "1.22.10" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + rollup@^4.23.0: version "4.30.1" resolved "https://registry.npmmirror.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" @@ -879,6 +1527,13 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +semver@~7.5.4: + version "7.5.4" + resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -898,11 +1553,21 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -source-map-js@^1.2.1: +source-map-js@^1.2.0, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + statuses@2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -923,6 +1588,11 @@ streamsearch@^1.1.0: resolved "https://registry.npmmirror.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +string-argv@~0.3.1: + version "0.3.2" + resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -930,6 +1600,23 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-json-comments@~3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@~8.1.1: + version "8.1.1" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + toidentifier@1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" @@ -953,11 +1640,33 @@ typedarray@^0.0.6: resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typescript@5.7.2: + version "5.7.2" + resolved "https://registry.npmmirror.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + +ufo@^1.5.4: + version "1.5.4" + resolved "https://registry.npmmirror.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754" + integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== +uri-js@^4.2.2, uri-js@^4.4.1: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -973,6 +1682,21 @@ vary@^1.1.2: resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vite-plugin-dts@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/vite-plugin-dts/-/vite-plugin-dts-4.5.0.tgz#a83899470dc3d423298755b615f1279abd49e0ac" + integrity sha512-M1lrPTdi7gilLYRZoLmGYnl4fbPryVYsehPN9JgaxjJKTs8/f7tuAlvCCvOLB5gRDQTTKnptBcB0ACsaw2wNLw== + dependencies: + "@microsoft/api-extractor" "^7.49.1" + "@rollup/pluginutils" "^5.1.4" + "@volar/typescript" "^2.4.11" + "@vue/language-core" "2.2.0" + compare-versions "^6.1.1" + debug "^4.4.0" + kolorist "^1.8.0" + local-pkg "^0.5.1" + magic-string "^0.30.17" + vite@^6.0.7: version "6.0.7" resolved "https://registry.npmmirror.com/vite/-/vite-6.0.7.tgz#f0f8c120733b04af52b4a1e3e7cb54eb851a799b" @@ -984,11 +1708,21 @@ vite@^6.0.7: optionalDependencies: fsevents "~2.3.3" +vscode-uri@^3.0.8: + version "3.0.8" + resolved "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f" + integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== + xtend@^4.0.0: version "4.0.2" resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yaml@*, yaml@^2.1.1: version "2.1.1" resolved "https://registry.npmmirror.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec"