From 633eee4beeb9cfe69c70e053002df309785c84e1 Mon Sep 17 00:00:00 2001 From: xion Date: Fri, 20 Jun 2025 16:22:59 +0800 Subject: [PATCH] feat: add UserSecret --- package.json | 26 +- pnpm-lock.yaml | 829 +++++++++++--------------- src/app-demo/index.ts | 6 +- src/app.ts | 2 +- src/models/org.ts | 4 +- src/models/user.ts | 9 +- src/routes-simple/resources/chunk.ts | 6 +- src/routes-simple/resources/upload.ts | 1 + src/routes/file-listener/model.ts | 4 +- src/routes/micro-app/list.ts | 2 +- src/routes/user/index.ts | 12 +- src/routes/user/secret-key/list.ts | 136 +++++ src/scripts/common-redis.ts | 3 + src/scripts/common.ts | 8 +- src/test/create-user-secret.ts | 62 ++ submodules/code-center-module | 2 +- submodules/oss | 2 +- 17 files changed, 588 insertions(+), 526 deletions(-) create mode 100644 src/routes/user/secret-key/list.ts create mode 100644 src/scripts/common-redis.ts create mode 100644 src/test/create-user-secret.ts diff --git a/package.json b/package.json index 5f78c73..80b6e0c 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "type": "pm2-system-app", "key": "code-center", "entry": "./dist/app.js", + "engine": "bun", "runtime": [ "client" ] @@ -47,13 +48,14 @@ "commander": "^14.0.0", "ioredis": "^5.6.1", "minio": "^8.0.5", - "pg": "^8.16.0", + "pg": "^8.16.1", "pm2": "^6.0.8", "sequelize": "^6.37.7", "sqlite3": "^5.1.7" }, "devDependencies": { "@kevisual/code-center-module": "workspace:*", + "@kevisual/context": "^0.0.3", "@kevisual/file-listener": "^0.0.2", "@kevisual/local-app-manager": "0.1.22", "@kevisual/logger": "^0.0.4", @@ -61,20 +63,20 @@ "@kevisual/permission": "^0.0.3", "@kevisual/router": "0.0.22", "@kevisual/types": "^0.0.10", - "@kevisual/use-config": "^1.0.18", + "@kevisual/use-config": "^1.0.19", "@rollup/plugin-alias": "^5.1.1", - "@rollup/plugin-commonjs": "^28.0.3", + "@rollup/plugin-commonjs": "^28.0.6", "@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", + "@rollup/plugin-typescript": "^12.1.3", "@types/archiver": "^6.0.3", "@types/crypto-js": "^4.2.2", "@types/formidable": "^3.4.5", - "@types/jsonwebtoken": "^9.0.9", + "@types/jsonwebtoken": "^9.0.10", "@types/lodash-es": "^4.17.12", - "@types/node": "^22.15.30", - "@types/react": "^19.1.6", + "@types/node": "^24.0.3", + "@types/react": "^19.1.8", "@types/semver": "^7.7.0", "@types/uuid": "^10.0.0", "archiver": "^7.0.1", @@ -92,10 +94,10 @@ "node-fetch": "^3.3.2", "nodemon": "^3.1.10", "p-queue": "^8.1.0", - "pg": "^8.16.0", + "pg": "^8.16.1", "pm2": "^6.0.8", "rimraf": "^6.0.1", - "rollup": "^4.42.0", + "rollup": "^4.44.0", "rollup-plugin-copy": "^3.5.0", "rollup-plugin-dts": "^6.2.1", "rollup-plugin-esbuild": "^6.2.1", @@ -105,11 +107,11 @@ "strip-ansi": "^7.1.0", "tape": "^5.9.0", "tar": "^7.4.3", - "tsx": "^4.19.4", + "tsx": "^4.20.3", "turbo": "^2.5.4", "typescript": "^5.8.3", "uuid": "^11.1.0", - "zod": "^3.25.56" + "zod": "^3.25.67" }, "resolutions": { "inflight": "latest", @@ -117,5 +119,5 @@ "picomatch": "^4.0.2" }, "pnpm": {}, - "packageManager": "pnpm@10.11.1" + "packageManager": "pnpm@10.12.1" } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e97af4..b842ee7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,14 +23,14 @@ importers: specifier: ^8.0.5 version: 8.0.5 pg: - specifier: ^8.16.0 - version: 8.16.0 + specifier: ^8.16.1 + version: 8.16.1 pm2: specifier: ^6.0.8 version: 6.0.8 sequelize: specifier: ^6.37.7 - version: 6.37.7(pg@8.16.0)(sqlite3@5.1.7) + version: 6.37.7(pg@8.16.1)(sqlite3@5.1.7) sqlite3: specifier: ^5.1.7 version: 5.1.7 @@ -38,6 +38,9 @@ importers: '@kevisual/code-center-module': specifier: workspace:* version: link:submodules/code-center-module + '@kevisual/context': + specifier: ^0.0.3 + version: 0.0.3 '@kevisual/file-listener': specifier: ^0.0.2 version: 0.0.2(dotenv@16.5.0)(sqlite3@5.1.7) @@ -60,26 +63,26 @@ importers: specifier: ^0.0.10 version: 0.0.10 '@kevisual/use-config': - specifier: ^1.0.18 - version: 1.0.18(dotenv@16.5.0) + specifier: ^1.0.19 + version: 1.0.19(dotenv@16.5.0) '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.42.0) + version: 5.1.1(rollup@4.44.0) '@rollup/plugin-commonjs': - specifier: ^28.0.3 - version: 28.0.3(rollup@4.42.0) + specifier: ^28.0.6 + version: 28.0.6(rollup@4.44.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.42.0) + version: 6.1.0(rollup@4.44.0) '@rollup/plugin-node-resolve': specifier: ^16.0.1 - version: 16.0.1(rollup@4.42.0) + version: 16.0.1(rollup@4.44.0) '@rollup/plugin-replace': specifier: ^6.0.2 - version: 6.0.2(rollup@4.42.0) + version: 6.0.2(rollup@4.44.0) '@rollup/plugin-typescript': - specifier: ^12.1.2 - version: 12.1.2(rollup@4.42.0)(tslib@2.8.1)(typescript@5.8.3) + specifier: ^12.1.3 + version: 12.1.3(rollup@4.44.0)(tslib@2.8.1)(typescript@5.8.3) '@types/archiver': specifier: ^6.0.3 version: 6.0.3 @@ -90,17 +93,17 @@ importers: specifier: ^3.4.5 version: 3.4.5 '@types/jsonwebtoken': - specifier: ^9.0.9 - version: 9.0.9 + specifier: ^9.0.10 + version: 9.0.10 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.0.3 + version: 24.0.3 '@types/react': - specifier: ^19.1.6 - version: 19.1.6 + specifier: ^19.1.8 + version: 19.1.8 '@types/semver': specifier: ^7.7.0 version: 7.7.0 @@ -150,17 +153,17 @@ importers: specifier: latest version: 6.0.1 rollup: - specifier: ^4.42.0 - version: 4.42.0 + specifier: ^4.44.0 + version: 4.44.0 rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 rollup-plugin-dts: specifier: ^6.2.1 - version: 6.2.1(rollup@4.42.0)(typescript@5.8.3) + version: 6.2.1(rollup@4.44.0)(typescript@5.8.3) rollup-plugin-esbuild: specifier: ^6.2.1 - version: 6.2.1(esbuild@0.25.0)(rollup@4.42.0) + version: 6.2.1(esbuild@0.25.0)(rollup@4.44.0) semver: specifier: ^7.7.2 version: 7.7.2 @@ -177,8 +180,8 @@ importers: specifier: ^7.4.3 version: 7.4.3 tsx: - specifier: ^4.19.4 - version: 4.19.4 + specifier: ^4.20.3 + version: 4.20.3 turbo: specifier: ^2.5.4 version: 2.5.4 @@ -189,20 +192,23 @@ importers: specifier: ^11.1.0 version: 11.1.0 zod: - specifier: ^3.25.56 - version: 3.25.56 + specifier: ^3.25.67 + version: 3.25.67 submodules/code-center-module: dependencies: '@kevisual/auth': specifier: 1.0.5 version: 1.0.5 + '@kevisual/context': + specifier: ^0.0.3 + version: 0.0.3 '@kevisual/router': - specifier: ^0.0.21 - version: 0.0.21 + specifier: ^0.0.22 + version: 0.0.22 '@kevisual/use-config': - specifier: ^1.0.17 - version: 1.0.17(dotenv@16.5.0) + specifier: ^1.0.19 + version: 1.0.19(dotenv@16.5.0) ioredis: specifier: ^5.6.1 version: 5.6.1 @@ -210,39 +216,39 @@ importers: specifier: ^5.1.5 version: 5.1.5 pg: - specifier: ^8.16.0 - version: 8.16.0 + specifier: ^8.16.1 + version: 8.16.1 sequelize: specifier: ^6.37.7 - version: 6.37.7(pg@8.16.0)(sqlite3@5.1.7) + version: 6.37.7(pg@8.16.1)(sqlite3@5.1.7) socket.io: specifier: ^4.8.1 version: 4.8.1 zod: - specifier: ^3.25.28 - version: 3.25.28 + specifier: ^3.25.67 + version: 3.25.67 devDependencies: '@kevisual/types': specifier: ^0.0.10 version: 0.0.10 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.41.1) + version: 5.1.1(rollup@4.44.0) '@rollup/plugin-commonjs': - specifier: ^28.0.3 - version: 28.0.3(rollup@4.41.1) + specifier: ^28.0.6 + version: 28.0.6(rollup@4.44.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.41.1) + version: 6.1.0(rollup@4.44.0) '@rollup/plugin-node-resolve': specifier: ^16.0.1 - version: 16.0.1(rollup@4.41.1) + version: 16.0.1(rollup@4.44.0) '@rollup/plugin-replace': specifier: ^6.0.2 - version: 6.0.2(rollup@4.41.1) + version: 6.0.2(rollup@4.44.0) '@rollup/plugin-typescript': - specifier: ^12.1.2 - version: 12.1.2(rollup@4.41.1)(tslib@2.8.1)(typescript@5.8.3) + specifier: ^12.1.3 + version: 12.1.3(rollup@4.44.0)(tslib@2.8.1)(typescript@5.8.3) '@types/archiver': specifier: ^6.0.3 version: 6.0.3 @@ -253,17 +259,17 @@ importers: specifier: ^3.4.5 version: 3.4.5 '@types/jsonwebtoken': - specifier: ^9.0.9 - version: 9.0.9 + specifier: ^9.0.10 + version: 9.0.10 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^22.15.21 - version: 22.15.21 + specifier: ^24.0.3 + version: 24.0.3 '@types/react': - specifier: ^19.1.5 - version: 19.1.5 + specifier: ^19.1.8 + version: 19.1.8 '@types/uuid': specifier: ^10.0.0 version: 10.0.0 @@ -280,23 +286,23 @@ importers: specifier: latest version: 6.0.1 rollup: - specifier: ^4.41.1 - version: 4.41.1 + specifier: ^4.44.0 + version: 4.44.0 rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 rollup-plugin-dts: specifier: ^6.2.1 - version: 6.2.1(rollup@4.41.1)(typescript@5.8.3) + version: 6.2.1(rollup@4.44.0)(typescript@5.8.3) rollup-plugin-esbuild: specifier: ^6.2.1 - version: 6.2.1(esbuild@0.25.0)(rollup@4.41.1) + version: 6.2.1(esbuild@0.25.0)(rollup@4.44.0) tape: specifier: ^5.9.0 version: 5.9.0 tsx: - specifier: ^4.19.4 - version: 4.19.4 + specifier: ^4.20.3 + version: 4.20.3 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -311,7 +317,7 @@ importers: version: 8.0.5 tsup: specifier: ^8.4.0 - version: 8.4.0(tsx@4.19.4)(typescript@5.8.3) + version: 8.4.0(tsx@4.20.3)(typescript@5.8.3) submodules/pay-center-code: dependencies: @@ -426,7 +432,7 @@ importers: devDependencies: tsup: specifier: ^8.4.0 - version: 8.4.0(tsx@4.19.4)(typescript@5.8.3) + version: 8.4.0(tsx@4.20.3)(typescript@5.8.3) packages: @@ -644,6 +650,9 @@ packages: '@kevisual/code-center-module@0.0.20': resolution: {integrity: sha512-WFSB5iLnvc/RQ2NcO5xXTgkE1rDc39F9ezt0853ePq9kL9qOiOmzLWNBSN/0mN5rvPbwrTBajmEyuXv5MYfcWQ==} + '@kevisual/context@0.0.3': + resolution: {integrity: sha512-cYpqVmoHVjv3NrGMU1e6iyiPDKRtNnK2wOWgbBU5d+8IHuC8VYHTg2GY5bnD/272GK7EYdr9x/c3QgsCIqR2BQ==} + '@kevisual/file-listener@0.0.2': resolution: {integrity: sha512-1XVoXBtNi813x6JXVT0xJeAzIjVJtputCyArgczhzH6KYX4P3W60QIYh45riuMFBynO21ULWnmJJqZmPmeKsNQ==} @@ -692,8 +701,8 @@ packages: peerDependencies: dotenv: ^16.4.7 - '@kevisual/use-config@1.0.18': - resolution: {integrity: sha512-v3m84iyNlXB3zdLw9/NmrZk8AEdeS6zKQkMsQmSIQntHW+v9AEpuCX7ipW3pl2yIxMxwo6sedi8NwchHADtblw==} + '@kevisual/use-config@1.0.19': + resolution: {integrity: sha512-Q1IH4eMqUe5w6Bq8etoqOSls9FPIy0xwwD3wHf26EsQLZadhccI9qkDuFzP/rFWDa57mwFPEfwbGE5UlqWOCkw==} peerDependencies: dotenv: ^16.4.7 @@ -771,6 +780,15 @@ packages: rollup: optional: true + '@rollup/plugin-commonjs@28.0.6': + resolution: {integrity: sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-json@6.1.0': resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} @@ -820,6 +838,19 @@ packages: tslib: optional: true + '@rollup/plugin-typescript@12.1.3': + resolution: {integrity: sha512-gAx0AYwkyjqOw4JrZV34N/abvAobLhczyLkZ7FVL2UXPrO4zv8oqTfYT3DLBRan1EXasp4SUuEJXqPTk0gnJzw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + '@rollup/pluginutils@5.1.2': resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} engines: {node: '>=14.0.0'} @@ -834,13 +865,8 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.41.1': - resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm-eabi@4.42.0': - resolution: {integrity: sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==} + '@rollup/rollup-android-arm-eabi@4.44.0': + resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==} cpu: [arm] os: [android] @@ -849,13 +875,8 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.41.1': - resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-android-arm64@4.42.0': - resolution: {integrity: sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==} + '@rollup/rollup-android-arm64@4.44.0': + resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==} cpu: [arm64] os: [android] @@ -864,13 +885,8 @@ packages: cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.41.1': - resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-arm64@4.42.0': - resolution: {integrity: sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==} + '@rollup/rollup-darwin-arm64@4.44.0': + resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==} cpu: [arm64] os: [darwin] @@ -879,13 +895,8 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.41.1': - resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.42.0': - resolution: {integrity: sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==} + '@rollup/rollup-darwin-x64@4.44.0': + resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==} cpu: [x64] os: [darwin] @@ -894,13 +905,8 @@ packages: cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.41.1': - resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-arm64@4.42.0': - resolution: {integrity: sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==} + '@rollup/rollup-freebsd-arm64@4.44.0': + resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==} cpu: [arm64] os: [freebsd] @@ -909,13 +915,8 @@ packages: cpu: [x64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.41.1': - resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.42.0': - resolution: {integrity: sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==} + '@rollup/rollup-freebsd-x64@4.44.0': + resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==} cpu: [x64] os: [freebsd] @@ -924,13 +925,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.41.1': - resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-gnueabihf@4.42.0': - resolution: {integrity: sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==} + '@rollup/rollup-linux-arm-gnueabihf@4.44.0': + resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==} cpu: [arm] os: [linux] @@ -939,13 +935,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.41.1': - resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.42.0': - resolution: {integrity: sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==} + '@rollup/rollup-linux-arm-musleabihf@4.44.0': + resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==} cpu: [arm] os: [linux] @@ -954,13 +945,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.41.1': - resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.42.0': - resolution: {integrity: sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==} + '@rollup/rollup-linux-arm64-gnu@4.44.0': + resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==} cpu: [arm64] os: [linux] @@ -969,13 +955,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.41.1': - resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.42.0': - resolution: {integrity: sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==} + '@rollup/rollup-linux-arm64-musl@4.44.0': + resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==} cpu: [arm64] os: [linux] @@ -984,13 +965,8 @@ packages: cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.41.1': - resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.42.0': - resolution: {integrity: sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==} + '@rollup/rollup-linux-loongarch64-gnu@4.44.0': + resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==} cpu: [loong64] os: [linux] @@ -999,13 +975,8 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': - resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.42.0': - resolution: {integrity: sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==} + '@rollup/rollup-linux-powerpc64le-gnu@4.44.0': + resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==} cpu: [ppc64] os: [linux] @@ -1014,13 +985,8 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.41.1': - resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.42.0': - resolution: {integrity: sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==} + '@rollup/rollup-linux-riscv64-gnu@4.44.0': + resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==} cpu: [riscv64] os: [linux] @@ -1029,13 +995,8 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.41.1': - resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.42.0': - resolution: {integrity: sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==} + '@rollup/rollup-linux-riscv64-musl@4.44.0': + resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==} cpu: [riscv64] os: [linux] @@ -1044,13 +1005,8 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.41.1': - resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.42.0': - resolution: {integrity: sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==} + '@rollup/rollup-linux-s390x-gnu@4.44.0': + resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==} cpu: [s390x] os: [linux] @@ -1059,13 +1015,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.41.1': - resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.42.0': - resolution: {integrity: sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==} + '@rollup/rollup-linux-x64-gnu@4.44.0': + resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==} cpu: [x64] os: [linux] @@ -1074,13 +1025,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.41.1': - resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.42.0': - resolution: {integrity: sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==} + '@rollup/rollup-linux-x64-musl@4.44.0': + resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==} cpu: [x64] os: [linux] @@ -1089,13 +1035,8 @@ packages: cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.41.1': - resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-arm64-msvc@4.42.0': - resolution: {integrity: sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==} + '@rollup/rollup-win32-arm64-msvc@4.44.0': + resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==} cpu: [arm64] os: [win32] @@ -1104,13 +1045,8 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.41.1': - resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.42.0': - resolution: {integrity: sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==} + '@rollup/rollup-win32-ia32-msvc@4.44.0': + resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==} cpu: [ia32] os: [win32] @@ -1119,13 +1055,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.41.1': - resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.42.0': - resolution: {integrity: sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==} + '@rollup/rollup-win32-x64-msvc@4.44.0': + resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==} cpu: [x64] os: [win32] @@ -1160,6 +1091,9 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/formidable@3.4.5': resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} @@ -1169,8 +1103,8 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/jsonwebtoken@9.0.9': - resolution: {integrity: sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==} + '@types/jsonwebtoken@9.0.10': + resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} @@ -1187,17 +1121,14 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@22.15.21': - resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} - '@types/node@22.15.30': resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==} - '@types/react@19.1.5': - resolution: {integrity: sha512-piErsCVVbpMMT2r7wbawdZsq4xMvIAhQuac2gedQHysu1TZYEigE6pnFfgZT+/jQnrRuF5r+SHzuehFjfRjr4g==} + '@types/node@24.0.3': + resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==} - '@types/react@19.1.6': - resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==} + '@types/react@19.1.8': + resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} '@types/readdir-glob@1.1.5': resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} @@ -2749,12 +2680,18 @@ packages: pg-cloudflare@1.2.5: resolution: {integrity: sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==} + pg-cloudflare@1.2.6: + resolution: {integrity: sha512-uxmJAnmIgmYgnSFzgOf2cqGQBzwnRYcrEgXuFjJNEkpedEIPBSEzxY7ph4uA9k1mI+l/GR0HjPNS6FKNZe8SBQ==} + pg-connection-string@2.7.0: resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} pg-connection-string@2.9.0: resolution: {integrity: sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==} + pg-connection-string@2.9.1: + resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} + pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} @@ -2764,9 +2701,17 @@ packages: peerDependencies: pg: '>=8.0' + pg-pool@3.10.1: + resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} + peerDependencies: + pg: '>=8.0' + pg-protocol@1.10.0: resolution: {integrity: sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==} + pg-protocol@1.10.1: + resolution: {integrity: sha512-9YS3ZonDj0Lxny//aF0ITPdfrEPgKWCJvONsSXAaIUhgpzlzl5JgaZNlbTFxvYNfm2terGEnHeOSUlF6qRGBzw==} + pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} @@ -2780,6 +2725,15 @@ packages: pg-native: optional: true + pg@8.16.1: + resolution: {integrity: sha512-5n6e7MgF5ABRsssOsX9xC95p+NUuhgDQDBSsrKSZJjYVqZHGyrmJuknym2IbVhGtzV9siBdzH9SEIQAuWF+sdg==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} @@ -3039,13 +2993,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.41.1: - resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.42.0: - resolution: {integrity: sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==} + rollup@4.44.0: + resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3457,6 +3406,11 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tsx@4.20.3: + resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} + engines: {node: '>=18.0.0'} + hasBin: true + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -3542,6 +3496,9 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + undici@7.8.0: resolution: {integrity: sha512-vFv1GA99b7eKO1HG/4RPu2Is3FBTWBrmzqzO0mz+rLxN3yXkE4mqRcb8g8fHxzX4blEysrNZLqg5RbJLqX5buA==} engines: {node: '>=20.18.1'} @@ -3726,11 +3683,8 @@ packages: zod@3.25.1: resolution: {integrity: sha512-bkxUGQiqWDTXHSgqtevYDri5ee2GPC9szPct4pqpzLEpswgDQmuseDz81ZF0AnNu1xsmnBVmbtv/t/WeUIHlpg==} - zod@3.25.28: - resolution: {integrity: sha512-/nt/67WYKnr5by3YS7LroZJbtcCBurDKKPBPWWzaxvVCGuG/NOsiKkrjoOhI8mJ+SQUXEbUzeB3S+6XDUEEj7Q==} - - zod@3.25.56: - resolution: {integrity: sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==} + zod@3.25.67: + resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} snapshots: @@ -3883,13 +3837,13 @@ snapshots: dependencies: '@kevisual/auth': 1.0.5 '@kevisual/router': 0.0.21 - '@kevisual/use-config': 1.0.18(dotenv@16.5.0) + '@kevisual/use-config': 1.0.19(dotenv@16.5.0) ioredis: 5.6.1 nanoid: 5.1.5 - pg: 8.16.0 - sequelize: 6.37.7(pg@8.16.0)(sqlite3@5.1.7) + pg: 8.16.1 + sequelize: 6.37.7(pg@8.16.1)(sqlite3@5.1.7) socket.io: 4.8.1 - zod: 3.25.56 + zod: 3.25.67 transitivePeerDependencies: - bufferutil - dotenv @@ -3905,11 +3859,13 @@ snapshots: - tedious - utf-8-validate + '@kevisual/context@0.0.3': {} + '@kevisual/file-listener@0.0.2(dotenv@16.5.0)(sqlite3@5.1.7)': dependencies: '@kevisual/code-center-module': 0.0.20(dotenv@16.5.0)(sqlite3@5.1.7) '@kevisual/router': 0.0.22 - '@kevisual/use-config': 1.0.18(dotenv@16.5.0) + '@kevisual/use-config': 1.0.19(dotenv@16.5.0) cookie: 1.0.2 dayjs: 1.11.13 formidable: 3.5.4 @@ -3975,20 +3931,20 @@ snapshots: '@kevisual/rollup-tools@0.0.1(esbuild@0.25.0)': dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.42.0) - '@rollup/plugin-commonjs': 28.0.3(rollup@4.42.0) - '@rollup/plugin-json': 6.1.0(rollup@4.42.0) - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.42.0) - '@rollup/plugin-replace': 6.0.2(rollup@4.42.0) - '@rollup/plugin-typescript': 12.1.2(rollup@4.42.0)(tslib@2.8.1)(typescript@5.8.3) + '@rollup/plugin-alias': 5.1.1(rollup@4.44.0) + '@rollup/plugin-commonjs': 28.0.6(rollup@4.44.0) + '@rollup/plugin-json': 6.1.0(rollup@4.44.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.44.0) + '@rollup/plugin-replace': 6.0.2(rollup@4.44.0) + '@rollup/plugin-typescript': 12.1.3(rollup@4.44.0)(tslib@2.8.1)(typescript@5.8.3) '@types/node': 22.15.30 chalk: 5.4.1 commander: 12.1.0 glob: 11.0.0 - rollup: 4.42.0 + rollup: 4.44.0 rollup-plugin-copy: 3.5.0 - rollup-plugin-dts: 6.2.1(rollup@4.42.0)(typescript@5.8.3) - rollup-plugin-esbuild: 6.2.1(esbuild@0.25.0)(rollup@4.42.0) + rollup-plugin-dts: 6.2.1(rollup@4.44.0)(typescript@5.8.3) + rollup-plugin-esbuild: 6.2.1(esbuild@0.25.0)(rollup@4.44.0) rollup-plugin-inject: 3.0.2 tslib: 2.8.1 typescript: 5.8.3 @@ -4029,7 +3985,7 @@ snapshots: '@kevisual/load': 0.0.6 dotenv: 16.5.0 - '@kevisual/use-config@1.0.18(dotenv@16.5.0)': + '@kevisual/use-config@1.0.19(dotenv@16.5.0)': dependencies: '@kevisual/load': 0.0.6 dotenv: 16.5.0 @@ -4134,13 +4090,9 @@ snapshots: optionalDependencies: rollup: 4.41.0 - '@rollup/plugin-alias@5.1.1(rollup@4.41.1)': + '@rollup/plugin-alias@5.1.1(rollup@4.44.0)': optionalDependencies: - rollup: 4.41.1 - - '@rollup/plugin-alias@5.1.1(rollup@4.42.0)': - optionalDependencies: - rollup: 4.42.0 + rollup: 4.44.0 '@rollup/plugin-commonjs@28.0.3(rollup@4.41.0)': dependencies: @@ -4154,29 +4106,17 @@ snapshots: optionalDependencies: rollup: 4.41.0 - '@rollup/plugin-commonjs@28.0.3(rollup@4.41.1)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.44.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.41.1) + '@rollup/pluginutils': 5.1.2(rollup@4.44.0) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.3.0(picomatch@4.0.2) + fdir: 6.4.3(picomatch@4.0.2) is-reference: 1.2.1 - magic-string: 0.30.11 + magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.41.1 - - '@rollup/plugin-commonjs@28.0.3(rollup@4.42.0)': - dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.42.0) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.3.0(picomatch@4.0.2) - is-reference: 1.2.1 - magic-string: 0.30.11 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.42.0 + rollup: 4.44.0 '@rollup/plugin-json@6.1.0(rollup@4.41.0)': dependencies: @@ -4184,27 +4124,21 @@ snapshots: optionalDependencies: rollup: 4.41.0 - '@rollup/plugin-json@6.1.0(rollup@4.41.1)': + '@rollup/plugin-json@6.1.0(rollup@4.44.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.41.1) + '@rollup/pluginutils': 5.1.2(rollup@4.44.0) optionalDependencies: - rollup: 4.41.1 + rollup: 4.44.0 - '@rollup/plugin-json@6.1.0(rollup@4.42.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.44.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.42.0) - optionalDependencies: - rollup: 4.42.0 - - '@rollup/plugin-node-resolve@15.3.1(rollup@4.42.0)': - dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.42.0) + '@rollup/pluginutils': 5.1.2(rollup@4.44.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.42.0 + rollup: 4.44.0 '@rollup/plugin-node-resolve@16.0.1(rollup@4.41.0)': dependencies: @@ -4216,25 +4150,15 @@ snapshots: optionalDependencies: rollup: 4.41.0 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.41.1)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.44.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.41.1) + '@rollup/pluginutils': 5.1.2(rollup@4.44.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.41.1 - - '@rollup/plugin-node-resolve@16.0.1(rollup@4.42.0)': - dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.42.0) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 4.42.0 + rollup: 4.44.0 '@rollup/plugin-replace@6.0.2(rollup@4.41.0)': dependencies: @@ -4243,19 +4167,12 @@ snapshots: optionalDependencies: rollup: 4.41.0 - '@rollup/plugin-replace@6.0.2(rollup@4.41.1)': + '@rollup/plugin-replace@6.0.2(rollup@4.44.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.41.1) + '@rollup/pluginutils': 5.1.2(rollup@4.44.0) magic-string: 0.30.11 optionalDependencies: - rollup: 4.41.1 - - '@rollup/plugin-replace@6.0.2(rollup@4.42.0)': - dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.42.0) - magic-string: 0.30.11 - optionalDependencies: - rollup: 4.42.0 + rollup: 4.44.0 '@rollup/plugin-typescript@12.1.2(rollup@4.41.0)(tslib@2.8.1)(typescript@5.8.3)': dependencies: @@ -4266,22 +4183,13 @@ snapshots: rollup: 4.41.0 tslib: 2.8.1 - '@rollup/plugin-typescript@12.1.2(rollup@4.41.1)(tslib@2.8.1)(typescript@5.8.3)': + '@rollup/plugin-typescript@12.1.3(rollup@4.44.0)(tslib@2.8.1)(typescript@5.8.3)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.41.1) + '@rollup/pluginutils': 5.1.2(rollup@4.44.0) resolve: 1.22.8 typescript: 5.8.3 optionalDependencies: - rollup: 4.41.1 - tslib: 2.8.1 - - '@rollup/plugin-typescript@12.1.2(rollup@4.42.0)(tslib@2.8.1)(typescript@5.8.3)': - dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.42.0) - resolve: 1.22.8 - typescript: 5.8.3 - optionalDependencies: - rollup: 4.42.0 + rollup: 4.44.0 tslib: 2.8.1 '@rollup/pluginutils@5.1.2(rollup@4.41.0)': @@ -4292,200 +4200,132 @@ snapshots: optionalDependencies: rollup: 4.41.0 - '@rollup/pluginutils@5.1.2(rollup@4.41.1)': + '@rollup/pluginutils@5.1.2(rollup@4.44.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.41.1 - - '@rollup/pluginutils@5.1.2(rollup@4.42.0)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.42.0 + rollup: 4.44.0 '@rollup/rollup-android-arm-eabi@4.41.0': optional: true - '@rollup/rollup-android-arm-eabi@4.41.1': - optional: true - - '@rollup/rollup-android-arm-eabi@4.42.0': + '@rollup/rollup-android-arm-eabi@4.44.0': optional: true '@rollup/rollup-android-arm64@4.41.0': optional: true - '@rollup/rollup-android-arm64@4.41.1': - optional: true - - '@rollup/rollup-android-arm64@4.42.0': + '@rollup/rollup-android-arm64@4.44.0': optional: true '@rollup/rollup-darwin-arm64@4.41.0': optional: true - '@rollup/rollup-darwin-arm64@4.41.1': - optional: true - - '@rollup/rollup-darwin-arm64@4.42.0': + '@rollup/rollup-darwin-arm64@4.44.0': optional: true '@rollup/rollup-darwin-x64@4.41.0': optional: true - '@rollup/rollup-darwin-x64@4.41.1': - optional: true - - '@rollup/rollup-darwin-x64@4.42.0': + '@rollup/rollup-darwin-x64@4.44.0': optional: true '@rollup/rollup-freebsd-arm64@4.41.0': optional: true - '@rollup/rollup-freebsd-arm64@4.41.1': - optional: true - - '@rollup/rollup-freebsd-arm64@4.42.0': + '@rollup/rollup-freebsd-arm64@4.44.0': optional: true '@rollup/rollup-freebsd-x64@4.41.0': optional: true - '@rollup/rollup-freebsd-x64@4.41.1': - optional: true - - '@rollup/rollup-freebsd-x64@4.42.0': + '@rollup/rollup-freebsd-x64@4.44.0': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.41.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.41.1': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.42.0': + '@rollup/rollup-linux-arm-gnueabihf@4.44.0': optional: true '@rollup/rollup-linux-arm-musleabihf@4.41.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.41.1': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.42.0': + '@rollup/rollup-linux-arm-musleabihf@4.44.0': optional: true '@rollup/rollup-linux-arm64-gnu@4.41.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.41.1': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.42.0': + '@rollup/rollup-linux-arm64-gnu@4.44.0': optional: true '@rollup/rollup-linux-arm64-musl@4.41.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.41.1': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.42.0': + '@rollup/rollup-linux-arm64-musl@4.44.0': optional: true '@rollup/rollup-linux-loongarch64-gnu@4.41.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.41.1': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.42.0': + '@rollup/rollup-linux-loongarch64-gnu@4.44.0': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.41.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.42.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.44.0': optional: true '@rollup/rollup-linux-riscv64-gnu@4.41.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.41.1': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.42.0': + '@rollup/rollup-linux-riscv64-gnu@4.44.0': optional: true '@rollup/rollup-linux-riscv64-musl@4.41.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.41.1': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.42.0': + '@rollup/rollup-linux-riscv64-musl@4.44.0': optional: true '@rollup/rollup-linux-s390x-gnu@4.41.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.41.1': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.42.0': + '@rollup/rollup-linux-s390x-gnu@4.44.0': optional: true '@rollup/rollup-linux-x64-gnu@4.41.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.41.1': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.42.0': + '@rollup/rollup-linux-x64-gnu@4.44.0': optional: true '@rollup/rollup-linux-x64-musl@4.41.0': optional: true - '@rollup/rollup-linux-x64-musl@4.41.1': - optional: true - - '@rollup/rollup-linux-x64-musl@4.42.0': + '@rollup/rollup-linux-x64-musl@4.44.0': optional: true '@rollup/rollup-win32-arm64-msvc@4.41.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.41.1': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.42.0': + '@rollup/rollup-win32-arm64-msvc@4.44.0': optional: true '@rollup/rollup-win32-ia32-msvc@4.41.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.41.1': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.42.0': + '@rollup/rollup-win32-ia32-msvc@4.44.0': optional: true '@rollup/rollup-win32-x64-msvc@4.41.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.41.1': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.42.0': + '@rollup/rollup-win32-x64-msvc@4.44.0': optional: true '@socket.io/component-emitter@3.1.2': {} @@ -4503,7 +4343,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/crypto-js@4.2.2': {} @@ -4515,23 +4355,25 @@ snapshots: '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} + '@types/formidable@3.4.5': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/fs-extra@8.1.5': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.15.30 + '@types/node': 24.0.3 - '@types/jsonwebtoken@9.0.9': + '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 0.7.34 - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/lodash-es@4.17.12': dependencies: @@ -4545,27 +4387,23 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.15.30 - - '@types/node@22.15.21': - dependencies: - undici-types: 6.21.0 + '@types/node': 24.0.3 '@types/node@22.15.30': dependencies: undici-types: 6.21.0 - '@types/react@19.1.5': + '@types/node@24.0.3': dependencies: - csstype: 3.1.3 + undici-types: 7.8.0 - '@types/react@19.1.6': + '@types/react@19.1.8': dependencies: csstype: 3.1.3 '@types/readdir-glob@1.1.5': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/resolve@1.20.2': {} @@ -5144,7 +4982,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.15.30 + '@types/node': 24.0.3 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -6282,18 +6120,29 @@ snapshots: pg-cloudflare@1.2.5: optional: true + pg-cloudflare@1.2.6: + optional: true + pg-connection-string@2.7.0: {} pg-connection-string@2.9.0: {} + pg-connection-string@2.9.1: {} + pg-int8@1.0.1: {} pg-pool@3.10.0(pg@8.16.0): dependencies: pg: 8.16.0 + pg-pool@3.10.1(pg@8.16.1): + dependencies: + pg: 8.16.1 + pg-protocol@1.10.0: {} + pg-protocol@1.10.1: {} + pg-types@2.2.0: dependencies: pg-int8: 1.0.1 @@ -6312,6 +6161,16 @@ snapshots: optionalDependencies: pg-cloudflare: 1.2.5 + pg@8.16.1: + dependencies: + pg-connection-string: 2.9.1 + pg-pool: 3.10.1(pg@8.16.1) + pg-protocol: 1.10.1 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.2.6 + pgpass@1.0.5: dependencies: split2: 4.2.0 @@ -6409,11 +6268,11 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-load-config@6.0.1(tsx@4.19.4): + postcss-load-config@6.0.1(tsx@4.20.3): dependencies: lilconfig: 3.1.3 optionalDependencies: - tsx: 4.19.4 + tsx: 4.20.3 postgres-array@2.0.0: {} @@ -6610,18 +6469,10 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.26.2 - rollup-plugin-dts@6.2.1(rollup@4.41.1)(typescript@5.8.3): + rollup-plugin-dts@6.2.1(rollup@4.44.0)(typescript@5.8.3): dependencies: magic-string: 0.30.17 - rollup: 4.41.1 - typescript: 5.8.3 - optionalDependencies: - '@babel/code-frame': 7.26.2 - - rollup-plugin-dts@6.2.1(rollup@4.42.0)(typescript@5.8.3): - dependencies: - magic-string: 0.30.17 - rollup: 4.42.0 + rollup: 4.44.0 typescript: 5.8.3 optionalDependencies: '@babel/code-frame': 7.26.2 @@ -6637,24 +6488,13 @@ snapshots: transitivePeerDependencies: - supports-color - rollup-plugin-esbuild@6.2.1(esbuild@0.25.0)(rollup@4.41.1): + rollup-plugin-esbuild@6.2.1(esbuild@0.25.0)(rollup@4.44.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.41.1 - unplugin-utils: 0.2.4 - transitivePeerDependencies: - - supports-color - - rollup-plugin-esbuild@6.2.1(esbuild@0.25.0)(rollup@4.42.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.42.0 + rollup: 4.44.0 unplugin-utils: 0.2.4 transitivePeerDependencies: - supports-color @@ -6695,56 +6535,30 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.41.0 fsevents: 2.3.3 - rollup@4.41.1: + rollup@4.44.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.41.1 - '@rollup/rollup-android-arm64': 4.41.1 - '@rollup/rollup-darwin-arm64': 4.41.1 - '@rollup/rollup-darwin-x64': 4.41.1 - '@rollup/rollup-freebsd-arm64': 4.41.1 - '@rollup/rollup-freebsd-x64': 4.41.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 - '@rollup/rollup-linux-arm-musleabihf': 4.41.1 - '@rollup/rollup-linux-arm64-gnu': 4.41.1 - '@rollup/rollup-linux-arm64-musl': 4.41.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 - '@rollup/rollup-linux-riscv64-gnu': 4.41.1 - '@rollup/rollup-linux-riscv64-musl': 4.41.1 - '@rollup/rollup-linux-s390x-gnu': 4.41.1 - '@rollup/rollup-linux-x64-gnu': 4.41.1 - '@rollup/rollup-linux-x64-musl': 4.41.1 - '@rollup/rollup-win32-arm64-msvc': 4.41.1 - '@rollup/rollup-win32-ia32-msvc': 4.41.1 - '@rollup/rollup-win32-x64-msvc': 4.41.1 - fsevents: 2.3.3 - - rollup@4.42.0: - dependencies: - '@types/estree': 1.0.7 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.42.0 - '@rollup/rollup-android-arm64': 4.42.0 - '@rollup/rollup-darwin-arm64': 4.42.0 - '@rollup/rollup-darwin-x64': 4.42.0 - '@rollup/rollup-freebsd-arm64': 4.42.0 - '@rollup/rollup-freebsd-x64': 4.42.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.42.0 - '@rollup/rollup-linux-arm-musleabihf': 4.42.0 - '@rollup/rollup-linux-arm64-gnu': 4.42.0 - '@rollup/rollup-linux-arm64-musl': 4.42.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.42.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.42.0 - '@rollup/rollup-linux-riscv64-gnu': 4.42.0 - '@rollup/rollup-linux-riscv64-musl': 4.42.0 - '@rollup/rollup-linux-s390x-gnu': 4.42.0 - '@rollup/rollup-linux-x64-gnu': 4.42.0 - '@rollup/rollup-linux-x64-musl': 4.42.0 - '@rollup/rollup-win32-arm64-msvc': 4.42.0 - '@rollup/rollup-win32-ia32-msvc': 4.42.0 - '@rollup/rollup-win32-x64-msvc': 4.42.0 + '@rollup/rollup-android-arm-eabi': 4.44.0 + '@rollup/rollup-android-arm64': 4.44.0 + '@rollup/rollup-darwin-arm64': 4.44.0 + '@rollup/rollup-darwin-x64': 4.44.0 + '@rollup/rollup-freebsd-arm64': 4.44.0 + '@rollup/rollup-freebsd-x64': 4.44.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.44.0 + '@rollup/rollup-linux-arm-musleabihf': 4.44.0 + '@rollup/rollup-linux-arm64-gnu': 4.44.0 + '@rollup/rollup-linux-arm64-musl': 4.44.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.44.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.44.0 + '@rollup/rollup-linux-riscv64-gnu': 4.44.0 + '@rollup/rollup-linux-riscv64-musl': 4.44.0 + '@rollup/rollup-linux-s390x-gnu': 4.44.0 + '@rollup/rollup-linux-x64-gnu': 4.44.0 + '@rollup/rollup-linux-x64-musl': 4.44.0 + '@rollup/rollup-win32-arm64-msvc': 4.44.0 + '@rollup/rollup-win32-ia32-msvc': 4.44.0 + '@rollup/rollup-win32-x64-msvc': 4.44.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -6817,6 +6631,30 @@ snapshots: transitivePeerDependencies: - supports-color + sequelize@6.37.7(pg@8.16.1)(sqlite3@5.1.7): + dependencies: + '@types/debug': 4.1.12 + '@types/validator': 13.12.2 + debug: 4.4.0(supports-color@5.5.0) + dottie: 2.0.6 + inflection: 1.13.4 + lodash: 4.17.21 + moment: 2.30.1 + moment-timezone: 0.5.45 + pg-connection-string: 2.7.0 + retry-as-promised: 7.0.4 + semver: 7.7.1 + sequelize-pool: 7.1.0 + toposort-class: 1.0.1 + uuid: 8.3.2 + validator: 13.12.0 + wkx: 0.5.0 + optionalDependencies: + pg: 8.16.1 + sqlite3: 5.1.7 + transitivePeerDependencies: + - supports-color + set-blocking@2.0.0: optional: true @@ -7213,7 +7051,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.4.0(tsx@4.19.4)(typescript@5.8.3): + tsup@8.4.0(tsx@4.20.3)(typescript@5.8.3): dependencies: bundle-require: 5.1.0(esbuild@0.25.0) cac: 6.7.14 @@ -7223,9 +7061,9 @@ snapshots: esbuild: 0.25.0 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(tsx@4.19.4) + postcss-load-config: 6.0.1(tsx@4.20.3) resolve-from: 5.0.0 - rollup: 4.42.0 + rollup: 4.44.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 @@ -7246,6 +7084,13 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tsx@4.20.3: + dependencies: + esbuild: 0.25.0 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -7335,6 +7180,8 @@ snapshots: undici-types@6.21.0: {} + undici-types@7.8.0: {} + undici@7.8.0: {} unescape@1.0.1: @@ -7451,7 +7298,7 @@ snapshots: wkx@0.5.0: dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 wrap-ansi@7.0.0: dependencies: @@ -7510,6 +7357,4 @@ snapshots: zod@3.25.1: {} - zod@3.25.28: {} - - zod@3.25.56: {} + zod@3.25.67: {} diff --git a/src/app-demo/index.ts b/src/app-demo/index.ts index 366a77c..596c6fd 100644 --- a/src/app-demo/index.ts +++ b/src/app-demo/index.ts @@ -19,7 +19,7 @@ app const { rows: appDemo, count } = await AppDemoModel.findAndCountAll({ where: { - uid: tokenUser.uid, + uid: tokenUser.id, ...searchWhere, }, offset: (page - 1) * pageSize, @@ -90,7 +90,7 @@ app ctx.throw(400, 'id is required'); } const appDemo = await AppDemoModel.findByPk(id); - if (appDemo.uid !== tokenUser.uid) { + if (appDemo.uid !== tokenUser.id) { ctx.throw(403, 'No permission'); } await appDemo.destroy({ force }); @@ -111,7 +111,7 @@ app ctx.throw(400, 'id is required'); } const appDemo = await AppDemoModel.findByPk(id); - if (appDemo.uid !== tokenUser.uid) { + if (appDemo.uid !== tokenUser.id) { ctx.throw(403, 'No permission'); } ctx.body = appDemo; diff --git a/src/app.ts b/src/app.ts index 47f49dc..f3ddee5 100644 --- a/src/app.ts +++ b/src/app.ts @@ -2,7 +2,7 @@ import { App } from '@kevisual/router'; import * as redisLib from './modules/redis.ts'; import * as minioLib from './modules/minio.ts'; import * as sequelizeLib from './modules/sequelize.ts'; -import { useContextKey, useContext } from '@kevisual/use-config/context'; +import { useContextKey } from '@kevisual/context'; import { SimpleRouter } from '@kevisual/router/simple'; import { OssBase } from '@kevisual/oss/services'; export const router = useContextKey('router', () => new SimpleRouter()); diff --git a/src/models/org.ts b/src/models/org.ts index b16fb97..66bed82 100644 --- a/src/models/org.ts +++ b/src/models/org.ts @@ -42,7 +42,5 @@ // }); // useContextKey('OrgModel', () => Org); -import { Org, OrgInit } from '@kevisual/code-center-module/models'; +import { Org } from '@kevisual/code-center-module/models'; export { Org }; - -OrgInit(); diff --git a/src/models/user.ts b/src/models/user.ts index b327f4d..62272fc 100644 --- a/src/models/user.ts +++ b/src/models/user.ts @@ -1,6 +1,7 @@ import { User, UserInit, UserServices } from '@kevisual/code-center-module/models'; -export { User, UserInit, UserServices }; +import { UserSecretInit, UserSecret } from '@kevisual/code-center-module/models'; import { OrgInit } from '@kevisual/code-center-module/models'; +export { User, UserInit, UserServices, UserSecret }; const init = async () => { await OrgInit(null, null, { alter: true, @@ -14,5 +15,11 @@ const init = async () => { }).catch((e) => { console.error('User sync', e); }); + await UserSecretInit(null, null, { + alter: true, + logging: false, + }).catch((e) => { + console.error('UserSecret sync', e); + }); }; init(); diff --git a/src/routes-simple/resources/chunk.ts b/src/routes-simple/resources/chunk.ts index 5d1f7b2..82b1c49 100644 --- a/src/routes-simple/resources/chunk.ts +++ b/src/routes-simple/resources/chunk.ts @@ -1,9 +1,8 @@ import { useFileStore } from '@kevisual/use-config/file-store'; import { checkAuth, error, router, writeEvents, getKey, getTaskId } from '../router.ts'; import { IncomingForm } from 'formidable'; -import { app, minioClient } from '@/app.ts'; +import { app, oss } from '@/app.ts'; -import { bucketName } from '@/modules/minio.ts'; import { getContentType } from '@/utils/get-content-type.ts'; import { User } from '@/models/user.ts'; import fs from 'fs'; @@ -124,8 +123,9 @@ router.post('/api/s1/resources/upload/chunk', async (req, res) => { if (share) { metadata.share = 'public'; } + const bucketName = oss.bucketName; // All chunks uploaded, now upload to MinIO - await minioClient.fPutObject(bucketName, minioPath, finalFilePath, { + await oss.client.fPutObject(bucketName, minioPath, finalFilePath, { 'Content-Type': getContentType(relativePath), 'app-source': 'user-app', 'Cache-Control': relativePath.endsWith('.html') ? 'no-cache' : 'max-age=31536000, immutable', diff --git a/src/routes-simple/resources/upload.ts b/src/routes-simple/resources/upload.ts index 644d88e..792ca18 100644 --- a/src/routes-simple/resources/upload.ts +++ b/src/routes-simple/resources/upload.ts @@ -35,6 +35,7 @@ router.post('/api/s1/resources/upload/check', async (req, res) => { return; } console.log('data', req.url); + res.writeHead(200, { 'Content-Type': 'application/json' }); const data = await router.getBody(req); type Data = { appKey: string; diff --git a/src/routes/file-listener/model.ts b/src/routes/file-listener/model.ts index 48c7043..8858ddf 100644 --- a/src/routes/file-listener/model.ts +++ b/src/routes/file-listener/model.ts @@ -1,3 +1,3 @@ -import { FileSyncModel, FileSyncModelType } from '@kevisual/file-listener/src/file-sync/model.ts'; - +import { FileSyncModel } from '@kevisual/file-listener/src/file-sync/model.ts'; +import type { FileSyncModelType } from '@kevisual/file-listener/src/file-sync/model.ts'; export { FileSyncModel, FileSyncModelType }; diff --git a/src/routes/micro-app/list.ts b/src/routes/micro-app/list.ts index e09ff47..b18cdef 100644 --- a/src/routes/micro-app/list.ts +++ b/src/routes/micro-app/list.ts @@ -19,7 +19,7 @@ app const tokenUser = ctx.state.tokenUser; const data = ctx.query?.data; const { id, key, force, install, appKey: postAppKey, version: postVersion = '1.0.0' } = data; - if (!id || !postAppKey) { + if (!id && !postAppKey) { ctx.throw(400, 'Invalid id or postAppKey'); } let username = tokenUser.username; diff --git a/src/routes/user/index.ts b/src/routes/user/index.ts index 7a39de9..d7718af 100644 --- a/src/routes/user/index.ts +++ b/src/routes/user/index.ts @@ -3,12 +3,14 @@ import './org.ts'; import './me.ts'; -import './update.ts' +import './update.ts'; -import './init.ts' +import './init.ts'; -import './web-login.ts' +import './web-login.ts'; -import './org-user/list.ts' +import './org-user/list.ts'; -import './admin/user.ts'; \ No newline at end of file +import './admin/user.ts'; + +import './secret-key/list.ts'; diff --git a/src/routes/user/secret-key/list.ts b/src/routes/user/secret-key/list.ts new file mode 100644 index 0000000..a946d73 --- /dev/null +++ b/src/routes/user/secret-key/list.ts @@ -0,0 +1,136 @@ +import { Op } from 'sequelize'; +import { User, UserSecret } from '@/models/user.ts'; +import { app } from '@/app.ts'; + +app + .route({ + path: 'secret', + key: 'list', + middleware: ['auth'], + }) + .define(async (ctx) => { + const tokenUser = ctx.state.tokenUser; + const { page = 1, pageSize = 20, search, sort = 'DESC', orgId } = ctx.query; + const searchWhere: Record = search + ? { + [Op.or]: [{ title: { [Op.like]: `%${search}%` } }, { description: { [Op.like]: `%${search}%` } }], + } + : {}; + if (orgId) { + searchWhere.orgId = orgId; + } + const { rows: secrets, count } = await UserSecret.findAndCountAll({ + where: { + userId: tokenUser.userId, + ...searchWhere, + }, + offset: (page - 1) * pageSize, + limit: pageSize, + attributes: { + exclude: ['token'], // Exclude sensitive token field + }, + order: [['updatedAt', sort]], + }); + + ctx.body = { + list: secrets, + pagination: { + page, + current: page, + pageSize, + total: count, + }, + }; + }) + .addTo(app); + +app + .route({ + path: 'secret', + key: 'update', + middleware: ['auth'], + }) + .define(async (ctx) => { + const tokenUser = ctx.state.tokenUser; + const { id, updatedAt: _clear, createdAt: _clear2, token, ...rest } = ctx.query.data; + let secret: UserSecret; + let isNew = false; + + if (id) { + secret = await UserSecret.findByPk(id); + if (!secret) { + ctx.throw(404, 'Secret not found'); + } + + if (secret.userId !== tokenUser.userId) { + ctx.throw(403, 'No permission'); + } + } else { + secret = await UserSecret.createSecret(tokenUser); + isNew = true; + } + if (secret) { + secret = await secret.update({ + ...rest, + }); + } + + ctx.body = secret; + }) + .addTo(app); + +app + .route({ + path: 'secret', + key: 'delete', + middleware: ['auth'], + }) + .define(async (ctx) => { + const tokenUser = ctx.state.tokenUser; + const { id } = ctx.query.data || {}; + + if (!id) { + ctx.throw(400, 'id is required'); + } + + const secret = await UserSecret.findByPk(id); + + if (!secret) { + ctx.throw(404, 'Secret not found'); + } + if (secret.userId !== tokenUser.userId) { + ctx.throw(403, 'No permission'); + } + + await secret.destroy(); + ctx.body = secret; + }) + .addTo(app); + +app + .route({ + path: 'secret', + 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 secret = await UserSecret.findByPk(id); + + if (!secret) { + ctx.throw(404, 'Secret not found'); + } + + if (secret.userId !== tokenUser.uid) { + ctx.throw(403, 'No permission'); + } + + ctx.body = secret; + }) + .addTo(app); diff --git a/src/scripts/common-redis.ts b/src/scripts/common-redis.ts new file mode 100644 index 0000000..3ea0593 --- /dev/null +++ b/src/scripts/common-redis.ts @@ -0,0 +1,3 @@ +import * as redisLib from '../modules/redis.ts'; +import { useContextKey, useContext } from '@kevisual/use-config/context'; +export const redis = useContextKey('redis', () => redisLib.redis); diff --git a/src/scripts/common.ts b/src/scripts/common.ts index cd92ab6..9da15be 100644 --- a/src/scripts/common.ts +++ b/src/scripts/common.ts @@ -1,7 +1,8 @@ import { config } from '../modules/config.ts'; import { sequelize } from '../modules/sequelize.ts'; export { program, Command } from '../program.ts'; -import { User, UserInit, OrgInit, Org } from '@kevisual/code-center-module/models'; +// import { User, UserInit, OrgInit, Org, UserSecretInit, UserSecret } from '@kevisual/code-center-module/models'; +import { User, UserInit, OrgInit, Org, UserSecretInit, UserSecret } from '@kevisual/code-center-module/src/core-models.ts'; import { Logger } from '@kevisual/logger'; export const close = async () => { process.exit(0); @@ -22,8 +23,13 @@ export const initUser = async () => { alter: true, logging: false, }); + await UserSecretInit(sequelize, undefined, { + alter: true, + logging: false, + }); return { User: User, Org: Org, + UserSecret: UserSecret, }; }; diff --git a/src/test/create-user-secret.ts b/src/test/create-user-secret.ts new file mode 100644 index 0000000..f7178b2 --- /dev/null +++ b/src/test/create-user-secret.ts @@ -0,0 +1,62 @@ +import { sequelize } from '../modules/sequelize.ts'; +import { initUser } from '../scripts/common.ts'; +import '../scripts/common-redis.ts'; +import { useContextKey } from '@kevisual/use-config/context'; + +export const main = async () => { + const models = await initUser(); + + const username = 'root'; + const orgname = 'admin'; + + const user = await models.User.findOne({ where: { username } }); + const org = await models.User.findOne({ where: { username: orgname } }); + + console.log('user.id', user?.id); + console.log('org.id', org?.id); + // const userSecret1 = await models.UserSecret.createSecret(user?.id!); + // userSecret1.title = 'root secret'; + // await userSecret1.save(); + // await models.UserSecret.destroy({ + // where: { + // orgId: '16a496d4-8cd6-4e02-b403-c2adc006a53d', + // }, + // }); + const userSecret2 = await models.UserSecret.createSecret(user?.id!, org?.id!); + userSecret2.title = 'root org secret'; + await userSecret2.save(); + + const secretList = await models.UserSecret.findAll(); + for (const secret of secretList) { + console.log(`\nSecret ID: ${secret.id}, User ID: ${secret.userId}, Org ID: ${secret.orgId}, Token: ${secret.token}, Expired Time: ${secret.expiredTime}`); + } + process.exit(0); +}; + +main(); + +export const dropTable = async () => { + await sequelize.query('DROP TABLE IF EXISTS "cf_user_secrets"'); + console.log('UserSecret table dropped'); + process.exit(0); +}; + +// dropTable() + +const token1 = 'sk_tvwzgp5lky8iupawh0encvd52vji4o8argvd2x668gn15q83xpgo8fe10ny7wfsq'; +const orgToken2 = 'sk_x37p8iifh6k18c3f121w49nmfy1sbjqpyol9fcsz0lmc5dz493wrfwvtxc4gi9od'; + +export const main2 = async () => { + const redis = useContextKey('redis'); + if (!redis) { + console.error('Redis is not initialized'); + return; + } + const models = await initUser(); + const UserSecret = models.UserSecret; + const v = await models.UserSecret.verifyToken(token1); + console.log('verifyToken', v); + process.exit(0); +}; + +// main2(); diff --git a/submodules/code-center-module b/submodules/code-center-module index 83f65e1..922b0c4 160000 --- a/submodules/code-center-module +++ b/submodules/code-center-module @@ -1 +1 @@ -Subproject commit 83f65e1554ef051e2164264df18496a90cede3c0 +Subproject commit 922b0c421f02bf6b63a0d9a52ca5b8af38c591cf diff --git a/submodules/oss b/submodules/oss index cd43d66..7e3b748 160000 --- a/submodules/oss +++ b/submodules/oss @@ -1 +1 @@ -Subproject commit cd43d662653c8e87648a9ea8c3ff4aa63821ac70 +Subproject commit 7e3b748d30a2be454edee8aebefb07b28901ec3a