diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..afc2dd9 --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +POSTGRES_USER=postgres +POSTGRES_PASSWORD=postgres +POSTGRES_HOST=localhost +POSTGRES_PORT=5432 +POSTGRES_DB=postgres diff --git a/.gitignore b/.gitignore index eae58d7..d4f23be 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,7 @@ cache-file /apps -logs \ No newline at end of file +logs + +.env* +!.env.example \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..1ceefa8 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# router app template diff --git a/cmd/index.ts b/cmd/index.ts new file mode 100644 index 0000000..649f291 --- /dev/null +++ b/cmd/index.ts @@ -0,0 +1,12 @@ +import { program } from './program.ts'; +import { Command } from 'commander'; + +program.version('1.0.0'); + +program.addCommand( + new Command('test').action(() => { + console.log('test'); + }), +); + +program.parse(process.argv); diff --git a/cmd/program.ts b/cmd/program.ts new file mode 100644 index 0000000..df64302 --- /dev/null +++ b/cmd/program.ts @@ -0,0 +1,3 @@ +import { program } from 'commander'; + +export { program }; diff --git a/package.json b/package.json index a6450b7..d5108b4 100644 --- a/package.json +++ b/package.json @@ -1,72 +1,82 @@ { - "name": "demo-app", - "version": "0.0.1", - "description": "", - "main": "index.js", - "app": { - "key": "demo-app", - "entry": "dist/app.mjs", - "type": "system-app", - "files": [ - "dist" - ] - }, - "scripts": { - "watch": "rollup -c rollup.config.mjs -w", - "build": "rollup -c rollup.config.mjs", - "dev": "cross-env NODE_ENV=development nodemon --delay 2.5 -e js,cjs,mjs --exec node dist/app.mjs", - "test": "tsx test/**/*.ts", - "dev:watch": "cross-env NODE_ENV=development concurrently -n \"Watch,Dev\" -c \"green,blue\" \"npm run watch\" \"sleep 1 && npm run dev\" ", - "clean": "rm -rf dist", - "prepub": "envision switch root", - "pub": "npm run build && envision pack -p -u" - }, - "keywords": [], - "author": "abearxiong ", - "license": "MIT", - "type": "module", - "types": "types/index.d.ts", - "files": [ - "types", - "dist", - "src" - ], - "dependencies": { - "@kevisual/code-center-module": "0.0.18", - "@kevisual/mark": "0.0.7", - "@kevisual/router": "0.0.10", - "cookie": "^1.0.2", - "dayjs": "^1.11.13", - "formidable": "^3.5.2", - "json5": "^2.2.3", - "lodash-es": "^4.17.21" - }, - "devDependencies": { - "@kevisual/types": "^0.0.6", - "@kevisual/use-config": "^1.0.10", - "@rollup/plugin-alias": "^5.1.1", - "@rollup/plugin-commonjs": "^28.0.3", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^16.0.1", - "@rollup/plugin-replace": "^6.0.2", - "@rollup/plugin-typescript": "^12.1.2", - "@types/crypto-js": "^4.2.2", - "@types/formidable": "^3.4.5", - "@types/lodash-es": "^4.17.12", - "@types/node": "^22.14.0", - "concurrently": "^9.1.2", - "cross-env": "^7.0.3", - "jsrepo": "^1.45.3", - "nodemon": "^3.1.9", - "pm2": "^6.0.5", - "rimraf": "^6.0.1", - "rollup": "^4.39.0", - "rollup-plugin-copy": "^3.5.0", - "rollup-plugin-dts": "^6.2.1", - "rollup-plugin-esbuild": "^6.2.1", - "tape": "^5.9.0", - "tsx": "^4.19.3", - "typescript": "^5.8.2" - }, - "packageManager": "pnpm@10.7.1" + "name": "demo-app", + "version": "0.0.1", + "description": "", + "main": "index.js", + "basename": "/root/demo-app", + "app": { + "key": "demo-app", + "entry": "dist/app.mjs", + "type": "system-app", + "files": [ + "dist" + ] + }, + "scripts": { + "watch": "rollup -c rollup.config.mjs -w", + "build": "rollup -c rollup.config.mjs", + "dev": "cross-env NODE_ENV=development nodemon --delay 2.5 -e js,cjs,mjs --exec node dist/app.mjs", + "dev:watch": "cross-env NODE_ENV=development concurrently -n \"Watch,Dev\" -c \"green,blue\" \"npm run watch\" \"sleep 1 && npm run dev\" ", + "test": "tsx test/**/*.ts", + "clean": "rm -rf dist", + "pub": "npm run build && envision pack -p -u", + "cmd": "tsx cmd/index.ts " + }, + "keywords": [], + "author": "abearxiong ", + "license": "MIT", + "type": "module", + "types": "types/index.d.ts", + "files": [ + "dist", + "src" + ], + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@kevisual/code-center-module": "0.0.18", + "@kevisual/use-config": "^1.0.10", + "@kevisual/mark": "0.0.7", + "@kevisual/router": "0.0.10", + "cookie": "^1.0.2", + "dayjs": "^1.11.13", + "formidable": "^3.5.2", + "lodash-es": "^4.17.21" + }, + "devDependencies": { + "@kevisual/types": "^0.0.6", + "@kevisual/use-config": "^1.0.10", + "@rollup/plugin-alias": "^5.1.1", + "@rollup/plugin-commonjs": "^28.0.3", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.1", + "@rollup/plugin-replace": "^6.0.2", + "@rollup/plugin-typescript": "^12.1.2", + "@types/crypto-js": "^4.2.2", + "@types/formidable": "^3.4.5", + "@types/lodash-es": "^4.17.12", + "@types/node": "^22.14.0", + "commander": "^13.1.0", + "concurrently": "^9.1.2", + "cross-env": "^7.0.3", + "inquire": "^0.4.8", + "ioredis": "^5.6.0", + "jsrepo": "^1.45.3", + "nodemon": "^3.1.9", + "pg": "^8.14.1", + "pino": "^9.6.0", + "pino-pretty": "^13.0.0", + "pm2": "^6.0.5", + "rimraf": "^6.0.1", + "rollup": "^4.39.0", + "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-dts": "^6.2.1", + "rollup-plugin-esbuild": "^6.2.1", + "sequelize": "^6.37.7", + "tape": "^5.9.0", + "tsx": "^4.19.3", + "typescript": "^5.8.3" + }, + "packageManager": "pnpm@10.7.1" } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4bb7733..e48647c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,14 +9,17 @@ importers: .: dependencies: '@kevisual/code-center-module': - specifier: 0.0.13 - version: 0.0.13(@kevisual/auth@1.0.5)(@kevisual/router@0.0.9)(@kevisual/use-config@1.0.9)(ioredis@5.5.0)(pg@8.13.3)(sequelize@6.37.5(pg@8.13.3)) + specifier: 0.0.18 + version: 0.0.18(@kevisual/auth@1.0.5)(@kevisual/router@0.0.10)(@kevisual/use-config@1.0.10(dotenv@16.4.7))(ioredis@5.6.0)(pg@8.14.1)(sequelize@6.37.7(pg@8.14.1)) '@kevisual/mark': specifier: 0.0.7 - version: 0.0.7(esbuild@0.25.0) + version: 0.0.7(dotenv@16.4.7)(esbuild@0.25.0) '@kevisual/router': - specifier: 0.0.9 - version: 0.0.9 + specifier: 0.0.10 + version: 0.0.10 + '@kevisual/use-config': + specifier: ^1.0.10 + version: 1.0.10(dotenv@16.4.7) cookie: specifier: ^1.0.2 version: 1.0.2 @@ -26,9 +29,6 @@ importers: formidable: specifier: ^3.5.2 version: 3.5.2 - json5: - specifier: ^2.2.3 - version: 2.2.3 lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -36,27 +36,24 @@ importers: '@kevisual/types': specifier: ^0.0.6 version: 0.0.6 - '@kevisual/use-config': - specifier: ^1.0.9 - version: 1.0.9 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.35.0) + version: 5.1.1(rollup@4.39.0) '@rollup/plugin-commonjs': specifier: ^28.0.3 - version: 28.0.3(rollup@4.35.0) + version: 28.0.3(rollup@4.39.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.35.0) + version: 6.1.0(rollup@4.39.0) '@rollup/plugin-node-resolve': specifier: ^16.0.1 - version: 16.0.1(rollup@4.35.0) + version: 16.0.1(rollup@4.39.0) '@rollup/plugin-replace': specifier: ^6.0.2 - version: 6.0.2(rollup@4.35.0) + version: 6.0.2(rollup@4.39.0) '@rollup/plugin-typescript': specifier: ^12.1.2 - version: 12.1.2(rollup@4.35.0)(tslib@2.8.1)(typescript@5.8.2) + version: 12.1.2(rollup@4.39.0)(tslib@2.8.1)(typescript@5.8.3) '@types/crypto-js': specifier: ^4.2.2 version: 4.2.2 @@ -67,38 +64,59 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^22.13.10 - version: 22.13.10 + specifier: ^22.14.0 + version: 22.14.0 + commander: + specifier: ^13.1.0 + version: 13.1.0 concurrently: specifier: ^9.1.2 version: 9.1.2 cross-env: specifier: ^7.0.3 version: 7.0.3 + inquire: + specifier: ^0.4.8 + version: 0.4.8 + ioredis: + specifier: ^5.6.0 + version: 5.6.0 jsrepo: - specifier: ^1.44.2 - version: 1.44.2(typescript@5.8.2)(ws@8.18.0)(zod@3.24.2) + specifier: ^1.45.3 + version: 1.45.3(typescript@5.8.3)(ws@8.18.1)(zod@3.24.2) nodemon: specifier: ^3.1.9 version: 3.1.9 + pg: + specifier: ^8.14.1 + version: 8.14.1 + pino: + specifier: ^9.6.0 + version: 9.6.0 + pino-pretty: + specifier: ^13.0.0 + version: 13.0.0 pm2: - specifier: ^5.4.3 - version: 5.4.3 + specifier: ^6.0.5 + version: 6.0.5 rimraf: specifier: ^6.0.1 version: 6.0.1 rollup: - specifier: ^4.35.0 - version: 4.35.0 + specifier: ^4.39.0 + version: 4.39.0 rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 rollup-plugin-dts: - specifier: ^6.1.1 - version: 6.1.1(rollup@4.35.0)(typescript@5.8.2) + specifier: ^6.2.1 + version: 6.2.1(rollup@4.39.0)(typescript@5.8.3) rollup-plugin-esbuild: specifier: ^6.2.1 - version: 6.2.1(esbuild@0.25.0)(rollup@4.35.0) + version: 6.2.1(esbuild@0.25.0)(rollup@4.39.0) + sequelize: + specifier: ^6.37.7 + version: 6.37.7(pg@8.14.1) tape: specifier: ^5.9.0 version: 5.9.0 @@ -106,8 +124,8 @@ importers: specifier: ^4.19.3 version: 4.19.3 typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 packages: @@ -349,8 +367,8 @@ packages: '@kevisual/auth@1.0.5': resolution: {integrity: sha512-GwsLj7unKXi7lmMiIIgdig4LwwLiDJnOy15HHZR5gMbyK6s5/uJiMY5RXPB2+onGzTNDqFo/hXjsD2wkerHPVg==} - '@kevisual/code-center-module@0.0.13': - resolution: {integrity: sha512-A82sX8rdG2igyVLIF+0dagcUsGfk2b0JAga1BDDr9mrChrG1HbG1uYN7JJdjJbGE6zGYqGxRZwxKZmzB/+KMnw==} + '@kevisual/code-center-module@0.0.18': + resolution: {integrity: sha512-BfANmxLEO1AwVmqpa6VDgxk//YN8asf1r5jIPpyKDQm12kyyrYgHND9AgGCDRH8lvq6rYVe0svCZXD5b06UPWQ==} peerDependencies: '@kevisual/auth': ^1.0.5 '@kevisual/router': ^0.0.7 @@ -369,17 +387,19 @@ packages: resolution: {integrity: sha512-TdCN+IU0fyHudiiqYvobXQ8r5MltfM/cKmSS59iopyL8YYwXwcipOS4S24NWA79g7uwJfSUNk5lg3yVhom79fQ==} hasBin: true + '@kevisual/router@0.0.10': + resolution: {integrity: sha512-prQGiMIboQhDNN1Eubp8x7YDyRCmAsUqpHQwzfu9f7WvgisVWSLOWSaLbqjqNssV2xcc1DgVrHIKdLhbx8HCqQ==} + '@kevisual/router@0.0.7': resolution: {integrity: sha512-4n1Tp4YLoraJv7jtfy7jbuLGyAj0B2QkTlnlEDHCUTlEUOvOkjtf7DHAe2SL92fTgXhSbod0I/0vUcDF85oj/w==} - '@kevisual/router@0.0.9': - resolution: {integrity: sha512-qPyC2GVJ7iOIdJCCKNDsWMAKOQeSJW9HBpL5ZWKHTbi+t4jJBGTzIlXmjKeMHRd0lr/Qq1imQvlkSh4hlrbodA==} - '@kevisual/types@0.0.6': resolution: {integrity: sha512-7yxe1QmuC5g7lI/1Hm+zXly8if0z+ZqGM1SVOVv2VNRwRAVYBJDc365zWCCfRwE+5YaB2daWTe5zBOU4EkltkQ==} - '@kevisual/use-config@1.0.9': - resolution: {integrity: sha512-lJz98WWL178QUaf/rkM9feMm0aUnYd6ikm3ma/9Zi/K2QNrxbTRAgMGkCggUalAES8IbUvEsg+Q+Y2RaPLxCmw==} + '@kevisual/use-config@1.0.10': + resolution: {integrity: sha512-fH2B4BnR4+OjR3PzAegF8H9RJpyFZu6BnVDyfvSSZavZMurufkJ949jizoRde+bNAHff/PRcpa5EZg2imZNf1g==} + peerDependencies: + dotenv: ^16.4.7 '@ljharb/resumer@0.1.3': resolution: {integrity: sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw==} @@ -511,77 +531,73 @@ packages: resolution: {integrity: sha512-f386XyLTieQbgKPKS6ZMlH4dq8eLsxNddwofiKRZCq0bZ2gikoFwMD99K6l1oAwqe/KZNzrEziGicRgnzplplQ==} engines: {node: '>= 18'} - '@oxc-parser/binding-darwin-arm64@0.56.5': - resolution: {integrity: sha512-rj4WZqQVJQgLnGnDu2ciIOC5SqcBPc4x11RN0NwuedSGzny5mtBdNVLwt0+8iB15lIjrOKg5pjYJ8GQVPca5HA==} + '@oxc-parser/binding-darwin-arm64@0.60.0': + resolution: {integrity: sha512-JM+33rA+vA4vyGxwL0Xpy9H0lL5+EyLV8wrB0IPd5d+196aBfRDr1pX73oPSuXhzeQiRhzpBEsEtJYNgjvD7yQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.56.5': - resolution: {integrity: sha512-Rr7aMkqcxGIM6fgkpaj9SJj0u1O1g+AT7mJwmdi5PLSQRPR4CkDKfztEnAj5k+d2blWvh9nPZH8G0OCwxIHk1Q==} + '@oxc-parser/binding-darwin-x64@0.60.0': + resolution: {integrity: sha512-xG0t9PDCQvsOHyW9oebDJ3/PdusSDXPSW5HpAmD8ZFg3INMv86/2gOlgC6EbSwTjliYvjJjxqNyHacoCoaj3Rw==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] - '@oxc-parser/binding-linux-arm-gnueabihf@0.56.5': - resolution: {integrity: sha512-jcFCThrWUt5k1GM43tdmI1m2dEnWUPPHHTWKBJbZBXzXLrJJzkqv5OU87Spf1004rYj9swwpa13kIldFwMzglA==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.60.0': + resolution: {integrity: sha512-CTE6DHb3WV4lkA9YTOYJwj2m/C3TSKeReil7jLdYVU+MAnFXRKSXlcyrYxKBwv/XIRfiaC3dokHmta4aOuPOig==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.56.5': - resolution: {integrity: sha512-zo/9RDgWvugKxCpHHcAC5EW0AqoEvODJ4Iv4aT1Xonv6kcydbyPSXJBQhhZUvTXTAFIlQKl6INHl+Xki9Qs3fw==} + '@oxc-parser/binding-linux-arm64-gnu@0.60.0': + resolution: {integrity: sha512-vEDdwqc4QcPIEJYws6IZND7I7jMGvg+dKv/IThcI4gLA19aTOG1nxaUtNde9rlhUQr0eUVerTRPY9suMBBxxpg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] - '@oxc-parser/binding-linux-arm64-musl@0.56.5': - resolution: {integrity: sha512-SCIqrL5apVbrtMoqOpKX/Ez+c46WmW0Tyhtu+Xby281biH+wYu70m+fux9ZsGmbHc2ojd4FxUcaUdCZtb5uTOQ==} + '@oxc-parser/binding-linux-arm64-musl@0.60.0': + resolution: {integrity: sha512-XRCvh7PWOH9FZnhPFoX7pDwYCTtouuyCDVaQGx1tWYdTmFrN/lY7HKuw6HEiQYyPmSJc0I3/tiuj0WQann3O9g==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] - libc: [musl] - '@oxc-parser/binding-linux-x64-gnu@0.56.5': - resolution: {integrity: sha512-I2mpX35NWo83hay4wrnzFLk3VuGK1BBwHaqvEdqsCode8iG8slYJRJPICVbCEWlkR3rotlTQ+608JcRU0VqZ5Q==} + '@oxc-parser/binding-linux-x64-gnu@0.60.0': + resolution: {integrity: sha512-Oi2TG4Ck61zXQErbuni7/WQbVxO7A5adPpzYYBakinNerbLKuPyLqcWamItqOimo8GFRAcT7dEqZ0w7sKR0MKw==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] - libc: [glibc] - '@oxc-parser/binding-linux-x64-musl@0.56.5': - resolution: {integrity: sha512-xfzUHGYOh3PGWZdBuY5r1czvE8EGWPAmhTWHqkw3/uAfUVWN/qrrLjMojiaiWyUgl/9XIFg05m5CJH9dnngh5Q==} + '@oxc-parser/binding-linux-x64-musl@0.60.0': + resolution: {integrity: sha512-gGB1L3DngjCIg4CdGIBc5i1nfQgW33OBLoxgu3woHIrJh+kNll5kcQVhK5nPO9YKWlVw5Holbkk8qUd/q0lJQA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] - libc: [musl] - '@oxc-parser/binding-wasm32-wasi@0.56.5': - resolution: {integrity: sha512-+z3Ofmc1v5kcu8fXgG5vn7T1f52P47ceTTmTXsm5HPY7rq5EMYRUaBnxH6cesXwY1OVVCwYlIZbCiy8Pm1w8zQ==} + '@oxc-parser/binding-wasm32-wasi@0.60.0': + resolution: {integrity: sha512-Of/f5N+Iv9h2fSy0sUILIbHGlTO0nV8TiTg53jDd1+JPew6tScXCnKH/ki2E/9jgRrAKx6uBy0msUvCZtNdVeQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-parser/binding-win32-arm64-msvc@0.56.5': - resolution: {integrity: sha512-pRg8QrbMh8PgnXBreiONoJBR306u+JN19BXQC7oKIaG4Zxt9Mn8XIyuhUv3ytqjLudSiG2ERWQUoCGLs+yfW0A==} + '@oxc-parser/binding-win32-arm64-msvc@0.60.0': + resolution: {integrity: sha512-g99wu4flLjm1af/7UvxPG0J8MUc0qUESOKLei2Bi31L2Rv5zcL/muflBzs5SUXPvEtJx3c1PI9lQtn1wyqmClg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.56.5': - resolution: {integrity: sha512-VALZNcuyw/6rwsxOACQ2YS6rey2d/ym4cNfXqJrHB/MZduAPj4xvij72gHGu3Ywm31KVGLVWk/mrMRiM9CINcA==} + '@oxc-parser/binding-win32-x64-msvc@0.60.0': + resolution: {integrity: sha512-u8ZrQx3vbXUu8m25eJMrtY42upT4AROhtP5LwwPHyG5qd8sCPmUTjJZUOs9QlsE6ANWWZjHIL/7IIRar4uUFtQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] - '@oxc-project/types@0.56.5': - resolution: {integrity: sha512-skY3kOJwp22W4RkaadH1hZ3hqFHjkRrIIE0uQ4VUg+/Chvbl+2pF+B55IrIk2dgsKXS57YEUsJuN6I6s4rgFjA==} + '@oxc-project/types@0.60.0': + resolution: {integrity: sha512-prhfNnb3ATFHOCv7mzKFfwLij5RzoUz6Y1n525ZhCEqfq5wreCXL+DyVoq3ShukPo7q45ZjYIdjFUgjj+WKzng==} - '@pm2/agent@2.0.4': - resolution: {integrity: sha512-n7WYvvTJhHLS2oBb1PjOtgLpMhgImOq8sXkPBw6smeg9LJBWZjiEgPKOpR8mn9UJZsB5P3W4V/MyvNnp31LKeA==} + '@pm2/agent@2.1.1': + resolution: {integrity: sha512-0V9ckHWd/HSC8BgAbZSoq8KXUG81X97nSkAxmhKDhmF8vanyaoc1YXwc2KVkbWz82Rg4gjd2n9qiT3i7bdvGrQ==} - '@pm2/io@6.0.1': - resolution: {integrity: sha512-KiA+shC6sULQAr9mGZ1pg+6KVW9MF8NpG99x26Lf/082/Qy8qsTCtnJy+HQReW1A9Rdf0C/404cz0RZGZro+IA==} + '@pm2/io@6.1.0': + resolution: {integrity: sha512-IxHuYURa3+FQ6BKePlgChZkqABUKFYH6Bwbw7V/pWU1pP6iR1sCI26l7P9ThUEB385ruZn/tZS3CXDUF5IA1NQ==} engines: {node: '>=6.0'} '@pm2/js-api@0.8.0': @@ -667,108 +683,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.35.0': - resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} + '@rollup/rollup-android-arm-eabi@4.39.0': + resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.35.0': - resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} + '@rollup/rollup-android-arm64@4.39.0': + resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.35.0': - resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} + '@rollup/rollup-darwin-arm64@4.39.0': + resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.35.0': - resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} + '@rollup/rollup-darwin-x64@4.39.0': + resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.35.0': - resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} + '@rollup/rollup-freebsd-arm64@4.39.0': + resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.35.0': - resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} + '@rollup/rollup-freebsd-x64@4.39.0': + resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.35.0': - resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} + '@rollup/rollup-linux-arm-gnueabihf@4.39.0': + resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} cpu: [arm] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.35.0': - resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} + '@rollup/rollup-linux-arm-musleabihf@4.39.0': + resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} cpu: [arm] os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.35.0': - resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} + '@rollup/rollup-linux-arm64-gnu@4.39.0': + resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} cpu: [arm64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.35.0': - resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} + '@rollup/rollup-linux-arm64-musl@4.39.0': + resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} cpu: [arm64] os: [linux] - libc: [musl] - '@rollup/rollup-linux-loongarch64-gnu@4.35.0': - resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} + '@rollup/rollup-linux-loongarch64-gnu@4.39.0': + resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} cpu: [loong64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': - resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} + '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': + resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} cpu: [ppc64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.35.0': - resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} + '@rollup/rollup-linux-riscv64-gnu@4.39.0': + resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} cpu: [riscv64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.35.0': - resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} + '@rollup/rollup-linux-riscv64-musl@4.39.0': + resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.39.0': + resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} cpu: [s390x] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.35.0': - resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} + '@rollup/rollup-linux-x64-gnu@4.39.0': + resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} cpu: [x64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.35.0': - resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} + '@rollup/rollup-linux-x64-musl@4.39.0': + resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} cpu: [x64] os: [linux] - libc: [musl] - '@rollup/rollup-win32-arm64-msvc@4.35.0': - resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} + '@rollup/rollup-win32-arm64-msvc@4.39.0': + resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.35.0': - resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} + '@rollup/rollup-win32-ia32-msvc@4.39.0': + resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.35.0': - resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} + '@rollup/rollup-win32-x64-msvc@4.39.0': + resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} cpu: [x64] os: [win32] @@ -808,6 +819,9 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/formidable@3.4.5': resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} @@ -838,8 +852,8 @@ packages: '@types/node@18.19.80': resolution: {integrity: sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==} - '@types/node@22.13.10': - resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -984,6 +998,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + atomically@2.0.3: resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} @@ -1106,6 +1124,9 @@ packages: colorette@1.4.0: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1189,6 +1210,9 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -1271,6 +1295,10 @@ packages: resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + dotignore@0.1.2: resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} hasBin: true @@ -1294,6 +1322,9 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} @@ -1374,8 +1405,8 @@ packages: engines: {node: '>=4'} hasBin: true - esrap@1.4.5: - resolution: {integrity: sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==} + esrap@1.4.6: + resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==} estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} @@ -1398,9 +1429,6 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - eventemitter2@0.4.14: - resolution: {integrity: sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==} - eventemitter2@5.0.1: resolution: {integrity: sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==} @@ -1420,6 +1448,9 @@ packages: fast-content-type-parse@2.0.1: resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1430,6 +1461,13 @@ packages: fast-json-patch@3.1.1: resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -1625,6 +1663,9 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + hexoid@2.0.0: resolution: {integrity: sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==} engines: {node: '>=8'} @@ -1673,12 +1714,16 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + inquire@0.4.8: + resolution: {integrity: sha512-up9ueqKwPnuitvEqyOxBU1ggima7YsUywI00qEnYVnor9IissXbltZ86xi4VXKkci0/qWAtfMP/nu4oR4fUaEQ==} + engines: {node: '>=0.8.22'} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - ioredis@5.5.0: - resolution: {integrity: sha512-7CutT89g23FfSa8MDoIFs2GYYa0PaNiW/OrT+nRyjRXHDZd17HmIgy+reOQ/yhh72NznNjGuS8kbCAcA4Ro4mw==} + ioredis@5.6.0: + resolution: {integrity: sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==} engines: {node: '>=12.22.0'} ip-address@9.0.5: @@ -1828,6 +1873,10 @@ packages: resolution: {integrity: sha512-oSwM7q8PTHQWuZAlp995iPpPJ4Vkl7qT0ZRD+9duL9j2oBy6KcTfyxc8mEuHJYC+z/kbps80aJLkaNzTOrf/kw==} engines: {node: 20 || >=22} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-git@0.7.8: resolution: {integrity: sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==} @@ -1850,22 +1899,13 @@ packages: json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsrepo@1.44.2: - resolution: {integrity: sha512-HWs34pXYjI4/c/T8pDPyyKJvjEKRq1ANgTy8OkGi4cHFCMsBgVtFKO/bL9DbD2NkGKk5h/q8KdHTQupXkVzDlw==} + jsrepo@1.45.3: + resolution: {integrity: sha512-+eHkKSyrFJcJ0N/H57QAH3OsDja0T3zPN8DEti2ZyBL/4CZq/iR/BcEgyNgV2bFUvbR9/nUYbA33cgtztiQRsA==} hasBin: true - lazy@1.0.11: - resolution: {integrity: sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==} - engines: {node: '>=0.2.0'} - locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -1971,6 +2011,11 @@ packages: engines: {node: ^18 || >=20} hasBin: true + nanoid@5.1.5: + resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} + engines: {node: ^18 || >=20} + hasBin: true + needle@2.4.0: resolution: {integrity: sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==} engines: {node: '>= 4.4.x'} @@ -2018,10 +2063,6 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} - nssocket@0.6.0: - resolution: {integrity: sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==} - engines: {node: '>= 0.10.x'} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2049,11 +2090,15 @@ packages: ollama@0.5.14: resolution: {integrity: sha512-pvOuEYa2WkkAumxzJP0RdEYHkbZ64AYyyUszXVX7ruLvk5L+EiO2G71da2GqEQ4IAk4j6eLoUbGk5arzFT1wJA==} + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - openai@4.87.3: - resolution: {integrity: sha512-d2D54fzMuBYTxMW8wcNmhT1rYKcTfMJ8t+4KjH2KtvYenygITiGBgHoIrzHwnDQWW+C5oCA+ikIR2jgPCFqcKQ==} + openai@4.91.1: + resolution: {integrity: sha512-DbjrR0hIMQFbxz8+3qBsfPJnh3+I/skPgoSlT7f9eiZuhGBUissPQULNgx6gHNkLoZ3uS0uYS6eXPUdtg4nHzw==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -2068,8 +2113,8 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - oxc-parser@0.56.5: - resolution: {integrity: sha512-MNT32sqiTFeSbQZP2WZIRQ/mlIpNNq4sua+/4hBG4qT5aef2iQe+1/BjezZURPlvucZeSfN1Y6b60l7OgBdyUA==} + oxc-parser@0.60.0: + resolution: {integrity: sha512-eHNTOMugA/JiZRi8MZ3nFNcK6Acab9Lt78GTzehge/a/L0wUTgAu4mcp6jdcaPopnn+di8AAAgMyGfiRCq5VIw==} engines: {node: '>=14.0.0'} pac-proxy-agent@7.2.0: @@ -2083,8 +2128,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.0.0: - resolution: {integrity: sha512-7elnH+9zMsRo7aS72w6MeRugTpdRvInmEB4Kmm9BVvPw/SLG8gXUGQ+4wF0Mys0RSWPz0B9nuBbDe8vFeA2sfg==} + package-manager-detector@1.1.0: + resolution: {integrity: sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==} pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -2136,20 +2181,20 @@ packages: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-pool@3.7.1: - resolution: {integrity: sha512-xIOsFoh7Vdhojas6q3596mXFsR8nwBQBXX5JiV7p9buEVAGqYL4yFzclON5P9vFrpu1u7Zwl2oriyDa89n0wbw==} + pg-pool@3.8.0: + resolution: {integrity: sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==} peerDependencies: pg: '>=8.0' - pg-protocol@1.7.1: - resolution: {integrity: sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==} + pg-protocol@1.8.0: + resolution: {integrity: sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==} pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.13.3: - resolution: {integrity: sha512-P6tPt9jXbL9HVu/SSRERNYaYG++MjnscnegFh9pPHihfoBSujsrka0hyuymMzeJKFWrcG8wvCKy8rCe8e5nDUQ==} + pg@8.14.1: + resolution: {integrity: sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -2179,6 +2224,20 @@ packages: resolution: {integrity: sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w==} engines: {node: '>=10'} + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-pretty@13.0.0: + resolution: {integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==} + hasBin: true + + pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + + pino@9.6.0: + resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} + hasBin: true + pm2-axon-rpc@0.7.1: resolution: {integrity: sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==} engines: {node: '>=5'} @@ -2197,9 +2256,9 @@ packages: pm2-sysmonit@1.2.8: resolution: {integrity: sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==} - pm2@5.4.3: - resolution: {integrity: sha512-4/I1htIHzZk1Y67UgOCo4F1cJtas1kSds31N8zN0PybO230id1nigyjGuGFzUnGmUFPmrJ0On22fO1ChFlp7VQ==} - engines: {node: '>=12.0.0'} + pm2@6.0.5: + resolution: {integrity: sha512-+O43WPaEiwYbm6/XSpAOO1Rtya/Uof0n7x8hJZGfwIuepesNTIVArpZh4KqFfze0cvvqZMr0maTW3ifhvmyeMQ==} + engines: {node: '>=16.0.0'} hasBin: true possible-typed-array-names@1.1.0: @@ -2226,6 +2285,12 @@ packages: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} + prettier-plugin-svelte@3.3.3: + resolution: {integrity: sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier@3.5.3: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} @@ -2235,11 +2300,14 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} + process-warning@4.0.1: + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} + promptly@2.2.0: resolution: {integrity: sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==} - proxy-agent@6.3.1: - resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} + proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} engines: {node: '>= 14'} proxy-from-env@1.1.0: @@ -2248,9 +2316,15 @@ packages: pstree.remy@1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + read@1.0.7: resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} engines: {node: '>=0.8'} @@ -2259,6 +2333,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} @@ -2315,8 +2393,8 @@ packages: resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} engines: {node: '>=8.3'} - rollup-plugin-dts@6.1.1: - resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} + rollup-plugin-dts@6.2.1: + resolution: {integrity: sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==} engines: {node: '>=16'} peerDependencies: rollup: ^3.29.4 || ^4 @@ -2336,8 +2414,8 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.35.0: - resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} + rollup@4.39.0: + resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2365,12 +2443,19 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + selfsigned@2.4.1: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} @@ -2389,8 +2474,8 @@ packages: resolution: {integrity: sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==} engines: {node: '>= 10.0.0'} - sequelize@6.37.5: - resolution: {integrity: sha512-10WA4poUb3XWnUROThqL2Apq9C2NhyV1xHPMZuybNMCucDsbbFuKg51jhmyvvAUyUqCiimwTZamc3AHhMoBr2Q==} + sequelize@6.37.7: + resolution: {integrity: sha512-mCnh83zuz7kQxxJirtFD7q6Huy6liPanI67BSlbzSYgVNl5eXVdE2CN1FuAeZwG1SNpGsNRCV+bJAVVnykZAFA==} engines: {node: '>=10.0.0'} peerDependencies: ibm_db: '*' @@ -2506,6 +2591,9 @@ packages: resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2574,6 +2662,10 @@ packages: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + stubborn-fs@1.2.5: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} @@ -2593,8 +2685,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte@5.23.0: - resolution: {integrity: sha512-v0lL3NuKontiCxholEiAXCB+BYbndlKbwlDMK0DS86WgGELMJSpyqCSbJeMEMBDwOglnS7Ar2Rq0wwa/z2L8Vg==} + svelte@5.25.7: + resolution: {integrity: sha512-0fzXbXaKfSvFUs6Wxev2h4CoEhexZotbTF9EJ4+Cg7MHW64ZnZ9+xUedZyEpgj0Tt9HrYGv9aASHkqjn9b/cPw==} engines: {node: '>=18'} systeminformation@5.25.11: @@ -2607,6 +2699,9 @@ packages: resolution: {integrity: sha512-czbGgxSVwRlbB3Ly/aqQrNwrDAzKHDW/kVXegp4hSFmR2c8qqm3hCgZbUy1+3QAQFGhPDG7J56UsV1uNilBFCA==} hasBin: true + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2667,8 +2762,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript@5.8.2: - resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true @@ -2686,8 +2781,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} @@ -2711,8 +2806,8 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - valibot@1.0.0-rc.3: - resolution: {integrity: sha512-LT0REa7Iqx4QGcaHLiTiTkcmJqJ9QdpOy89HALFFBJgejTS64GQFRIbDF7e4f6pauQbo/myfKGmWXCLhMeM6+g==} + valibot@1.0.0: + resolution: {integrity: sha512-1Hc0ihzWxBar6NGeZv7fPLY0QuxFMyxwYR2sF1Blu7Wq7EnremwY2W02tit2ij2VJT8HcSkHAQqmFfl77f73Yw==} peerDependencies: typescript: '>=5' peerDependenciesMeta: @@ -2842,6 +2937,18 @@ packages: utf-8-validate: optional: true + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -3048,15 +3155,15 @@ snapshots: '@kevisual/auth@1.0.5': {} - '@kevisual/code-center-module@0.0.13(@kevisual/auth@1.0.5)(@kevisual/router@0.0.9)(@kevisual/use-config@1.0.9)(ioredis@5.5.0)(pg@8.13.3)(sequelize@6.37.5(pg@8.13.3))': + '@kevisual/code-center-module@0.0.18(@kevisual/auth@1.0.5)(@kevisual/router@0.0.10)(@kevisual/use-config@1.0.10(dotenv@16.4.7))(ioredis@5.6.0)(pg@8.14.1)(sequelize@6.37.7(pg@8.14.1))': dependencies: '@kevisual/auth': 1.0.5 - '@kevisual/router': 0.0.9 - '@kevisual/use-config': 1.0.9 - ioredis: 5.5.0 - nanoid: 5.1.2 - pg: 8.13.3 - sequelize: 6.37.5(pg@8.13.3) + '@kevisual/router': 0.0.10 + '@kevisual/use-config': 1.0.10(dotenv@16.4.7) + ioredis: 5.6.0 + nanoid: 5.1.5 + pg: 8.14.1 + sequelize: 6.37.7(pg@8.14.1) socket.io: 4.8.1 zod: 3.24.2 transitivePeerDependencies: @@ -3068,18 +3175,19 @@ snapshots: dependencies: eventemitter3: 5.0.1 - '@kevisual/mark@0.0.7(esbuild@0.25.0)': + '@kevisual/mark@0.0.7(dotenv@16.4.7)(esbuild@0.25.0)': dependencies: '@kevisual/auth': 1.0.5 '@kevisual/rollup-tools': 0.0.1(esbuild@0.25.0) '@kevisual/router': 0.0.7 - '@kevisual/use-config': 1.0.9 + '@kevisual/use-config': 1.0.10(dotenv@16.4.7) cookie: 1.0.2 nanoid: 5.1.2 - pg: 8.13.3 - sequelize: 6.37.5(pg@8.13.3) + pg: 8.14.1 + sequelize: 6.37.7(pg@8.14.1) transitivePeerDependencies: - bufferutil + - dotenv - esbuild - ibm_db - mariadb @@ -3095,27 +3203,36 @@ snapshots: '@kevisual/rollup-tools@0.0.1(esbuild@0.25.0)': dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.35.0) - '@rollup/plugin-commonjs': 28.0.3(rollup@4.35.0) - '@rollup/plugin-json': 6.1.0(rollup@4.35.0) - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.35.0) - '@rollup/plugin-replace': 6.0.2(rollup@4.35.0) - '@rollup/plugin-typescript': 12.1.2(rollup@4.35.0)(tslib@2.8.1)(typescript@5.8.2) - '@types/node': 22.13.10 + '@rollup/plugin-alias': 5.1.1(rollup@4.39.0) + '@rollup/plugin-commonjs': 28.0.3(rollup@4.39.0) + '@rollup/plugin-json': 6.1.0(rollup@4.39.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.39.0) + '@rollup/plugin-replace': 6.0.2(rollup@4.39.0) + '@rollup/plugin-typescript': 12.1.2(rollup@4.39.0)(tslib@2.8.1)(typescript@5.8.3) + '@types/node': 22.14.0 chalk: 5.4.1 commander: 12.1.0 glob: 11.0.1 - rollup: 4.35.0 + rollup: 4.39.0 rollup-plugin-copy: 3.5.0 - rollup-plugin-dts: 6.1.1(rollup@4.35.0)(typescript@5.8.2) - rollup-plugin-esbuild: 6.2.1(esbuild@0.25.0)(rollup@4.35.0) + rollup-plugin-dts: 6.2.1(rollup@4.39.0)(typescript@5.8.3) + rollup-plugin-esbuild: 6.2.1(esbuild@0.25.0)(rollup@4.39.0) rollup-plugin-inject: 3.0.2 tslib: 2.8.1 - typescript: 5.8.2 + typescript: 5.8.3 transitivePeerDependencies: - esbuild - supports-color + '@kevisual/router@0.0.10': + dependencies: + path-to-regexp: 8.2.0 + selfsigned: 2.4.1 + ws: 8.18.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@kevisual/router@0.0.7': dependencies: path-to-regexp: 8.2.0 @@ -3125,20 +3242,12 @@ snapshots: - bufferutil - utf-8-validate - '@kevisual/router@0.0.9': - dependencies: - path-to-regexp: 8.2.0 - selfsigned: 2.4.1 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - '@kevisual/types@0.0.6': {} - '@kevisual/use-config@1.0.9': + '@kevisual/use-config@1.0.10(dotenv@16.4.7)': dependencies: '@kevisual/load': 0.0.4 + dotenv: 16.4.7 '@ljharb/resumer@0.1.3': dependencies: @@ -3315,41 +3424,41 @@ snapshots: '@octokit/request-error': 6.1.7 '@octokit/webhooks-methods': 5.1.1 - '@oxc-parser/binding-darwin-arm64@0.56.5': + '@oxc-parser/binding-darwin-arm64@0.60.0': optional: true - '@oxc-parser/binding-darwin-x64@0.56.5': + '@oxc-parser/binding-darwin-x64@0.60.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.56.5': + '@oxc-parser/binding-linux-arm-gnueabihf@0.60.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.56.5': + '@oxc-parser/binding-linux-arm64-gnu@0.60.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.56.5': + '@oxc-parser/binding-linux-arm64-musl@0.60.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.56.5': + '@oxc-parser/binding-linux-x64-gnu@0.60.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.56.5': + '@oxc-parser/binding-linux-x64-musl@0.60.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.56.5': + '@oxc-parser/binding-wasm32-wasi@0.60.0': dependencies: '@napi-rs/wasm-runtime': 0.2.7 optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.56.5': + '@oxc-parser/binding-win32-arm64-msvc@0.60.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.56.5': + '@oxc-parser/binding-win32-x64-msvc@0.60.0': optional: true - '@oxc-project/types@0.56.5': {} + '@oxc-project/types@0.60.0': {} - '@pm2/agent@2.0.4': + '@pm2/agent@2.1.1': dependencies: async: 3.2.6 chalk: 3.0.0 @@ -3358,10 +3467,9 @@ snapshots: eventemitter2: 5.0.1 fast-json-patch: 3.1.1 fclone: 1.0.11 - nssocket: 0.6.0 pm2-axon: 4.0.1 pm2-axon-rpc: 0.7.1 - proxy-agent: 6.3.1 + proxy-agent: 6.4.0 semver: 7.5.4 ws: 7.5.10 transitivePeerDependencies: @@ -3369,7 +3477,7 @@ snapshots: - supports-color - utf-8-validate - '@pm2/io@6.0.1': + '@pm2/io@6.1.0': dependencies: async: 2.6.4 debug: 4.3.7 @@ -3400,13 +3508,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/plugin-alias@5.1.1(rollup@4.35.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.39.0)': optionalDependencies: - rollup: 4.35.0 + rollup: 4.39.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.35.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.3(picomatch@4.0.2) @@ -3414,113 +3522,116 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.35.0 + rollup: 4.39.0 - '@rollup/plugin-json@6.1.0(rollup@4.35.0)': + '@rollup/plugin-json@6.1.0(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) optionalDependencies: - rollup: 4.35.0 + rollup: 4.39.0 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.35.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.35.0 + rollup: 4.39.0 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.35.0)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.35.0 + rollup: 4.39.0 - '@rollup/plugin-replace@6.0.2(rollup@4.35.0)': + '@rollup/plugin-replace@6.0.2(rollup@4.39.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) magic-string: 0.30.17 optionalDependencies: - rollup: 4.35.0 + rollup: 4.39.0 - '@rollup/plugin-typescript@12.1.2(rollup@4.35.0)(tslib@2.8.1)(typescript@5.8.2)': + '@rollup/plugin-typescript@12.1.2(rollup@4.39.0)(tslib@2.8.1)(typescript@5.8.3)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.35.0) + '@rollup/pluginutils': 5.1.4(rollup@4.39.0) resolve: 1.22.10 - typescript: 5.8.2 + typescript: 5.8.3 optionalDependencies: - rollup: 4.35.0 + rollup: 4.39.0 tslib: 2.8.1 - '@rollup/pluginutils@5.1.4(rollup@4.35.0)': + '@rollup/pluginutils@5.1.4(rollup@4.39.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.35.0 + rollup: 4.39.0 - '@rollup/rollup-android-arm-eabi@4.35.0': + '@rollup/rollup-android-arm-eabi@4.39.0': optional: true - '@rollup/rollup-android-arm64@4.35.0': + '@rollup/rollup-android-arm64@4.39.0': optional: true - '@rollup/rollup-darwin-arm64@4.35.0': + '@rollup/rollup-darwin-arm64@4.39.0': optional: true - '@rollup/rollup-darwin-x64@4.35.0': + '@rollup/rollup-darwin-x64@4.39.0': optional: true - '@rollup/rollup-freebsd-arm64@4.35.0': + '@rollup/rollup-freebsd-arm64@4.39.0': optional: true - '@rollup/rollup-freebsd-x64@4.35.0': + '@rollup/rollup-freebsd-x64@4.39.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + '@rollup/rollup-linux-arm-gnueabihf@4.39.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.35.0': + '@rollup/rollup-linux-arm-musleabihf@4.39.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.35.0': + '@rollup/rollup-linux-arm64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.35.0': + '@rollup/rollup-linux-arm64-musl@4.39.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + '@rollup/rollup-linux-loongarch64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.35.0': + '@rollup/rollup-linux-riscv64-gnu@4.39.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.35.0': + '@rollup/rollup-linux-riscv64-musl@4.39.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.35.0': + '@rollup/rollup-linux-s390x-gnu@4.39.0': optional: true - '@rollup/rollup-linux-x64-musl@4.35.0': + '@rollup/rollup-linux-x64-gnu@4.39.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.35.0': + '@rollup/rollup-linux-x64-musl@4.39.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.35.0': + '@rollup/rollup-win32-arm64-msvc@4.39.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.35.0': + '@rollup/rollup-win32-ia32-msvc@4.39.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.39.0': optional: true '@sec-ant/readable-stream@0.4.1': {} @@ -3544,7 +3655,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.14.0 '@types/crypto-js@4.2.2': {} @@ -3554,18 +3665,20 @@ snapshots: '@types/estree@1.0.6': {} + '@types/estree@1.0.7': {} + '@types/formidable@3.4.5': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.14.0 '@types/fs-extra@8.1.5': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.14.0 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.13.10 + '@types/node': 22.14.0 '@types/lodash-es@4.17.12': dependencies: @@ -3579,20 +3692,20 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.14.0 form-data: 4.0.2 '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.14.0 '@types/node@18.19.80': dependencies: undici-types: 5.26.5 - '@types/node@22.13.10': + '@types/node@22.14.0': dependencies: - undici-types: 6.20.0 + undici-types: 6.21.0 '@types/resolve@1.20.2': {} @@ -3644,11 +3757,11 @@ snapshots: '@vue/shared': 3.5.13 csstype: 3.1.3 - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2))': + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))': dependencies: '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.8.2) + vue: 3.5.13(typescript@5.8.3) '@vue/shared@3.5.13': {} @@ -3752,6 +3865,8 @@ snapshots: asynckit@0.4.0: {} + atomic-sleep@1.0.0: {} + atomically@2.0.3: dependencies: stubborn-fs: 1.2.5 @@ -3874,6 +3989,8 @@ snapshots: colorette@1.4.0: {} + colorette@2.0.20: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -3961,6 +4078,8 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + dateformat@4.6.3: {} + dayjs@1.11.13: {} dayjs@1.8.36: {} @@ -4045,6 +4164,8 @@ snapshots: dependencies: type-fest: 4.37.0 + dotenv@16.4.7: {} + dotignore@0.1.2: dependencies: minimatch: 3.1.2 @@ -4065,12 +4186,16 @@ snapshots: emoji-regex@9.2.2: {} + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + engine.io-parser@5.2.3: {} engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 22.13.10 + '@types/node': 22.14.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -4226,7 +4351,7 @@ snapshots: esprima@4.0.1: {} - esrap@1.4.5: + esrap@1.4.6: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -4244,8 +4369,6 @@ snapshots: event-target-shim@5.0.1: {} - eventemitter2@0.4.14: {} - eventemitter2@5.0.1: {} eventemitter2@6.4.9: {} @@ -4275,6 +4398,8 @@ snapshots: fast-content-type-parse@2.0.1: {} + fast-copy@3.0.2: {} + fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -4287,6 +4412,10 @@ snapshots: fast-json-patch@3.1.1: {} + fast-redact@3.5.0: {} + + fast-safe-stringify@2.1.1: {} + fast-uri@3.0.6: {} fastq@1.19.0: @@ -4498,6 +4627,8 @@ snapshots: dependencies: function-bind: 1.1.2 + help-me@5.0.0: {} + hexoid@2.0.0: {} http-proxy-agent@7.0.2: @@ -4541,13 +4672,15 @@ snapshots: ini@1.3.8: {} + inquire@0.4.8: {} + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.1.0 - ioredis@5.5.0: + ioredis@5.6.0: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 @@ -4708,6 +4841,8 @@ snapshots: dependencies: '@isaacs/cliui': 8.0.2 + joycon@3.1.1: {} + js-git@0.7.8: dependencies: bodec: 0.1.0 @@ -4731,13 +4866,11 @@ snapshots: json-stringify-safe@5.0.1: optional: true - json5@2.2.3: {} - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - jsrepo@1.44.2(typescript@5.8.2)(ws@8.18.0)(zod@3.24.2): + jsrepo@1.45.3(typescript@5.8.3)(ws@8.18.1)(zod@3.24.2): dependencies: '@anthropic-ai/sdk': 0.39.0 '@biomejs/js-api': 0.7.1(@biomejs/wasm-nodejs@1.9.4) @@ -4758,18 +4891,19 @@ snapshots: node-fetch: 3.3.2 octokit: 4.1.2 ollama: 0.5.14 - openai: 4.87.3(ws@8.18.0)(zod@3.24.2) - oxc-parser: 0.56.5 - package-manager-detector: 1.0.0 + openai: 4.91.1(ws@8.18.1)(zod@3.24.2) + oxc-parser: 0.60.0 + package-manager-detector: 1.1.0 parse5: 7.2.1 pathe: 2.0.3 prettier: 3.5.3 + prettier-plugin-svelte: 3.3.3(prettier@3.5.3)(svelte@5.25.7) semver: 7.7.1 sisteransi: 1.0.5 - svelte: 5.23.0 - valibot: 1.0.0-rc.3(typescript@5.8.2) + svelte: 5.25.7 + valibot: 1.0.0(typescript@5.8.3) validate-npm-package-name: 6.0.0 - vue: 3.5.13(typescript@5.8.2) + vue: 3.5.13(typescript@5.8.3) transitivePeerDependencies: - '@biomejs/wasm-bundler' - '@biomejs/wasm-web' @@ -4778,8 +4912,6 @@ snapshots: - ws - zod - lazy@1.0.11: {} - locate-character@3.0.0: {} lodash-es@4.17.21: {} @@ -4863,6 +4995,8 @@ snapshots: nanoid@5.1.2: {} + nanoid@5.1.5: {} + needle@2.4.0: dependencies: debug: 3.2.7 @@ -4909,11 +5043,6 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - nssocket@0.6.0: - dependencies: - eventemitter2: 0.4.14 - lazy: 1.0.11 - object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -4951,11 +5080,13 @@ snapshots: dependencies: whatwg-fetch: 3.6.20 + on-exit-leak-free@2.1.2: {} + once@1.4.0: dependencies: wrappy: 1.0.2 - openai@4.87.3(ws@8.18.0)(zod@3.24.2): + openai@4.91.1(ws@8.18.1)(zod@3.24.2): dependencies: '@types/node': 18.19.80 '@types/node-fetch': 2.6.12 @@ -4965,7 +5096,7 @@ snapshots: formdata-node: 4.4.1 node-fetch: 2.7.0 optionalDependencies: - ws: 8.18.0 + ws: 8.18.1 zod: 3.24.2 transitivePeerDependencies: - encoding @@ -4976,20 +5107,20 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - oxc-parser@0.56.5: + oxc-parser@0.60.0: dependencies: - '@oxc-project/types': 0.56.5 + '@oxc-project/types': 0.60.0 optionalDependencies: - '@oxc-parser/binding-darwin-arm64': 0.56.5 - '@oxc-parser/binding-darwin-x64': 0.56.5 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.56.5 - '@oxc-parser/binding-linux-arm64-gnu': 0.56.5 - '@oxc-parser/binding-linux-arm64-musl': 0.56.5 - '@oxc-parser/binding-linux-x64-gnu': 0.56.5 - '@oxc-parser/binding-linux-x64-musl': 0.56.5 - '@oxc-parser/binding-wasm32-wasi': 0.56.5 - '@oxc-parser/binding-win32-arm64-msvc': 0.56.5 - '@oxc-parser/binding-win32-x64-msvc': 0.56.5 + '@oxc-parser/binding-darwin-arm64': 0.60.0 + '@oxc-parser/binding-darwin-x64': 0.60.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.60.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.60.0 + '@oxc-parser/binding-linux-arm64-musl': 0.60.0 + '@oxc-parser/binding-linux-x64-gnu': 0.60.0 + '@oxc-parser/binding-linux-x64-musl': 0.60.0 + '@oxc-parser/binding-wasm32-wasi': 0.60.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.60.0 + '@oxc-parser/binding-win32-x64-msvc': 0.60.0 pac-proxy-agent@7.2.0: dependencies: @@ -5011,7 +5142,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.0.0: {} + package-manager-detector@1.1.0: {} pako@0.2.9: {} @@ -5047,11 +5178,11 @@ snapshots: pg-int8@1.0.1: {} - pg-pool@3.7.1(pg@8.13.3): + pg-pool@3.8.0(pg@8.14.1): dependencies: - pg: 8.13.3 + pg: 8.14.1 - pg-protocol@1.7.1: {} + pg-protocol@1.8.0: {} pg-types@2.2.0: dependencies: @@ -5061,11 +5192,11 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.13.3: + pg@8.14.1: dependencies: pg-connection-string: 2.7.0 - pg-pool: 3.7.1(pg@8.13.3) - pg-protocol: 1.7.1 + pg-pool: 3.8.0(pg@8.14.1) + pg-protocol: 1.8.0 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: @@ -5090,6 +5221,42 @@ snapshots: dependencies: safe-buffer: 5.2.1 + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-pretty@13.0.0: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pump: 3.0.2 + secure-json-parse: 2.7.0 + sonic-boom: 4.2.0 + strip-json-comments: 3.1.1 + + pino-std-serializers@7.0.0: {} + + pino@9.6.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.0.0 + process-warning: 4.0.1 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + pm2-axon-rpc@0.7.1: dependencies: debug: 4.4.0(supports-color@5.5.0) @@ -5125,10 +5292,10 @@ snapshots: - supports-color optional: true - pm2@5.4.3: + pm2@6.0.5: dependencies: - '@pm2/agent': 2.0.4 - '@pm2/io': 6.0.1 + '@pm2/agent': 2.1.1 + '@pm2/io': 6.1.0 '@pm2/js-api': 0.8.0 '@pm2/pm2-version-check': 1.0.4 async: 3.2.6 @@ -5181,17 +5348,24 @@ snapshots: dependencies: xtend: 4.0.2 + prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.25.7): + dependencies: + prettier: 3.5.3 + svelte: 5.25.7 + prettier@3.5.3: {} pretty-ms@9.2.0: dependencies: parse-ms: 4.0.0 + process-warning@4.0.1: {} + promptly@2.2.0: dependencies: read: 1.0.7 - proxy-agent@6.3.1: + proxy-agent@6.4.0: dependencies: agent-base: 7.1.3 debug: 4.4.0(supports-color@5.5.0) @@ -5208,8 +5382,15 @@ snapshots: pstree.remy@1.1.8: {} + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + read@1.0.7: dependencies: mute-stream: 0.0.8 @@ -5218,6 +5399,8 @@ snapshots: dependencies: picomatch: 2.3.1 + real-require@0.2.0: {} + redis-errors@1.2.0: {} redis-parser@3.0.0: @@ -5287,21 +5470,21 @@ snapshots: globby: 10.0.1 is-plain-object: 3.0.1 - rollup-plugin-dts@6.1.1(rollup@4.35.0)(typescript@5.8.2): + rollup-plugin-dts@6.2.1(rollup@4.39.0)(typescript@5.8.3): dependencies: magic-string: 0.30.17 - rollup: 4.35.0 - typescript: 5.8.2 + rollup: 4.39.0 + typescript: 5.8.3 optionalDependencies: '@babel/code-frame': 7.26.2 - rollup-plugin-esbuild@6.2.1(esbuild@0.25.0)(rollup@4.35.0): + rollup-plugin-esbuild@6.2.1(esbuild@0.25.0)(rollup@4.39.0): dependencies: debug: 4.4.0(supports-color@5.5.0) es-module-lexer: 1.6.0 esbuild: 0.25.0 get-tsconfig: 4.10.0 - rollup: 4.35.0 + rollup: 4.39.0 unplugin-utils: 0.2.4 transitivePeerDependencies: - supports-color @@ -5316,29 +5499,30 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@4.35.0: + rollup@4.39.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.35.0 - '@rollup/rollup-android-arm64': 4.35.0 - '@rollup/rollup-darwin-arm64': 4.35.0 - '@rollup/rollup-darwin-x64': 4.35.0 - '@rollup/rollup-freebsd-arm64': 4.35.0 - '@rollup/rollup-freebsd-x64': 4.35.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 - '@rollup/rollup-linux-arm-musleabihf': 4.35.0 - '@rollup/rollup-linux-arm64-gnu': 4.35.0 - '@rollup/rollup-linux-arm64-musl': 4.35.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 - '@rollup/rollup-linux-riscv64-gnu': 4.35.0 - '@rollup/rollup-linux-s390x-gnu': 4.35.0 - '@rollup/rollup-linux-x64-gnu': 4.35.0 - '@rollup/rollup-linux-x64-musl': 4.35.0 - '@rollup/rollup-win32-arm64-msvc': 4.35.0 - '@rollup/rollup-win32-ia32-msvc': 4.35.0 - '@rollup/rollup-win32-x64-msvc': 4.35.0 + '@rollup/rollup-android-arm-eabi': 4.39.0 + '@rollup/rollup-android-arm64': 4.39.0 + '@rollup/rollup-darwin-arm64': 4.39.0 + '@rollup/rollup-darwin-x64': 4.39.0 + '@rollup/rollup-freebsd-arm64': 4.39.0 + '@rollup/rollup-freebsd-x64': 4.39.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 + '@rollup/rollup-linux-arm-musleabihf': 4.39.0 + '@rollup/rollup-linux-arm64-gnu': 4.39.0 + '@rollup/rollup-linux-arm64-musl': 4.39.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-gnu': 4.39.0 + '@rollup/rollup-linux-riscv64-musl': 4.39.0 + '@rollup/rollup-linux-s390x-gnu': 4.39.0 + '@rollup/rollup-linux-x64-gnu': 4.39.0 + '@rollup/rollup-linux-x64-musl': 4.39.0 + '@rollup/rollup-win32-arm64-msvc': 4.39.0 + '@rollup/rollup-win32-ia32-msvc': 4.39.0 + '@rollup/rollup-win32-x64-msvc': 4.39.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -5372,10 +5556,14 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-stable-stringify@2.5.0: {} + safer-buffer@2.1.2: {} sax@1.4.1: {} + secure-json-parse@2.7.0: {} + selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.11 @@ -5389,7 +5577,7 @@ snapshots: sequelize-pool@7.1.0: {} - sequelize@6.37.5(pg@8.13.3): + sequelize@6.37.7(pg@8.14.1): dependencies: '@types/debug': 4.1.12 '@types/validator': 13.12.2 @@ -5408,7 +5596,7 @@ snapshots: validator: 13.12.0 wkx: 0.5.0 optionalDependencies: - pg: 8.13.3 + pg: 8.14.1 transitivePeerDependencies: - supports-color @@ -5529,6 +5717,10 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 + sonic-boom@4.2.0: + dependencies: + atomic-sleep: 1.0.0 + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -5604,6 +5796,8 @@ snapshots: strip-final-newline@4.0.0: {} + strip-json-comments@3.1.1: {} + stubborn-fs@1.2.5: {} supports-color@5.5.0: @@ -5620,7 +5814,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte@5.23.0: + svelte@5.25.7: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -5631,7 +5825,7 @@ snapshots: axobject-query: 4.1.0 clsx: 2.1.1 esm-env: 1.2.2 - esrap: 1.4.5 + esrap: 1.4.6 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.17 @@ -5665,6 +5859,10 @@ snapshots: resolve: 2.0.0-next.5 string.prototype.trim: 1.2.10 + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -5732,7 +5930,7 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript@5.8.2: {} + typescript@5.8.3: {} uint8array-extras@1.4.0: {} @@ -5747,7 +5945,7 @@ snapshots: undici-types@5.26.5: {} - undici-types@6.20.0: {} + undici-types@6.21.0: {} unicorn-magic@0.3.0: {} @@ -5764,9 +5962,9 @@ snapshots: uuid@8.3.2: {} - valibot@1.0.0-rc.3(typescript@5.8.2): + valibot@1.0.0(typescript@5.8.3): optionalDependencies: - typescript: 5.8.2 + typescript: 5.8.3 validate-npm-package-name@6.0.0: {} @@ -5781,15 +5979,15 @@ snapshots: ini: 1.3.8 js-git: 0.7.8 - vue@3.5.13(typescript@5.8.2): + vue@3.5.13(typescript@5.8.3): dependencies: '@vue/compiler-dom': 3.5.13 '@vue/compiler-sfc': 3.5.13 '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.2)) + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3)) '@vue/shared': 3.5.13 optionalDependencies: - typescript: 5.8.2 + typescript: 5.8.3 web-streams-polyfill@3.3.3: {} @@ -5856,7 +6054,7 @@ snapshots: wkx@0.5.0: dependencies: - '@types/node': 22.13.10 + '@types/node': 22.14.0 wrap-ansi@7.0.0: dependencies: @@ -5884,6 +6082,8 @@ snapshots: ws@8.18.0: {} + ws@8.18.1: {} + xtend@4.0.2: {} y18n@5.0.8: {} diff --git a/rollup.config.mjs b/rollup.config.mjs index d807dc7..7583dfe 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -8,7 +8,7 @@ import replace from '@rollup/plugin-replace'; import pkgs from './package.json' with {type: 'json'}; const isDev = process.env.NODE_ENV === 'development'; -const input = isDev ? './src/dev.ts' : './src/index.ts'; +const input = isDev ? './src/dev.ts' : './src/main.ts'; /** * @type {import('rollup').RollupOptions} */ @@ -24,7 +24,7 @@ const config = { replace({ preventAssignment: true, // 防止意外赋值 DEV_SERVER: JSON.stringify(isDev), // 替换 process.env.NODE_ENV - VERSION: JSON.stringify(pkgs.version), + APP_VERSION: JSON.stringify(pkgs.version), }), alias({ // only esbuild needs to be configured @@ -67,9 +67,9 @@ const config = { /@kevisual\/router(\/.*)?/, //, // 路由 /@kevisual\/use-config(\/.*)?/, // - // 'sequelize', // 数据库 orm - // 'ioredis', // redis - // 'pg', // pg + 'sequelize', // 数据库 orm + 'ioredis', // redis + 'pg', // pg ], }; export default config; diff --git a/src/demo-route.ts b/src/demo-route.ts deleted file mode 100644 index 651a013..0000000 --- a/src/demo-route.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { app } from './app.ts'; -import { useConfig } from '@kevisual/use-config'; - -app - .route({ - path: 'demo', - key: 'demo', - }) - .define(async (ctx) => { - ctx.body = '123'; - }) - .addTo(app); - -const config = useConfig(); - -console.log('run demo: http://localhost:' + config.port + '/api/router?path=demo&key=demo'); diff --git a/src/dev.ts b/src/dev.ts index 818c369..c3e9636 100644 --- a/src/dev.ts +++ b/src/dev.ts @@ -1,8 +1,48 @@ -import { useConfig } from '@kevisual/use-config'; import { app } from './index.ts'; +import { useConfig } from '@kevisual/use-config/env'; + +app + .route({ + path: 'auth', + id: 'auth', + }) + .define(async (ctx) => { + ctx.query.token = '123'; + ctx.state.tokenUser = { + id: '123', + username: 'admin', + }; + }) + .addTo(app); + +app + .route({ + path: 'auth-admin', + id: 'auth-admin', + }) + .define(async (ctx) => { + ctx.body = '123'; + ctx.state.tokenUser = { + id: '123', + username: 'admin', + }; + }) + .addTo(app); +app + .route({ + path: 'demo', + key: 'demo', + }) + .define(async (ctx) => { + ctx.body = '123'; + }) + .addTo(app); const config = useConfig(); +const port = config.PORT || 4000; -app.listen(config.port, () => { - console.log(`server is running at http://localhost:${config.port}`); +console.log('run demo: http://localhost:' + port + '/api/router?path=demo&key=demo'); + +app.listen(port, () => { + console.log(`server is running at http://localhost:${port}`); }); diff --git a/src/index.ts b/src/index.ts index d7c7c49..68f5dd6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,3 @@ import { app } from './app.ts'; -import './demo-route.ts'; -export { app }; \ No newline at end of file +export { app }; diff --git a/src/logger/index.ts b/src/logger/index.ts new file mode 100644 index 0000000..1f6fe32 --- /dev/null +++ b/src/logger/index.ts @@ -0,0 +1,37 @@ +import { pino } from 'pino'; +import { useConfig } from '@kevisual/use-config/env'; + +const config = useConfig(); + +export const logger = pino({ + level: config.LOG_LEVEL || 'info', + transport: { + target: 'pino-pretty', + options: { + colorize: true, + translateTime: 'SYS:standard', + ignore: 'pid,hostname', + }, + }, + serializers: { + error: pino.stdSerializers.err, + req: pino.stdSerializers.req, + res: pino.stdSerializers.res, + }, + base: { + app: 'ai-chat', + env: process.env.NODE_ENV || 'development', + }, +}); + +export const logError = (message: string, data?: any) => logger.error({ data }, message); +export const logWarning = (message: string, data?: any) => logger.warn({ data }, message); +export const logInfo = (message: string, data?: any) => logger.info({ data }, message); +export const logDebug = (message: string, data?: any) => logger.debug({ data }, message); + +export const log = { + error: logError, + warn: logWarning, + info: logInfo, + debug: logDebug, +}; diff --git a/src/main.ts b/src/main.ts index 459bde4..888ed08 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,10 +1,9 @@ // 单应用实例启动 - import { useConfig } from '@kevisual/use-config/env'; import { app } from './index.ts'; const config = useConfig(); - -app.listen(config.port, () => { - console.log(`server is running at http://localhost:${config.port}`); +const port = config.PORT || 4000; +app.listen(port, () => { + console.log(`server is running at http://localhost:${port}`); }); diff --git a/src/modules/mark.ts b/src/modules/mark.ts deleted file mode 100644 index ee41462..0000000 --- a/src/modules/mark.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Mark, markModelInit } from '@kevisual/mark'; - -export { Mark, markModelInit }; - -export const init = () => { - markModelInit({ - tableName: '', - }); -}; diff --git a/src/modules/redis.ts b/src/modules/redis.ts new file mode 100644 index 0000000..399f9af --- /dev/null +++ b/src/modules/redis.ts @@ -0,0 +1,28 @@ +import { Redis } from 'ioredis'; + +// 配置 Redis 连接 +export const redis = new Redis({ + host: 'localhost', // Redis 服务器的主机名或 IP 地址 + port: 6379, // Redis 服务器的端口号 + // password: 'your_password', // Redis 的密码 (如果有) + db: 0, // 要使用的 Redis 数据库索引 (0-15) + keyPrefix: '', // key 前缀 + retryStrategy(times) { + // 连接重试策略 + return Math.min(times * 50, 2000); // 每次重试时延迟增加 + }, + maxRetriesPerRequest: null, // 允许请求重试的次数 (如果需要无限次重试) +}); + +// 监听连接事件 +redis.on('connect', () => { + console.log('Redis 连接成功'); +}); + +redis.on('error', (err) => { + console.error('Redis 连接错误', err); +}); + +// 初始化 Redis 客户端 +export const redisPublisher = new Redis(); // 用于发布消息 +export const redisSubscriber = new Redis(); // 用于订阅消息 diff --git a/src/modules/sequelize.ts b/src/modules/sequelize.ts index 4c59901..fe29a7a 100644 --- a/src/modules/sequelize.ts +++ b/src/modules/sequelize.ts @@ -1 +1,31 @@ -export { sequelize, redis } from '@kevisual/code-center-module'; +import { Sequelize } from 'sequelize'; +import { useConfig } from '@kevisual/use-config/env'; + +const config = useConfig(); + +export type PostgresConfig = { + postgres: { + username: string; + password: string; + host: string; + port: number; + database: string; + }; +}; +if (!config.POSTGRES_PASSWORD || !config.POSTGRES_USER) { + console.error('postgres config is required password and user'); + process.exit(1); +} +const postgresConfig = { + username: config.POSTGRES_USER, + password: config.POSTGRES_PASSWORD, + host: config.POSTGRES_HOST || 'localhost', + port: parseInt(config.POSTGRES_PORT || '5432'), + database: config.POSTGRES_DB || 'postgres', +}; +// connect to db +export const sequelize = new Sequelize({ + dialect: 'postgres', + ...postgresConfig, + // logging: false, +}); diff --git a/src/routes/app-demo/index.ts b/src/routes/app-demo/index.ts new file mode 100644 index 0000000..366a77c --- /dev/null +++ b/src/routes/app-demo/index.ts @@ -0,0 +1,119 @@ +import { Op } from 'sequelize'; +import { AppDemoModel } from './models/index.ts'; +import { app } from '@/app.ts'; + +app + .route({ + path: 'app-demo', + key: 'list', + middleware: ['auth'], + }) + .define(async (ctx) => { + const tokenUser = ctx.state.tokenUser; + const { page = 1, pageSize = 20, search, sort = 'DESC' } = ctx.query; + const searchWhere = search + ? { + [Op.or]: [{ title: { [Op.like]: `%${search}%` } }, { summary: { [Op.like]: `%${search}%` } }], + } + : {}; + + const { rows: appDemo, count } = await AppDemoModel.findAndCountAll({ + where: { + uid: tokenUser.uid, + ...searchWhere, + }, + offset: (page - 1) * pageSize, + limit: pageSize, + order: [['updatedAt', sort]], + }); + + ctx.body = { + list: appDemo, + pagination: { + page, + current: page, + pageSize, + total: count, + }, + }; + }) + .addTo(app); + +app + .route({ + path: 'app-demo', + key: 'update', + middleware: ['auth'], + }) + .define(async (ctx) => { + const tokenUser = ctx.state.tokenUser; + const { id, data, updatedAt: _clear, createdAt: _clear2, ...rest } = ctx.query.data; + let appDemo: AppDemoModel; + let isNew = false; + if (id) { + const appDemo = await AppDemoModel.findByPk(id); + if (appDemo.uid !== tokenUser.uid) { + ctx.throw(403, 'No permission'); + } + } else { + appDemo = await AppDemoModel.create({ + data: data, + ...rest, + uid: tokenUser.uid, + }); + isNew = true; + } + if (!appDemo) { + ctx.throw(404, 'AppDemo not found'); + } + if (!isNew) { + appDemo = await appDemo.update({ + data: { ...appDemo.data, ...data }, + ...rest, + }); + } + + ctx.body = appDemo; + }) + .addTo(app); + +app + .route({ + path: 'app-demo', + key: 'delete', + middleware: ['auth'], + }) + .define(async (ctx) => { + const tokenUser = ctx.state.tokenUser; + const { id, force = false } = ctx.query.data || {}; + if (!id) { + ctx.throw(400, 'id is required'); + } + const appDemo = await AppDemoModel.findByPk(id); + if (appDemo.uid !== tokenUser.uid) { + ctx.throw(403, 'No permission'); + } + await appDemo.destroy({ force }); + ctx.body = appDemo; + }) + .addTo(app); + +app + .route({ + path: 'app-demo', + key: 'get', + middleware: ['auth'], + }) + .define(async (ctx) => { + const tokenUser = ctx.state.tokenUser; + const { id } = ctx.query.data || {}; + if (!id) { + ctx.throw(400, 'id is required'); + } + const appDemo = await AppDemoModel.findByPk(id); + if (appDemo.uid !== tokenUser.uid) { + ctx.throw(403, 'No permission'); + } + ctx.body = appDemo; + }) + .addTo(app); diff --git a/src/routes/app-demo/models/index.ts b/src/routes/app-demo/models/index.ts new file mode 100644 index 0000000..098bfc3 --- /dev/null +++ b/src/routes/app-demo/models/index.ts @@ -0,0 +1,71 @@ +import { sequelize } from '@/modules/sequelize.ts'; +import { DataTypes, Model } from 'sequelize'; + +export interface AppDemoData { + [key: string]: any; +} + +export type AppDemo = Partial>; + +export class AppDemoModel extends Model { + declare id: string; + declare title: string; + declare description: string; + declare summary: string; + + declare data: AppDemoData; + declare tags: string[]; + declare version: string; + + declare uid: string; + + declare createdAt: Date; + declare updatedAt: Date; +} + +AppDemoModel.init( + { + id: { + type: DataTypes.UUID, + primaryKey: true, + defaultValue: DataTypes.UUIDV4, + }, + title: { + type: DataTypes.TEXT, + defaultValue: '', + }, + description: { + type: DataTypes.TEXT, + defaultValue: '', + }, + summary: { + type: DataTypes.TEXT, + defaultValue: '', + }, + tags: { + type: DataTypes.JSONB, + defaultValue: [], + }, + version: { + type: DataTypes.INTEGER, + defaultValue: 0, + }, + data: { + type: DataTypes.JSONB, + defaultValue: {}, + }, + uid: { + type: DataTypes.UUID, + allowNull: false, + }, + }, + { + sequelize, + tableName: 'kv_app_demo', + paranoid: true, + }, +); + +AppDemoModel.sync({ alter: true, logging: false }).catch((e) => { + console.error('AppDemoModel sync', e); +});