diff --git a/package.json b/package.json index 795a581..7e88b8f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "@kevisual/router", - "version": "0.0.72", + "version": "0.0.73", "description": "", "type": "module", "main": "./dist/router.js", @@ -21,14 +21,14 @@ "keywords": [], "author": "abearxiong", "license": "MIT", - "packageManager": "pnpm@10.29.3", + "packageManager": "pnpm@10.30.0", "devDependencies": { "@kevisual/code-builder": "^0.0.6", "@kevisual/context": "^0.0.6", "@kevisual/dts": "^0.0.4", "@kevisual/js-filter": "^0.0.5", "@kevisual/local-proxy": "^0.0.8", - "@kevisual/query": "^0.0.40", + "@kevisual/query": "^0.0.43", "@kevisual/use-config": "^1.0.30", "@opencode-ai/plugin": "^1.2.6", "@types/bun": "^1.3.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1bde1b5..a93e45a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,8 +19,8 @@ importers: specifier: ^0.0.6 version: 0.0.6 '@kevisual/dts': - specifier: ^0.0.3 - version: 0.0.3(typescript@5.9.3) + specifier: ^0.0.4 + version: 0.0.4(typescript@5.9.3) '@kevisual/js-filter': specifier: ^0.0.5 version: 0.0.5 @@ -28,8 +28,8 @@ importers: specifier: ^0.0.8 version: 0.0.8 '@kevisual/query': - specifier: ^0.0.40 - version: 0.0.40 + specifier: ^0.0.43 + version: 0.0.43 '@kevisual/use-config': specifier: ^1.0.30 version: 1.0.30(dotenv@17.2.3) @@ -129,8 +129,8 @@ packages: '@kevisual/context@0.0.6': resolution: {integrity: sha512-w7HBOuO3JH37n6xT6W3FD7ykqHTwtyxOQzTzfEcKDCbsvGB1wVreSxFm2bvoFnnFLuxT/5QMpKlnPrwvmcTGnw==} - '@kevisual/dts@0.0.3': - resolution: {integrity: sha512-4T/m2LqhtwWEW+lWmg7jLxKFW7VtIAftsWFDDZvh10bZunqFf8iXxChHcVSQWikghJb4cq1IkWzPkvc2l+Asdw==} + '@kevisual/dts@0.0.4': + resolution: {integrity: sha512-FVUaH/0nyhbHWpEVjFTGP54PLMm4Hf06aqWLdHOYHNPIgr1aK1C26kOH7iumklGFGk9w93IGxj8Zxe5fap5N2A==} hasBin: true '@kevisual/js-filter@0.0.5': @@ -142,8 +142,8 @@ packages: '@kevisual/local-proxy@0.0.8': resolution: {integrity: sha512-VX/P+6/Cc8ruqp34ag6gVX073BchUmf5VNZcTV/6MJtjrNE76G8V6TLpBE8bywLnrqyRtFLIspk4QlH8up9B5Q==} - '@kevisual/query@0.0.40': - resolution: {integrity: sha512-7m5BgDzd01m51hCHUId6ugQHdwgrLTb6fI7DSuMY17VjWb0+zGnkYmvRBqkTXzoIjjYbP5iwtRnrooEoToQfhg==} + '@kevisual/query@0.0.43': + resolution: {integrity: sha512-POYc0XhcJiGKQiruIZCAhsWjSaBKxyyJGa4dAcRtJRhNveHq89cXx+trcEEiKMOmZFoL3qA50zMIHtQ1sKeZYg==} '@kevisual/use-config@1.0.30': resolution: {integrity: sha512-kPdna0FW/X7D600aMdiZ5UTjbCo6d8d4jjauSc8RMmBwUU6WliFDSPUNKVpzm2BsDX5Nth1IXFPYMqH+wxqAmw==} @@ -172,8 +172,8 @@ packages: '@opencode-ai/sdk@1.2.6': resolution: {integrity: sha512-dWMF8Aku4h7fh8sw5tQ2FtbqRLbIFT8FcsukpxTird49ax7oUXP+gzqxM/VdxHjfksQvzLBjLZyMdDStc5g7xA==} - '@rollup/plugin-commonjs@28.0.9': - resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} + '@rollup/plugin-commonjs@29.0.0': + resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -719,9 +719,9 @@ snapshots: '@kevisual/context@0.0.6': {} - '@kevisual/dts@0.0.3(typescript@5.9.3)': + '@kevisual/dts@0.0.4(typescript@5.9.3)': dependencies: - '@rollup/plugin-commonjs': 28.0.9(rollup@4.57.1) + '@rollup/plugin-commonjs': 29.0.0(rollup@4.57.1) '@rollup/plugin-node-resolve': 16.0.3(rollup@4.57.1) '@rollup/plugin-typescript': 12.3.0(rollup@4.57.1)(tslib@2.8.1)(typescript@5.9.3) rollup: 4.57.1 @@ -738,9 +738,7 @@ snapshots: '@kevisual/local-proxy@0.0.8': {} - '@kevisual/query@0.0.40': - dependencies: - tslib: 2.8.1 + '@kevisual/query@0.0.43': {} '@kevisual/use-config@1.0.30(dotenv@17.2.3)': dependencies: @@ -768,7 +766,7 @@ snapshots: '@opencode-ai/sdk@1.2.6': {} - '@rollup/plugin-commonjs@28.0.9(rollup@4.57.1)': + '@rollup/plugin-commonjs@29.0.0(rollup@4.57.1)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.57.1) commondir: 1.0.1 diff --git a/src/route.ts b/src/route.ts index 52dab00..20d160d 100644 --- a/src/route.ts +++ b/src/route.ts @@ -663,14 +663,28 @@ export class QueryRouter { return false; }); } - createRouteList(force: boolean = false, filter?: (route: Route) => boolean) { + createRouteList(opts?: { force?: boolean, filter?: (route: Route) => boolean, middleware?: string[] }) { const hasListRoute = this.hasRoute('router', 'list'); - if (!hasListRoute || force) { + if (!hasListRoute || opts?.force) { const listRoute = new Route('router', 'list', { description: '列出当前应用下的所有的路由信息', + middleware: opts?.middleware || [], run: async (ctx: RouteContext) => { - const list = this.getList(filter); - ctx.body = { list }; + const tokenUser = ctx.state.tokenUser; + let isUser = !!tokenUser; + const list = this.getList(opts?.filter).filter((item) => { + if (item.id === 'auth' || item.id === 'auth-can' || item.id === 'check-auth-admin' || item.id === 'auth-admin') { + return false; + } + return true; + }); + ctx.body = { + list: list.map((item) => { + const route = pick(item, ['id', 'path', 'key', 'description', 'middleware'] as const); + return toJSONSchema(route); + }), + isUser + }; }, }); this.add(listRoute); @@ -690,10 +704,11 @@ export class QueryRouter { getList?: boolean force?: boolean filter?: (route: Route) => boolean + routeListMiddleware?: string[] }) { const getList = opts?.getList ?? true; if (getList) { - this.createRouteList(opts?.force ?? false, opts?.filter); + this.createRouteList({ force: opts?.force, filter: opts?.filter, middleware: opts?.routeListMiddleware }); } return listenProcess({ app: this as any, params, ...opts }); }