diff --git a/package.json b/package.json index 04d8e58..633c929 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kevisual/envision-cli", - "version": "0.0.6", + "version": "0.0.10", "description": "envision command tools", "main": "dist/index.js", "type": "module", @@ -14,8 +14,7 @@ ], "scripts": { "dev": "tsx src/run.ts ", - "build": "rimraf dist && rollup -c", - "b": "./bin/envision.js" + "build": "rimraf dist && rollup -c" }, "keywords": [ "kevisual", @@ -28,6 +27,7 @@ "@rollup/plugin-commonjs": "^28.0.1", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.3.0", + "@rollup/plugin-replace": "^6.0.1", "@rollup/plugin-typescript": "^12.1.1", "@types/node": "^22.10.1", "chalk": "^5.3.0", @@ -39,7 +39,7 @@ "ignore": "^6.0.2", "inquirer": "^12.1.0", "rimraf": "^6.0.1", - "rollup": "^4.27.4", + "rollup": "^4.28.0", "rollup-plugin-dts": "^6.1.1", "rollup-plugin-esbuild": "^6.1.1", "tar": "^7.4.3", @@ -50,16 +50,16 @@ "picomatch": "^4" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" }, "publishConfig": { "access": "public" }, "dependencies": { - "@kevisual/router": "^0.0.5", + "@kevisual/router": "^0.0.6-alpha-2", "pg-hstore": "^2.3.4", "sequelize": "^6.37.5", "sqlite3": "^5.1.7", - "vite": "^6.0.1" + "vite": "^6.0.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a489980..e58c74d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: .: dependencies: '@kevisual/router': - specifier: ^0.0.3 - version: 0.0.3 + specifier: ^0.0.6-alpha-2 + version: 0.0.6-alpha-2 pg-hstore: specifier: ^2.3.4 version: 2.3.4 @@ -24,30 +24,33 @@ importers: specifier: ^5.1.7 version: 5.1.7 vite: - specifier: ^5.4.10 - version: 5.4.10(@types/node@22.8.6) + specifier: ^6.0.2 + version: 6.0.2(@types/node@22.10.1) devDependencies: '@kevisual/query': specifier: 0.0.7-alpha.3 version: 0.0.7-alpha.3 '@rollup/plugin-alias': specifier: ^5.1.1 - version: 5.1.1(rollup@4.24.3) + version: 5.1.1(rollup@4.28.0) '@rollup/plugin-commonjs': specifier: ^28.0.1 - version: 28.0.1(rollup@4.24.3) + version: 28.0.1(rollup@4.28.0) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.24.3) + version: 6.1.0(rollup@4.28.0) '@rollup/plugin-node-resolve': specifier: ^15.3.0 - version: 15.3.0(rollup@4.24.3) + version: 15.3.0(rollup@4.28.0) + '@rollup/plugin-replace': + specifier: ^6.0.1 + version: 6.0.1(rollup@4.28.0) '@rollup/plugin-typescript': specifier: ^12.1.1 - version: 12.1.1(rollup@4.24.3)(tslib@2.8.1)(typescript@5.6.3) + version: 12.1.1(rollup@4.28.0)(tslib@2.8.1)(typescript@5.7.2) '@types/node': - specifier: ^22.8.6 - version: 22.8.6 + specifier: ^22.10.1 + version: 22.10.1 chalk: specifier: ^5.3.0 version: 5.3.0 @@ -70,20 +73,20 @@ importers: specifier: ^6.0.2 version: 6.0.2 inquirer: - specifier: ^12.0.1 - version: 12.0.1(@types/node@22.8.6) + specifier: ^12.1.0 + version: 12.1.0(@types/node@22.10.1) rimraf: specifier: ^6.0.1 version: 6.0.1 rollup: - specifier: ^4.24.3 - version: 4.24.3 + specifier: ^4.28.0 + version: 4.28.0 rollup-plugin-dts: specifier: ^6.1.1 - version: 6.1.1(rollup@4.24.3)(typescript@5.6.3) + version: 6.1.1(rollup@4.28.0)(typescript@5.7.2) rollup-plugin-esbuild: specifier: ^6.1.1 - version: 6.1.1(esbuild@0.21.5)(rollup@4.24.3) + version: 6.1.1(esbuild@0.24.0)(rollup@4.28.0) tar: specifier: ^7.4.3 version: 7.4.3 @@ -91,8 +94,8 @@ importers: specifier: ^2.8.1 version: 2.8.1 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages: @@ -104,223 +107,229 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} cpu: [x64] os: [win32] '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - '@inquirer/checkbox@4.0.1': - resolution: {integrity: sha512-ehJjmNPdguajc1hStvjN7DJNVjwG5LC1mgGMGFjCmdkn2fxB2GtULftMnlaqNmvMdPpqdaSoOFpl86VkLtG4pQ==} + '@inquirer/checkbox@4.0.2': + resolution: {integrity: sha512-+gznPl8ip8P8HYHYecDtUtdsh1t2jvb+sWCD72GAiZ9m45RqwrLmReDaqdC0umQfamtFXVRoMVJ2/qINKGm9Tg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/confirm@5.0.1': - resolution: {integrity: sha512-6ycMm7k7NUApiMGfVc32yIPp28iPKxhGRMqoNDiUjq2RyTAkbs5Fx0TdzBqhabcKvniDdAAvHCmsRjnNfTsogw==} + '@inquirer/confirm@5.0.2': + resolution: {integrity: sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/core@10.0.1': - resolution: {integrity: sha512-KKTgjViBQUi3AAssqjUFMnMO3CM3qwCHvePV9EW+zTKGKafFGFF01sc1yOIYjLJ7QU52G/FbzKc+c01WLzXmVQ==} + '@inquirer/core@10.1.0': + resolution: {integrity: sha512-I+ETk2AL+yAVbvuKx5AJpQmoaWhpiTFOg/UJb7ZkMAK4blmtG8ATh5ct+T/8xNld0CZG/2UhtkdMwpgvld92XQ==} engines: {node: '>=18'} - '@inquirer/editor@4.0.1': - resolution: {integrity: sha512-qAHHJ6hs343eNtCKgV2wV5CImFxYG8J1pl/YCeI5w9VoW7QpulRUU26+4NsMhjR6zDRjKBsH/rRjCIcaAOHsrg==} + '@inquirer/editor@4.1.0': + resolution: {integrity: sha512-K1gGWsxEqO23tVdp5MT3H799OZ4ER1za7Dlc8F4um0W7lwSv0KGR/YyrUEyimj0g7dXZd8XknM/5QA2/Uy+TbA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/expand@4.0.1': - resolution: {integrity: sha512-9anjpdc802YInXekwePsa5LWySzVMHbhVS6v6n5IJxrl8w09mODOeP69wZ1d0WrOvot2buQSmYp4lW/pq8y+zQ==} + '@inquirer/expand@4.0.2': + resolution: {integrity: sha512-WdgCX1cUtinz+syKyZdJomovULYlKUWZbVYZzhf+ZeeYf4htAQ3jLymoNs3koIAKfZZl3HUBb819ClCBfyznaw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/figures@1.0.7': - resolution: {integrity: sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==} + '@inquirer/figures@1.0.8': + resolution: {integrity: sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==} engines: {node: '>=18'} - '@inquirer/input@4.0.1': - resolution: {integrity: sha512-m+SliZ2m43cDRIpAdQxfv5QOeAQCuhS8TGLvtzEP1An4IH1kBES4RLMRgE/fC+z29aN8qYG8Tq/eXQQKTYwqAg==} + '@inquirer/input@4.0.2': + resolution: {integrity: sha512-yCLCraigU085EcdpIVEDgyfGv4vBiE4I+k1qRkc9C5dMjWF42ADMGy1RFU94+eZlz4YlkmFsiyHZy0W1wdhaNg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/number@3.0.1': - resolution: {integrity: sha512-gF3erqfm0snpwBjbyKXUUe17QJ7ebm49btXApajrM0rgCCoYX0o9W5NCuYNae87iPxaIJVjtuoQ42DX32IdbMA==} + '@inquirer/number@3.0.2': + resolution: {integrity: sha512-MKQhYofdUNk7eqJtz52KvM1dH6R93OMrqHduXCvuefKrsiMjHiMwjc3NZw5Imm2nqY7gWd9xdhYrtcHMJQZUxA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/password@4.0.1': - resolution: {integrity: sha512-D7zUuX4l4ZpL3D7/SWu9ibijP09jigwHi/gfUHLx5GMS5oXzuMfPV2xPMG1tskco4enTx70HA0VtMXecerpvbg==} + '@inquirer/password@4.0.2': + resolution: {integrity: sha512-tQXGSu7IO07gsYlGy3VgXRVsbOWqFBMbqAUrJSc1PDTQQ5Qdm+QVwkP0OC0jnUZ62D19iPgXOMO+tnWG+HhjNQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/prompts@7.0.1': - resolution: {integrity: sha512-cu2CpGC2hz7WTt2VBvdkzahDvYice6vYA/8Dm7Fy3tRNzKuQTF2EY3CV4H2GamveWE6tA2XzyXtbWX8+t4WMQg==} + '@inquirer/prompts@7.1.0': + resolution: {integrity: sha512-5U/XiVRH2pp1X6gpNAjWOglMf38/Ys522ncEHIKT1voRUvSj/DQnR22OVxHnwu5S+rCFaUiPQ57JOtMFQayqYA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/rawlist@4.0.1': - resolution: {integrity: sha512-0LuMOgaWs7W8JNcbiKkoFwyWFDEeCmLqDCygF0hidQUVa6J5grFVRZxrpompiWDFM49Km2rf7WoZwRo1uf1yWQ==} + '@inquirer/rawlist@4.0.2': + resolution: {integrity: sha512-3XGcskMoVF8H0Dl1S5TSZ3rMPPBWXRcM0VeNVsS4ByWeWjSeb0lPqfnBg6N7T0608I1B2bSVnbi2cwCrmOD1Yw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/search@3.0.1': - resolution: {integrity: sha512-ehMqjiO0pAf+KtdONKeCLVy4i3fy3feyRRhDrvzWhiwB8JccgKn7eHFr39l+Nx/FaZAhr0YxIJvkK5NuNvG+Ww==} + '@inquirer/search@3.0.2': + resolution: {integrity: sha512-Zv4FC7w4dJ13BOJfKRQCICQfShinGjb1bCEIHxTSnjj2telu3+3RHwHubPG9HyD4aix5s+lyAMEK/wSFD75HLA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/select@4.0.1': - resolution: {integrity: sha512-tVRatFRGU49bxFCKi/3P+C0E13KZduNFbWuHWRx0L2+jbiyKRpXgHp9qiRHWRk/KarhYBXzH/di6w3VQ5aJd5w==} + '@inquirer/select@4.0.2': + resolution: {integrity: sha512-uSWUzaSYAEj0hlzxa1mUB6VqrKaYx0QxGBLZzU4xWFxaSyGaXxsSE4OSOwdU24j0xl8OajgayqFXW0l2bkl2kg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/type@3.0.0': - resolution: {integrity: sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog==} + '@inquirer/type@3.0.1': + resolution: {integrity: sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -339,8 +348,8 @@ packages: '@kevisual/query@0.0.7-alpha.3': resolution: {integrity: sha512-zNTIbyU87dlp8ZeLvPoc1ou7cZCL60to4xptyMD3VKsldL/dDSAMf7JWwUivNiq9lRxk9KVEZA7YX558mzeQcw==} - '@kevisual/router@0.0.3': - resolution: {integrity: sha512-azWjrcto8ngTK/Jq9LiFcIFnop9Oi7jJzH+tqNXvjwMA3Ex3lLRslhsRZrJLGSx8VFaHRf9+7LN7ceMJfozyhw==} + '@kevisual/router@0.0.6-alpha-2': + resolution: {integrity: sha512-P9rarSQG0tp8L3GSgivYZQ//SugEt6/YCzNE8087KsRIdF1g0v8rXGfi1G3b8cXRz/ip79Lb+caU7LsoAQhmOQ==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -402,6 +411,15 @@ packages: rollup: optional: true + '@rollup/plugin-replace@6.0.1': + resolution: {integrity: sha512-2sPh9b73dj5IxuMmDAsQWVFT7mR+yoHweBaXG2W/R8vQ+IWZlnaI7BR7J6EguVQUp1hd8Z7XuozpDjEKQAAC2Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-typescript@12.1.1': resolution: {integrity: sha512-t7O653DpfB5MbFrqPe/VcKFFkvRuFNp9qId3xq4Eth5xlyymzxNpye2z8Hrl0RIMuXTSr5GGcFpkdlMeacUiFQ==} engines: {node: '>=14.0.0'} @@ -424,102 +442,102 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.3': - resolution: {integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==} + '@rollup/rollup-android-arm-eabi@4.28.0': + resolution: {integrity: sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.3': - resolution: {integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==} + '@rollup/rollup-android-arm64@4.28.0': + resolution: {integrity: sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.3': - resolution: {integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==} + '@rollup/rollup-darwin-arm64@4.28.0': + resolution: {integrity: sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.3': - resolution: {integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==} + '@rollup/rollup-darwin-x64@4.28.0': + resolution: {integrity: sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.24.3': - resolution: {integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==} + '@rollup/rollup-freebsd-arm64@4.28.0': + resolution: {integrity: sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.24.3': - resolution: {integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==} + '@rollup/rollup-freebsd-x64@4.28.0': + resolution: {integrity: sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.24.3': - resolution: {integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==} + '@rollup/rollup-linux-arm-gnueabihf@4.28.0': + resolution: {integrity: sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.24.3': - resolution: {integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==} + '@rollup/rollup-linux-arm-musleabihf@4.28.0': + resolution: {integrity: sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.24.3': - resolution: {integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==} + '@rollup/rollup-linux-arm64-gnu@4.28.0': + resolution: {integrity: sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.24.3': - resolution: {integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==} + '@rollup/rollup-linux-arm64-musl@4.28.0': + resolution: {integrity: sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': - resolution: {integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==} + '@rollup/rollup-linux-powerpc64le-gnu@4.28.0': + resolution: {integrity: sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.24.3': - resolution: {integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==} + '@rollup/rollup-linux-riscv64-gnu@4.28.0': + resolution: {integrity: sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.24.3': - resolution: {integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==} + '@rollup/rollup-linux-s390x-gnu@4.28.0': + resolution: {integrity: sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.24.3': - resolution: {integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==} + '@rollup/rollup-linux-x64-gnu@4.28.0': + resolution: {integrity: sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.24.3': - resolution: {integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==} + '@rollup/rollup-linux-x64-musl@4.28.0': + resolution: {integrity: sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-win32-arm64-msvc@4.24.3': - resolution: {integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==} + '@rollup/rollup-win32-arm64-msvc@4.28.0': + resolution: {integrity: sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.3': - resolution: {integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==} + '@rollup/rollup-win32-ia32-msvc@4.28.0': + resolution: {integrity: sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.3': - resolution: {integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==} + '@rollup/rollup-win32-x64-msvc@4.28.0': + resolution: {integrity: sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==} cpu: [x64] os: [win32] @@ -536,8 +554,11 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@22.8.6': - resolution: {integrity: sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==} + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@22.10.1': + resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -738,9 +759,9 @@ packages: es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} hasBin: true estree-walker@2.0.2: @@ -898,8 +919,8 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - inquirer@12.0.1: - resolution: {integrity: sha512-o11Jc2Go6wDZA17SWofiJ6L8k7mB8lsdKB/QY0bI+8e+ATiAvQzmROjqoTd1iAY8RI6N/EDcQcxbQa4JYviDWg==} + inquirer@12.1.0: + resolution: {integrity: sha512-3/iexk64jn3EF0tjWYfOJi/DNWtcSSwg4ER67cnopO2xlCTUQjFCTMH9NBNQAMO/+dC3sEvKJtGJsqXnCkSsFg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1093,6 +1114,10 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + node-gyp@8.4.1: resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} engines: {node: '>= 10.12.0'} @@ -1141,6 +1166,10 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + pg-connection-string@2.7.0: resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} @@ -1155,8 +1184,8 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} prebuild-install@7.1.2: @@ -1236,8 +1265,8 @@ packages: esbuild: '>=0.18.0' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - rollup@4.24.3: - resolution: {integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==} + rollup@4.28.0: + resolution: {integrity: sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1257,6 +1286,10 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -1412,16 +1445,16 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} hasBin: true underscore@1.13.7: resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} @@ -1440,22 +1473,27 @@ packages: resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} engines: {node: '>= 0.10'} - vite@5.4.10: - resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} - engines: {node: ^18.0.0 || >=20.0.0} + vite@6.0.2: + resolution: {integrity: sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -1470,6 +1508,10 @@ packages: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -1532,97 +1574,100 @@ snapshots: '@babel/helper-validator-identifier@7.25.9': optional: true - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/aix-ppc64@0.24.0': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-arm64@0.24.0': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/android-arm@0.24.0': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/android-x64@0.24.0': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/darwin-arm64@0.24.0': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/darwin-x64@0.24.0': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/freebsd-arm64@0.24.0': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/freebsd-x64@0.24.0': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-arm64@0.24.0': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-arm@0.24.0': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-ia32@0.24.0': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-loong64@0.24.0': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-mips64el@0.24.0': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-ppc64@0.24.0': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-riscv64@0.24.0': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-s390x@0.24.0': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/linux-x64@0.24.0': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-arm64@0.24.0': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/openbsd-x64@0.24.0': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/sunos-x64@0.24.0': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-arm64@0.24.0': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-ia32@0.24.0': + optional: true + + '@esbuild/win32-x64@0.24.0': optional: true '@gar/promisify@1.1.3': optional: true - '@inquirer/checkbox@4.0.1(@types/node@22.8.6)': + '@inquirer/checkbox@4.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/figures': 1.0.7 - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/figures': 1.0.8 + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 - '@inquirer/confirm@5.0.1(@types/node@22.8.6)': + '@inquirer/confirm@5.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 - '@inquirer/core@10.0.1(@types/node@22.8.6)': + '@inquirer/core@10.1.0(@types/node@22.10.1)': dependencies: - '@inquirer/figures': 1.0.7 - '@inquirer/type': 3.0.0(@types/node@22.8.6) + '@inquirer/figures': 1.0.8 + '@inquirer/type': 3.0.1(@types/node@22.10.1) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -1633,82 +1678,82 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@inquirer/editor@4.0.1(@types/node@22.8.6)': + '@inquirer/editor@4.1.0(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 external-editor: 3.1.0 - '@inquirer/expand@4.0.1(@types/node@22.8.6)': + '@inquirer/expand@4.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 yoctocolors-cjs: 2.1.2 - '@inquirer/figures@1.0.7': {} + '@inquirer/figures@1.0.8': {} - '@inquirer/input@4.0.1(@types/node@22.8.6)': + '@inquirer/input@4.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 - '@inquirer/number@3.0.1(@types/node@22.8.6)': + '@inquirer/number@3.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 - '@inquirer/password@4.0.1(@types/node@22.8.6)': + '@inquirer/password@4.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 ansi-escapes: 4.3.2 - '@inquirer/prompts@7.0.1(@types/node@22.8.6)': + '@inquirer/prompts@7.1.0(@types/node@22.10.1)': dependencies: - '@inquirer/checkbox': 4.0.1(@types/node@22.8.6) - '@inquirer/confirm': 5.0.1(@types/node@22.8.6) - '@inquirer/editor': 4.0.1(@types/node@22.8.6) - '@inquirer/expand': 4.0.1(@types/node@22.8.6) - '@inquirer/input': 4.0.1(@types/node@22.8.6) - '@inquirer/number': 3.0.1(@types/node@22.8.6) - '@inquirer/password': 4.0.1(@types/node@22.8.6) - '@inquirer/rawlist': 4.0.1(@types/node@22.8.6) - '@inquirer/search': 3.0.1(@types/node@22.8.6) - '@inquirer/select': 4.0.1(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/checkbox': 4.0.2(@types/node@22.10.1) + '@inquirer/confirm': 5.0.2(@types/node@22.10.1) + '@inquirer/editor': 4.1.0(@types/node@22.10.1) + '@inquirer/expand': 4.0.2(@types/node@22.10.1) + '@inquirer/input': 4.0.2(@types/node@22.10.1) + '@inquirer/number': 3.0.2(@types/node@22.10.1) + '@inquirer/password': 4.0.2(@types/node@22.10.1) + '@inquirer/rawlist': 4.0.2(@types/node@22.10.1) + '@inquirer/search': 3.0.2(@types/node@22.10.1) + '@inquirer/select': 4.0.2(@types/node@22.10.1) + '@types/node': 22.10.1 - '@inquirer/rawlist@4.0.1(@types/node@22.8.6)': + '@inquirer/rawlist@4.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 yoctocolors-cjs: 2.1.2 - '@inquirer/search@3.0.1(@types/node@22.8.6)': + '@inquirer/search@3.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/figures': 1.0.7 - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/figures': 1.0.8 + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 yoctocolors-cjs: 2.1.2 - '@inquirer/select@4.0.1(@types/node@22.8.6)': + '@inquirer/select@4.0.2(@types/node@22.10.1)': dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/figures': 1.0.7 - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/figures': 1.0.8 + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 - '@inquirer/type@3.0.0(@types/node@22.8.6)': + '@inquirer/type@3.0.1(@types/node@22.10.1)': dependencies: - '@types/node': 22.8.6 + '@types/node': 22.10.1 '@isaacs/cliui@8.0.2': dependencies: @@ -1727,8 +1772,10 @@ snapshots: '@kevisual/query@0.0.7-alpha.3': {} - '@kevisual/router@0.0.3': + '@kevisual/router@0.0.6-alpha-2': dependencies: + path-to-regexp: 8.2.0 + selfsigned: 2.4.1 ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -1761,13 +1808,13 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/plugin-alias@5.1.1(rollup@4.24.3)': + '@rollup/plugin-alias@5.1.1(rollup@4.28.0)': optionalDependencies: - rollup: 4.24.3 + rollup: 4.28.0 - '@rollup/plugin-commonjs@28.0.1(rollup@4.24.3)': + '@rollup/plugin-commonjs@28.0.1(rollup@4.28.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.3) + '@rollup/pluginutils': 5.1.2(rollup@4.28.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.0(picomatch@4.0.2) @@ -1775,93 +1822,100 @@ snapshots: magic-string: 0.30.11 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.3 + rollup: 4.28.0 - '@rollup/plugin-json@6.1.0(rollup@4.24.3)': + '@rollup/plugin-json@6.1.0(rollup@4.28.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.3) + '@rollup/pluginutils': 5.1.2(rollup@4.28.0) optionalDependencies: - rollup: 4.24.3 + rollup: 4.28.0 - '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.3)': + '@rollup/plugin-node-resolve@15.3.0(rollup@4.28.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.3) + '@rollup/pluginutils': 5.1.2(rollup@4.28.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.24.3 + rollup: 4.28.0 - '@rollup/plugin-typescript@12.1.1(rollup@4.24.3)(tslib@2.8.1)(typescript@5.6.3)': + '@rollup/plugin-replace@6.0.1(rollup@4.28.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.3) - resolve: 1.22.8 - typescript: 5.6.3 + '@rollup/pluginutils': 5.1.2(rollup@4.28.0) + magic-string: 0.30.11 optionalDependencies: - rollup: 4.24.3 + rollup: 4.28.0 + + '@rollup/plugin-typescript@12.1.1(rollup@4.28.0)(tslib@2.8.1)(typescript@5.7.2)': + dependencies: + '@rollup/pluginutils': 5.1.2(rollup@4.28.0) + resolve: 1.22.8 + typescript: 5.7.2 + optionalDependencies: + rollup: 4.28.0 tslib: 2.8.1 - '@rollup/pluginutils@5.1.2(rollup@4.24.3)': + '@rollup/pluginutils@5.1.2(rollup@4.28.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.3 + rollup: 4.28.0 - '@rollup/rollup-android-arm-eabi@4.24.3': + '@rollup/rollup-android-arm-eabi@4.28.0': optional: true - '@rollup/rollup-android-arm64@4.24.3': + '@rollup/rollup-android-arm64@4.28.0': optional: true - '@rollup/rollup-darwin-arm64@4.24.3': + '@rollup/rollup-darwin-arm64@4.28.0': optional: true - '@rollup/rollup-darwin-x64@4.24.3': + '@rollup/rollup-darwin-x64@4.28.0': optional: true - '@rollup/rollup-freebsd-arm64@4.24.3': + '@rollup/rollup-freebsd-arm64@4.28.0': optional: true - '@rollup/rollup-freebsd-x64@4.24.3': + '@rollup/rollup-freebsd-x64@4.28.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.3': + '@rollup/rollup-linux-arm-gnueabihf@4.28.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.3': + '@rollup/rollup-linux-arm-musleabihf@4.28.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.3': + '@rollup/rollup-linux-arm64-gnu@4.28.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.3': + '@rollup/rollup-linux-arm64-musl@4.28.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': + '@rollup/rollup-linux-powerpc64le-gnu@4.28.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.3': + '@rollup/rollup-linux-riscv64-gnu@4.28.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.3': + '@rollup/rollup-linux-s390x-gnu@4.28.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.3': + '@rollup/rollup-linux-x64-gnu@4.28.0': optional: true - '@rollup/rollup-linux-x64-musl@4.24.3': + '@rollup/rollup-linux-x64-musl@4.28.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.3': + '@rollup/rollup-win32-arm64-msvc@4.28.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.3': + '@rollup/rollup-win32-ia32-msvc@4.28.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.3': + '@rollup/rollup-win32-x64-msvc@4.28.0': optional: true '@tootallnate/once@1.1.2': @@ -1875,9 +1929,13 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@22.8.6': + '@types/node-forge@1.3.11': dependencies: - undici-types: 6.19.8 + '@types/node': 22.10.1 + + '@types/node@22.10.1': + dependencies: + undici-types: 6.20.0 '@types/resolve@1.20.2': {} @@ -2074,31 +2132,32 @@ snapshots: es-module-lexer@1.5.4: {} - esbuild@0.21.5: + esbuild@0.24.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 estree-walker@2.0.2: {} @@ -2278,12 +2337,12 @@ snapshots: ini@1.3.8: {} - inquirer@12.0.1(@types/node@22.8.6): + inquirer@12.1.0(@types/node@22.10.1): dependencies: - '@inquirer/core': 10.0.1(@types/node@22.8.6) - '@inquirer/prompts': 7.0.1(@types/node@22.8.6) - '@inquirer/type': 3.0.0(@types/node@22.8.6) - '@types/node': 22.8.6 + '@inquirer/core': 10.1.0(@types/node@22.10.1) + '@inquirer/prompts': 7.1.0(@types/node@22.10.1) + '@inquirer/type': 3.0.1(@types/node@22.10.1) + '@types/node': 22.10.1 ansi-escapes: 4.3.2 mute-stream: 2.0.0 run-async: 3.0.0 @@ -2480,6 +2539,8 @@ snapshots: node-addon-api@7.1.1: {} + node-forge@1.3.1: {} + node-gyp@8.4.1: dependencies: env-paths: 2.2.1 @@ -2540,6 +2601,8 @@ snapshots: lru-cache: 11.0.1 minipass: 7.1.2 + path-to-regexp@8.2.0: {} + pg-connection-string@2.7.0: {} pg-hstore@2.3.4: @@ -2550,7 +2613,7 @@ snapshots: picomatch@4.0.2: {} - postcss@8.4.47: + postcss@8.4.49: dependencies: nanoid: 3.3.7 picocolors: 1.1.1 @@ -2629,47 +2692,47 @@ snapshots: glob: 11.0.0 package-json-from-dist: 1.0.1 - rollup-plugin-dts@6.1.1(rollup@4.24.3)(typescript@5.6.3): + rollup-plugin-dts@6.1.1(rollup@4.28.0)(typescript@5.7.2): dependencies: magic-string: 0.30.11 - rollup: 4.24.3 - typescript: 5.6.3 + rollup: 4.28.0 + typescript: 5.7.2 optionalDependencies: '@babel/code-frame': 7.26.2 - rollup-plugin-esbuild@6.1.1(esbuild@0.21.5)(rollup@4.24.3): + rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.28.0): dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.3) + '@rollup/pluginutils': 5.1.2(rollup@4.28.0) debug: 4.3.7 es-module-lexer: 1.5.4 - esbuild: 0.21.5 + esbuild: 0.24.0 get-tsconfig: 4.8.1 - rollup: 4.24.3 + rollup: 4.28.0 transitivePeerDependencies: - supports-color - rollup@4.24.3: + rollup@4.28.0: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.3 - '@rollup/rollup-android-arm64': 4.24.3 - '@rollup/rollup-darwin-arm64': 4.24.3 - '@rollup/rollup-darwin-x64': 4.24.3 - '@rollup/rollup-freebsd-arm64': 4.24.3 - '@rollup/rollup-freebsd-x64': 4.24.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.3 - '@rollup/rollup-linux-arm-musleabihf': 4.24.3 - '@rollup/rollup-linux-arm64-gnu': 4.24.3 - '@rollup/rollup-linux-arm64-musl': 4.24.3 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3 - '@rollup/rollup-linux-riscv64-gnu': 4.24.3 - '@rollup/rollup-linux-s390x-gnu': 4.24.3 - '@rollup/rollup-linux-x64-gnu': 4.24.3 - '@rollup/rollup-linux-x64-musl': 4.24.3 - '@rollup/rollup-win32-arm64-msvc': 4.24.3 - '@rollup/rollup-win32-ia32-msvc': 4.24.3 - '@rollup/rollup-win32-x64-msvc': 4.24.3 + '@rollup/rollup-android-arm-eabi': 4.28.0 + '@rollup/rollup-android-arm64': 4.28.0 + '@rollup/rollup-darwin-arm64': 4.28.0 + '@rollup/rollup-darwin-x64': 4.28.0 + '@rollup/rollup-freebsd-arm64': 4.28.0 + '@rollup/rollup-freebsd-x64': 4.28.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.28.0 + '@rollup/rollup-linux-arm-musleabihf': 4.28.0 + '@rollup/rollup-linux-arm64-gnu': 4.28.0 + '@rollup/rollup-linux-arm64-musl': 4.28.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.28.0 + '@rollup/rollup-linux-riscv64-gnu': 4.28.0 + '@rollup/rollup-linux-s390x-gnu': 4.28.0 + '@rollup/rollup-linux-x64-gnu': 4.28.0 + '@rollup/rollup-linux-x64-musl': 4.28.0 + '@rollup/rollup-win32-arm64-msvc': 4.28.0 + '@rollup/rollup-win32-ia32-msvc': 4.28.0 + '@rollup/rollup-win32-x64-msvc': 4.28.0 fsevents: 2.3.3 run-async@3.0.0: {} @@ -2686,6 +2749,11 @@ snapshots: safer-buffer@2.1.2: {} + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + semver@7.6.3: {} sequelize-pool@7.1.0: {} @@ -2855,11 +2923,11 @@ snapshots: type-fest@0.21.3: {} - typescript@5.6.3: {} + typescript@5.7.2: {} underscore@1.13.7: {} - undici-types@6.19.8: {} + undici-types@6.20.0: {} unique-filename@1.1.1: dependencies: @@ -2877,13 +2945,13 @@ snapshots: validator@13.12.0: {} - vite@5.4.10(@types/node@22.8.6): + vite@6.0.2(@types/node@22.10.1): dependencies: - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.24.3 + esbuild: 0.24.0 + postcss: 8.4.49 + rollup: 4.28.0 optionalDependencies: - '@types/node': 22.8.6 + '@types/node': 22.10.1 fsevents: 2.3.3 which@2.0.2: @@ -2897,7 +2965,7 @@ snapshots: wkx@0.5.0: dependencies: - '@types/node': 22.8.6 + '@types/node': 22.10.1 wrap-ansi@6.2.0: dependencies: diff --git a/rollup.config.js b/rollup.config.js index 5011c41..f94e4fe 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -4,24 +4,27 @@ import typescript from '@rollup/plugin-typescript'; import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; -import path from 'path' -import esbuild from 'rollup-plugin-esbuild' -import alias from '@rollup/plugin-alias' +import path from 'path'; +import esbuild from 'rollup-plugin-esbuild'; +import alias from '@rollup/plugin-alias'; +import replace from '@rollup/plugin-replace'; /** * @type {import('rollup').RollupOptions} */ -export default { +const config = { input: 'src/index.ts', // TypeScript 入口文件 output: { - // file: 'dist/app.js', // 输出文件 dir: 'dist', entryFileNames: 'app.mjs', chunkFileNames: '[name]-[hash].mjs', - // format: 'cjs' format: 'esm', // 输出格式设置为 ES 模块 }, plugins: [ + replace({ + preventAssignment: true, // 防止意外赋值 + VERSION: JSON.stringify('1.0.0'), + }), alias({ // only esbuild needs to be configured entries: [ @@ -45,8 +48,8 @@ export default { { find: 'events', replacement: 'node:events' }, { find: 'url', replacement: 'node:url' }, { find: 'assert', replacement: 'node:assert' }, - { find: 'util', replacement: 'node:util' } - ] + { find: 'util', replacement: 'node:util' }, + ], }), resolve({ preferBuiltins: true, // 强制优先使用内置模块 @@ -57,7 +60,7 @@ export default { esbuild({ target: 'node22', // 目标为 Node.js 14 minify: false, // 启用代码压缩 - tsconfig: 'tsconfig.json' + tsconfig: 'tsconfig.json', }), json(), // typescript({ @@ -70,3 +73,5 @@ export default { // 将 sqlite3 作为外部依赖 external: ['sqlite3', 'sequelize', 'vite', 'sequelize', '@kevisual/router', 'ioredis', 'socket.io', 'minio'], }; + +export default [config]; diff --git a/src/app-run.ts b/src/app-run.ts index b8d480b..a517755 100644 --- a/src/app-run.ts +++ b/src/app-run.ts @@ -1,3 +1,4 @@ +import { App } from '@kevisual/router'; import { app } from './app.ts'; import './route/system-config/index.ts'; @@ -15,3 +16,7 @@ export const runApp = async (msg: Message) => { } return res; }; + +export const loadApp = async (mainApp: App) => { + mainApp.importApp(app); +}; diff --git a/src/app.ts b/src/app.ts index 761b610..c0fc093 100644 --- a/src/app.ts +++ b/src/app.ts @@ -2,30 +2,11 @@ import { App } from '@kevisual/router'; import fs from 'fs'; import { getConfig, getPidList, pidFilePath, checkFileExists } from './module/get-config.ts'; import { sequelize } from './module/sequelize.ts'; - +import { spawn } from 'child_process'; export { sequelize }; export const app = new App(); -app - .route({ - path: 'ping', - }) - .define(async (ctx) => { - ctx.body = 'pong'; - }) - .addTo(app); - -app - .route({ - path: 'demo', - key: '01', - }) - .define(async (ctx) => { - ctx.body = 'Hello, World!'; - }) - .addTo(app); - // 处理进程退出或中断信号,确保删除 pid 文件 const cleanUp = () => { const pidList = getPidList(); @@ -63,5 +44,5 @@ export const createApp = async () => { app.listen(21015, () => { console.log('Server is running on port 21015', 'http://localhost:21015/api/router', 'server id', process.pid); }); - import('./route.ts'); + // import('./route.ts'); }; diff --git a/src/command/deploy.ts b/src/command/deploy.ts index 6816d73..be0c4cd 100644 --- a/src/command/deploy.ts +++ b/src/command/deploy.ts @@ -121,3 +121,11 @@ const uploadFiles = async (files: string[], directory: string, { key, version }: }); }; app.addCommand(command); + +const local = new Command('local') + .description('本地部署') + .option('-k, --key ', 'key') + .action(() => { + console.log('local deploy'); + }); +app.addCommand(local); diff --git a/src/command/init.ts b/src/command/init.ts new file mode 100644 index 0000000..3589a7f --- /dev/null +++ b/src/command/init.ts @@ -0,0 +1,216 @@ +import { program, Command } from '@/program.ts'; +import { checkFileExists, envisionPath, getConfig, writeConfig } from '@/module/index.ts'; +import path from 'path'; +import fs from 'fs'; +import { chalk } from '@/module/chalk.ts'; +import inquirer from 'inquirer'; +import { spawn, spawnSync } from 'child_process'; + +const command = new Command('init').description('初始化应用').action((optison) => { + console.log('init'); +}); // + +program.addCommand(command); + +const setMainAppConfig = async (mainAppPath: string) => { + const config = getConfig(); + config.mainAppPath = mainAppPath; + writeConfig(config); +}; +const initMain = async () => { + const mainAppPath = path.join(envisionPath, 'main-app'); + const pkgPath = path.join(mainAppPath, 'package.json'); + if (!checkFileExists(pkgPath)) { + fs.mkdirSync(mainAppPath, { recursive: true }); + const pkg = { + name: 'main-app', + version: '1.0.0', + type: 'module', + }; + fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2)); + console.log(chalk.green('初始化 main-app 成功')); + } + // 在对应的路径,安装依赖 + const needDeps = ['@kevisual/router', '@kevisual/local-app-manager', '@kevisual/use-config']; + let hasPnpm = false; + try { + spawnSync('pnpm', ['--version']); + hasPnpm = true; + } catch (e) { + hasPnpm = false; + } + for (let dep of needDeps) { + console.log(chalk.green('安装依赖', dep)); + const npm = hasPnpm ? 'pnpm' : 'npm'; + spawnSync(npm, ['install', dep], { cwd: mainAppPath, stdio: 'inherit' }); + } + // 创建 dist/app.mjs + const code = `import { App } from '@kevisual/router'; +import { app as LocalApp } from '@kevisual/local-app-manager'; +import { useConfig } from '@kevisual/use-config'; +const config = useConfig(); +const app = new App(); +app.importApp(LocalApp); +const host = config.host || '127.0.0.1'; +app.listen(config.port, host, () => { + console.log(\`app is running on http://\${host}:\${config.port}\`); +}); +`; + const codeDistPath = path.join(mainAppPath, 'dist'); + if (!checkFileExists(codeDistPath)) { + fs.mkdirSync(codeDistPath, { recursive: true }); + } + fs.writeFileSync(path.join(codeDistPath, 'app.mjs'), code); + console.log(chalk.green('创建 app.mjs 成功')); + // 创建 app.config.json5 + const answers = await inquirer.prompt([ + { + type: 'input', + name: 'port', + message: '请输入端口号', + default: '11015', + }, + { + type: 'input', + name: 'host', + message: '请输入host', + default: '127.0.0.1', + }, + { + type: 'input', + name: 'appsPath', + message: '请输入apps路径', + default: path.join(mainAppPath, 'apps'), + }, + ]); + const json5 = { + port: Number(answers.port), + host: answers.host, + appsPath: answers.appsPath, + }; + fs.writeFileSync(path.join(mainAppPath, 'app.config.json5'), JSON.stringify(json5, null, 2)); + // + console.log(chalk.green('创建 app.config.json5 成功')); + setMainAppConfig(mainAppPath); +}; +const checkPid = (pid: number) => { + try { + process.kill(pid, 0); + return true; + } catch (err) { + if (err.code === 'ESRCH') { + // 进程不存在 + console.log(`进程 ${pid} 不存在`); + return false; + } else if (err.code === 'EPERM') { + // 没有权限访问该进程 + console.log(`没有权限检查进程 ${pid}`); + return true; + } else { + // 其他错误 + console.error(`检查进程 ${pid} 时出错:`, err); + return false; + } + } +}; + +const mainApp = new Command('main') + .description('初始化main的应用') // + .option('-i, --init', '初始化main应用') + .option('-s, --start', '启动main应用') + .option('-r, --restart', '重启main应用') + .option('-e, --exit', '停止main应用') + .action(async (options) => { + if (options.init) { + await initMain(); + return; + } + const runChild = () => { + const logDir = path.join(envisionPath, 'log'); + const logFile = path.join(logDir, 'child.log'); + // 确保日志目录存在 + fs.mkdirSync(logDir, { recursive: true }); + // 如果日志文件不存在,创建一个 + if (!checkFileExists(logFile)) { + fs.writeFileSync(logFile, ''); + } + // 如果日志文件大于 10M,重命名 + const stats = fs.statSync(logFile); + if (stats.size > 1024 * 1024 * 10) { + fs.renameSync(logFile, path.join(logDir, `child-${Date.now()}.log`)); + fs.writeFileSync(logFile, ''); + } + // 打开日志文件(追加模式) + const logStream = fs.openSync(logFile, 'a'); + const childProcess = spawn('node', ['dist/app.mjs'], { + cwd: getConfig().mainAppPath, + stdio: ['ignore', logStream, logStream], // 忽略 stdio, 重定向到文件 + detached: true, // 使子进程独立运行 + }); + childProcess.unref(); // 使子进程独立运行 + writeConfig({ ...getConfig(), mainAppPid: childProcess.pid }); + }; + const config = getConfig(); + if (!config.mainAppPath) { + console.log('请先初始化 main 应用'); + return; + } + if (options.start) { + if (config.mainAppPid) { + // 检查是否有进程 + if (checkPid(config.mainAppPid)) { + console.log('main app 已经启动'); + return; + } + } + runChild(); + } + if (options.restart) { + if (config.mainAppPid) { + // 检查是否有进程 + if (checkPid(config.mainAppPid)) { + process.kill(config.mainAppPid); + } + } + runChild(); + } else if (options.stop) { + if (config.mainAppPid) { + // 检查是否有进程 + if (checkPid(config.mainAppPid)) { + process.kill(config.mainAppPid); + } + writeConfig({ ...config, mainAppPid: null }); + } + } + }); + +const mainLogCommand = new Command('log') + .option('-t, --tail', '查看日志') + .option('-f, --follow', '跟踪日志') + .description('查看main的日志') + .action((options) => { + const logDir = path.join(envisionPath, 'log'); + const logFile = path.join(logDir, 'child.log'); + if (!checkFileExists(logFile)) { + console.log('日志文件不存在'); + return; + } + if (options.tail) { + const childProcess = spawn('tail', ['-n', '20', '-f', logFile]); + childProcess.stdout?.pipe(process.stdout); + childProcess.stderr?.pipe(process.stderr); + return; + } + if (options.follow) { + const childProcess = spawn('tail', ['-n', '50', '-f', logFile]); + childProcess.stdout?.pipe(process.stdout); + childProcess.stderr?.pipe(process.stderr); + return; + } + const log = fs.readFileSync(logFile, 'utf-8'); + console.log(log); + }); + +mainApp.addCommand(mainLogCommand); + +program.addCommand(mainApp); diff --git a/src/command/npm.ts b/src/command/npm.ts index 21fe2c1..b24d6c6 100644 --- a/src/command/npm.ts +++ b/src/command/npm.ts @@ -7,69 +7,12 @@ import { getConfig } from '@/module/get-config.ts'; import fs from 'fs'; import inquirer from 'inquirer'; -const command = new Command('npm') - .description('npm command show publish and set .npmrc') - .option('-p --publish ', 'publish') - .action(async (options) => { - const { publish } = options || {}; - const config = getConfig(); - let cmd = ''; - const execPath = process.cwd(); - if (publish) { - const packageJson = path.resolve(execPath, 'package.json'); - switch (publish) { - case 'me': - cmd = 'npm publish --registry https://npm.xiongxiao.me'; - console.log(chalk.green(cmd)); - break; - case 'npm': - cmd = 'npm publish --registry https://registry.npmjs.org'; - console.log(chalk.green(cmd)); - break; - default: - cmd = 'npm publish --registry https://npm.xiongxiao.me'; - console.log(chalk.green(cmd)); - break; - } - if (fileIsExist(packageJson)) { - const keys = Object.keys(config).filter((key) => key.includes('NPM_TOKEN')); - const tokenEnv = keys.reduce((prev, key) => { - return { - ...prev, - [key]: config[key], - }; - }, {}); - const child = spawn(cmd, { - shell: true, - cwd: execPath, - env: { - ...process.env, // 保留当前环境变量 - ...tokenEnv, - }, - }); - child.stdout.on('data', (data) => { - console.log(chalk.green(`${data}`)); - }); - child.stderr.on('data', (data) => { - // 过滤掉 'npm notice' 或者其他信息 - if (data.toString().includes('npm notice')) { - console.log(chalk.yellow(`notice: ${data}`)); - } else { - console.error(`stderr: ${data}`); - } - }); - child.on('close', (code) => { - // console.log(`child process exited with code ${code}`); - }); - } else { - console.error(chalk.red('package.json not found')); - } - } - }); +const command = new Command('npm').description('npm command show publish and set .npmrc').action(async (options) => {}); const publish = new Command('publish') .argument('[registry]') + .option('-p --proxy', 'proxy') .description('publish npm') - .action(async (registry) => { + .action(async (registry, options) => { const answer = await inquirer.prompt([ { type: 'list', @@ -92,6 +35,18 @@ const publish = new Command('publish') const config = getConfig(); let cmd = ''; const execPath = process.cwd(); + let setEnv = {}; + const proxyEnv = { + https_proxy: 'http://127.0.0.1:7890', + http_proxy: 'http://127.0.0.1:7890', + all_proxy: 'socks5://127.0.0.1:7890', + ...config?.proxy, + }; + if (options?.proxy) { + setEnv = { + ...proxyEnv, + }; + } if (registry) { const packageJson = path.resolve(execPath, 'package.json'); switch (registry) { @@ -122,6 +77,7 @@ const publish = new Command('publish') env: { ...process.env, // 保留当前环境变量 ...tokenEnv, + ...setEnv, }, }); child.stdout.on('data', (data) => { @@ -187,7 +143,6 @@ const npmrc = new Command('set') writeFlag = true; } } - return; } else { writeFlag = true; } diff --git a/src/command/proxy.ts b/src/command/proxy.ts new file mode 100644 index 0000000..04fa699 --- /dev/null +++ b/src/command/proxy.ts @@ -0,0 +1,30 @@ +import { program, Command } from '@/program.ts'; +import { chalk } from '@/module/chalk.ts'; +import inquirer from 'inquirer'; + +const command = new Command('proxy') + .description('执行代理相关的命令') + .option('-s, --start', '启动代理') + .option('-u, --unset', '关闭代理') + .action((options) => { + const proxyShell = 'export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890'; + const unProxyShell = 'unset https_proxy http_proxy all_proxy'; + + if (options.start) { + console.log(chalk.green('启动代理')); + console.log(chalk.green('执行以下命令以启用代理:')); + console.log(`\n ${chalk.yellow(proxyShell)}\n`); + console.log(`请运行以下命令应用代理:`); + console.log(chalk.cyan(`eval "$(${process.argv[1]} proxy -s)"`)); + } else if (options.unset) { + console.log(chalk.green('关闭代理')); + console.log(chalk.green('执行以下命令以禁用代理:')); + console.log(`\n ${chalk.yellow(unProxyShell)}\n`); + console.log(`请运行以下命令取消代理:`); + console.log(chalk.cyan(`eval "$(${process.argv[1]} proxy -u)"`)); + } else { + console.log(chalk.red('请提供选项 -s 或 -u')); + } + }); + +program.addCommand(command); diff --git a/src/command/router.ts b/src/command/router.ts index e758eba..6ff493c 100644 --- a/src/command/router.ts +++ b/src/command/router.ts @@ -1,7 +1,4 @@ import { program as app, Command } from '@/program.ts'; -import { getConfig, writeConfig, checkFileExists } from '@/module/index.ts'; -import { createApp } from '@/app.ts'; -import fs from 'fs'; import inquirer from 'inquirer'; import { query } from '../module/index.ts'; import chalk from 'chalk'; diff --git a/src/index.ts b/src/index.ts index 9d41260..08f3bed 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,10 +10,13 @@ import './command/web.ts'; import './command/router.ts'; import './command/npm.ts'; import './command/publish.ts'; +import './command/init.ts'; +import './command/proxy.ts'; // program.parse(process.argv); export const runParser = async (argv: string[]) => { // program.parse(process.argv); + // console.log('argv', argv); program.parse(argv); }; diff --git a/src/program.ts b/src/program.ts index 192c335..9845393 100644 --- a/src/program.ts +++ b/src/program.ts @@ -1,8 +1,13 @@ import { program, Command } from 'commander'; import fs from 'fs'; - // 将多个子命令加入主程序中 -program.name('app').description('A CLI tool with envison').version('0.0.3'); +let version = '0.0.1'; +try { + // @ts-ignore + if (VERSION) version = VERSION; +} catch (e) {} +// @ts-ignore +program.name('app').description('A CLI tool with envison').version(version); const ls = new Command('ls').description('List files in the current directory').action(() => { console.log('List files'); diff --git a/src/route.ts b/src/route.ts index d36dbb8..e9d0706 100644 --- a/src/route.ts +++ b/src/route.ts @@ -1,3 +1 @@ -import './route/user/list.ts'; - import './route/system-config/index.ts'; \ No newline at end of file diff --git a/src/route/system-config/list.ts b/src/route/system-config/list.ts index db33941..02b1554 100644 --- a/src/route/system-config/list.ts +++ b/src/route/system-config/list.ts @@ -1,6 +1,5 @@ import { app } from '@/app.ts'; import { Config } from './model/config.ts'; -import { CustomError } from '@kevisual/router'; app .route({ path: 'config', @@ -35,7 +34,7 @@ app .define(async (ctx) => { const { data } = ctx.query; if (!data) { - throw new CustomError('data is required'); + ctx.throw(400, 'data is required'); } let config = await Config.findOne({ where: { key: 'me' }, // 自定义条件 diff --git a/src/route/user/list.ts b/src/route/user/list.ts deleted file mode 100644 index b48f394..0000000 --- a/src/route/user/list.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { app } from '@/app.ts'; - -app - .route({ - path: 'user', - key: 'list', - }) - .define(async (ctx) => { - ctx.body = 'user list'; - }) - .addTo(app);