@kevisual/router 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ws.d.ts CHANGED
@@ -218,7 +218,7 @@ declare class Route<M extends SimpleObject = SimpleObject, U extends SimpleObjec
218
218
  description?: string;
219
219
  metadata?: M;
220
220
  middleware?: RouteMiddleware[];
221
- type?: string;
221
+ type?: string | undefined;
222
222
  /**
223
223
  * 是否开启debug,开启后会打印错误信息
224
224
  */
@@ -316,7 +316,7 @@ declare class QueryRouter<T extends SimpleObject = SimpleObject> implements thro
316
316
  [key: string]: any;
317
317
  }> | {
318
318
  code: number;
319
- body: any;
319
+ body: null;
320
320
  message: string;
321
321
  }>;
322
322
  /**
@@ -334,9 +334,9 @@ declare class QueryRouter<T extends SimpleObject = SimpleObject> implements thro
334
334
  }, ctx?: RouteContext & {
335
335
  [key: string]: any;
336
336
  }): Promise<{
337
- code: number;
338
- data: any;
339
- message: string;
337
+ code: number | undefined;
338
+ data: string | number | Object | null | undefined;
339
+ message: string | undefined;
340
340
  }>;
341
341
  /**
342
342
  * Router Run获取数据
@@ -352,9 +352,9 @@ declare class QueryRouter<T extends SimpleObject = SimpleObject> implements thro
352
352
  }, ctx?: RouteContext<T> & {
353
353
  [key: string]: any;
354
354
  }): Promise<{
355
- code: number;
356
- data: any;
357
- message: string;
355
+ code: number | undefined;
356
+ data: string | number | Object | null | undefined;
357
+ message: string | undefined;
358
358
  }>;
359
359
  /**
360
360
  * 设置上下文
@@ -389,12 +389,12 @@ declare class QueryRouter<T extends SimpleObject = SimpleObject> implements thro
389
389
  importRoutes(routes: Route[]): void;
390
390
  importRouter(router: QueryRouter): void;
391
391
  throw(...args: any[]): void;
392
- hasRoute(path: string, key?: string): Route<SimpleObject, SimpleObject>;
392
+ hasRoute(path: string, key?: string): Route<SimpleObject, SimpleObject> | undefined;
393
393
  findRoute(opts?: {
394
394
  path?: string;
395
395
  key?: string;
396
396
  rid?: string;
397
- }): Route<SimpleObject, SimpleObject>;
397
+ }): Route<SimpleObject, SimpleObject> | undefined;
398
398
  createRouteList(opts?: {
399
399
  force?: boolean;
400
400
  filter?: (route: Route) => boolean;
@@ -838,10 +838,7 @@ declare class App<U = {}> extends QueryRouterServer<AppRouteContext<U>> {
838
838
  listen(handle: any, backlog?: number, listeningListener?: () => void): void;
839
839
  listen(handle: any, listeningListener?: () => void): void;
840
840
  Route: typeof Route;
841
- static handleRequest(req: IncomingMessage$1, res: ServerResponse$1): Promise<{
842
- cookies: Record<string, string>;
843
- token: string;
844
- }>;
841
+ static handleRequest(req: IncomingMessage$1, res: ServerResponse$1): Promise<any>;
845
842
  onServerRequest(fn: (req: IncomingMessage$1, res: ServerResponse$1) => void): void;
846
843
  }
847
844
 
package/dist/ws.js CHANGED
@@ -32,7 +32,7 @@ var __toESM = (mod, isNodeMode, target) => {
32
32
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
33
33
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
34
34
 
35
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/constants.js
35
+ // node_modules/ws/lib/constants.js
36
36
  var require_constants = __commonJS((exports, module) => {
37
37
  var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
38
38
  var hasBlob = typeof Blob !== "undefined";
@@ -40,7 +40,6 @@ var require_constants = __commonJS((exports, module) => {
40
40
  BINARY_TYPES.push("blob");
41
41
  module.exports = {
42
42
  BINARY_TYPES,
43
- CLOSE_TIMEOUT: 30000,
44
43
  EMPTY_BUFFER: Buffer.alloc(0),
45
44
  GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11",
46
45
  hasBlob,
@@ -52,7 +51,7 @@ var require_constants = __commonJS((exports, module) => {
52
51
  };
53
52
  });
54
53
 
55
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/buffer-util.js
54
+ // node_modules/ws/lib/buffer-util.js
56
55
  var require_buffer_util = __commonJS((exports, module) => {
57
56
  var { EMPTY_BUFFER } = require_constants();
58
57
  var FastBuffer = Buffer[Symbol.species];
@@ -113,7 +112,7 @@ var require_buffer_util = __commonJS((exports, module) => {
113
112
  };
114
113
  });
115
114
 
116
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/limiter.js
115
+ // node_modules/ws/lib/limiter.js
117
116
  var require_limiter = __commonJS((exports, module) => {
118
117
  var kDone = Symbol("kDone");
119
118
  var kRun = Symbol("kRun");
@@ -145,7 +144,7 @@ var require_limiter = __commonJS((exports, module) => {
145
144
  module.exports = Limiter;
146
145
  });
147
146
 
148
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/permessage-deflate.js
147
+ // node_modules/ws/lib/permessage-deflate.js
149
148
  var require_permessage_deflate = __commonJS((exports, module) => {
150
149
  var zlib = __require("zlib");
151
150
  var bufferUtil = require_buffer_util();
@@ -400,16 +399,12 @@ var require_permessage_deflate = __commonJS((exports, module) => {
400
399
  }
401
400
  function inflateOnError(err) {
402
401
  this[kPerMessageDeflate]._inflate = null;
403
- if (this[kError]) {
404
- this[kCallback](this[kError]);
405
- return;
406
- }
407
402
  err[kStatusCode] = 1007;
408
403
  this[kCallback](err);
409
404
  }
410
405
  });
411
406
 
412
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/validation.js
407
+ // node_modules/ws/lib/validation.js
413
408
  var require_validation = __commonJS((exports, module) => {
414
409
  var { isUtf8 } = __require("buffer");
415
410
  var { hasBlob } = require_constants();
@@ -589,7 +584,7 @@ var require_validation = __commonJS((exports, module) => {
589
584
  }
590
585
  });
591
586
 
592
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/receiver.js
587
+ // node_modules/ws/lib/receiver.js
593
588
  var require_receiver = __commonJS((exports, module) => {
594
589
  var { Writable } = __require("stream");
595
590
  var PerMessageDeflate = require_permessage_deflate();
@@ -970,7 +965,7 @@ var require_receiver = __commonJS((exports, module) => {
970
965
  module.exports = Receiver;
971
966
  });
972
967
 
973
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/sender.js
968
+ // node_modules/ws/lib/sender.js
974
969
  var require_sender = __commonJS((exports, module) => {
975
970
  var { Duplex } = __require("stream");
976
971
  var { randomFillSync } = __require("crypto");
@@ -1324,7 +1319,7 @@ var require_sender = __commonJS((exports, module) => {
1324
1319
  }
1325
1320
  });
1326
1321
 
1327
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/event-target.js
1322
+ // node_modules/ws/lib/event-target.js
1328
1323
  var require_event_target = __commonJS((exports, module) => {
1329
1324
  var { kForOnEventAttribute, kListener } = require_constants();
1330
1325
  var kCode = Symbol("kCode");
@@ -1475,7 +1470,7 @@ var require_event_target = __commonJS((exports, module) => {
1475
1470
  }
1476
1471
  });
1477
1472
 
1478
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/extension.js
1473
+ // node_modules/ws/lib/extension.js
1479
1474
  var require_extension = __commonJS((exports, module) => {
1480
1475
  var { tokenChars } = require_validation();
1481
1476
  function push(dest, name, elem) {
@@ -1640,7 +1635,7 @@ var require_extension = __commonJS((exports, module) => {
1640
1635
  module.exports = { format, parse };
1641
1636
  });
1642
1637
 
1643
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/websocket.js
1638
+ // node_modules/ws/lib/websocket.js
1644
1639
  var require_websocket = __commonJS((exports, module) => {
1645
1640
  var EventEmitter = __require("events");
1646
1641
  var https = __require("https");
@@ -1656,7 +1651,6 @@ var require_websocket = __commonJS((exports, module) => {
1656
1651
  var { isBlob } = require_validation();
1657
1652
  var {
1658
1653
  BINARY_TYPES,
1659
- CLOSE_TIMEOUT,
1660
1654
  EMPTY_BUFFER,
1661
1655
  GUID,
1662
1656
  kForOnEventAttribute,
@@ -1670,6 +1664,7 @@ var require_websocket = __commonJS((exports, module) => {
1670
1664
  } = require_event_target();
1671
1665
  var { format, parse } = require_extension();
1672
1666
  var { toBuffer } = require_buffer_util();
1667
+ var closeTimeout = 30 * 1000;
1673
1668
  var kAborted = Symbol("kAborted");
1674
1669
  var protocolVersions = [8, 13];
1675
1670
  var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"];
@@ -1709,7 +1704,6 @@ var require_websocket = __commonJS((exports, module) => {
1709
1704
  initAsClient(this, address, protocols, options);
1710
1705
  } else {
1711
1706
  this._autoPong = options.autoPong;
1712
- this._closeTimeout = options.closeTimeout;
1713
1707
  this._isServer = true;
1714
1708
  }
1715
1709
  }
@@ -2001,7 +1995,6 @@ var require_websocket = __commonJS((exports, module) => {
2001
1995
  const opts = {
2002
1996
  allowSynchronousEvents: true,
2003
1997
  autoPong: true,
2004
- closeTimeout: CLOSE_TIMEOUT,
2005
1998
  protocolVersion: protocolVersions[1],
2006
1999
  maxPayload: 100 * 1024 * 1024,
2007
2000
  skipUTF8Validation: false,
@@ -2019,7 +2012,6 @@ var require_websocket = __commonJS((exports, module) => {
2019
2012
  port: undefined
2020
2013
  };
2021
2014
  websocket._autoPong = opts.autoPong;
2022
- websocket._closeTimeout = opts.closeTimeout;
2023
2015
  if (!protocolVersions.includes(opts.protocolVersion)) {
2024
2016
  throw new RangeError(`Unsupported protocol version: ${opts.protocolVersion} ` + `(supported versions: ${protocolVersions.join(", ")})`);
2025
2017
  }
@@ -2358,7 +2350,7 @@ var require_websocket = __commonJS((exports, module) => {
2358
2350
  }
2359
2351
  }
2360
2352
  function setCloseTimer(websocket) {
2361
- websocket._closeTimer = setTimeout(websocket._socket.destroy.bind(websocket._socket), websocket._closeTimeout);
2353
+ websocket._closeTimer = setTimeout(websocket._socket.destroy.bind(websocket._socket), closeTimeout);
2362
2354
  }
2363
2355
  function socketOnClose() {
2364
2356
  const websocket = this[kWebSocket];
@@ -2366,8 +2358,8 @@ var require_websocket = __commonJS((exports, module) => {
2366
2358
  this.removeListener("data", socketOnData);
2367
2359
  this.removeListener("end", socketOnEnd);
2368
2360
  websocket._readyState = WebSocket.CLOSING;
2369
- if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && this._readableState.length !== 0) {
2370
- const chunk = this.read(this._readableState.length);
2361
+ let chunk;
2362
+ if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && (chunk = websocket._socket.read()) !== null) {
2371
2363
  websocket._receiver.write(chunk);
2372
2364
  }
2373
2365
  websocket._receiver.end();
@@ -2402,7 +2394,7 @@ var require_websocket = __commonJS((exports, module) => {
2402
2394
  }
2403
2395
  });
2404
2396
 
2405
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/stream.js
2397
+ // node_modules/ws/lib/stream.js
2406
2398
  var require_stream = __commonJS((exports, module) => {
2407
2399
  var WebSocket = require_websocket();
2408
2400
  var { Duplex } = __require("stream");
@@ -2505,7 +2497,7 @@ var require_stream = __commonJS((exports, module) => {
2505
2497
  module.exports = createWebSocketStream;
2506
2498
  });
2507
2499
 
2508
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/subprotocol.js
2500
+ // node_modules/ws/lib/subprotocol.js
2509
2501
  var require_subprotocol = __commonJS((exports, module) => {
2510
2502
  var { tokenChars } = require_validation();
2511
2503
  function parse(header) {
@@ -2550,7 +2542,7 @@ var require_subprotocol = __commonJS((exports, module) => {
2550
2542
  module.exports = { parse };
2551
2543
  });
2552
2544
 
2553
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/lib/websocket-server.js
2545
+ // node_modules/ws/lib/websocket-server.js
2554
2546
  var require_websocket_server = __commonJS((exports, module) => {
2555
2547
  var EventEmitter = __require("events");
2556
2548
  var http = __require("http");
@@ -2560,7 +2552,7 @@ var require_websocket_server = __commonJS((exports, module) => {
2560
2552
  var PerMessageDeflate = require_permessage_deflate();
2561
2553
  var subprotocol = require_subprotocol();
2562
2554
  var WebSocket = require_websocket();
2563
- var { CLOSE_TIMEOUT, GUID, kWebSocket } = require_constants();
2555
+ var { GUID, kWebSocket } = require_constants();
2564
2556
  var keyRegex = /^[+/0-9A-Za-z]{22}==$/;
2565
2557
  var RUNNING = 0;
2566
2558
  var CLOSING = 1;
@@ -2577,7 +2569,6 @@ var require_websocket_server = __commonJS((exports, module) => {
2577
2569
  perMessageDeflate: false,
2578
2570
  handleProtocols: null,
2579
2571
  clientTracking: true,
2580
- closeTimeout: CLOSE_TIMEOUT,
2581
2572
  verifyClient: null,
2582
2573
  noServer: false,
2583
2574
  backlog: null,
@@ -2698,11 +2689,9 @@ var require_websocket_server = __commonJS((exports, module) => {
2698
2689
  abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
2699
2690
  return;
2700
2691
  }
2701
- if (version !== 13 && version !== 8) {
2692
+ if (version !== 8 && version !== 13) {
2702
2693
  const message = "Missing or invalid Sec-WebSocket-Version header";
2703
- abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {
2704
- "Sec-WebSocket-Version": "13, 8"
2705
- });
2694
+ abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
2706
2695
  return;
2707
2696
  }
2708
2697
  if (!this.shouldHandle(req)) {
@@ -2841,18 +2830,18 @@ var require_websocket_server = __commonJS((exports, module) => {
2841
2830
  \r
2842
2831
  ` + message);
2843
2832
  }
2844
- function abortHandshakeOrEmitwsClientError(server, req, socket, code, message, headers) {
2833
+ function abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {
2845
2834
  if (server.listenerCount("wsClientError")) {
2846
2835
  const err = new Error(message);
2847
2836
  Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);
2848
2837
  server.emit("wsClientError", err, socket, req);
2849
2838
  } else {
2850
- abortHandshake(socket, code, message, headers);
2839
+ abortHandshake(socket, code, message);
2851
2840
  }
2852
2841
  }
2853
2842
  });
2854
2843
 
2855
- // ../../node_modules/.pnpm/@kevisual+ws@8.19.0/node_modules/@kevisual/ws/wrapper.mjs
2844
+ // node_modules/ws/wrapper.mjs
2856
2845
  var import_stream = __toESM(require_stream(), 1);
2857
2846
  var import_receiver = __toESM(require_receiver(), 1);
2858
2847
  var import_sender = __toESM(require_sender(), 1);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@kevisual/router",
4
- "version": "0.2.2",
4
+ "version": "0.2.4",
5
5
  "description": "",
6
6
  "type": "module",
7
7
  "main": "./dist/router.js",
@@ -30,7 +30,7 @@
30
30
  "@kevisual/query": "^0.0.55",
31
31
  "@kevisual/remote-app": "^0.0.7",
32
32
  "@kevisual/use-config": "^1.0.30",
33
- "@opencode-ai/plugin": "^1.3.0",
33
+ "@opencode-ai/plugin": "^1.3.2",
34
34
  "@types/bun": "^1.3.11",
35
35
  "@types/crypto-js": "^4.2.2",
36
36
  "@types/node": "^25.5.0",
@@ -42,11 +42,10 @@
42
42
  "es-toolkit": "^1.45.1",
43
43
  "eventemitter3": "^5.0.4",
44
44
  "fast-glob": "^3.3.3",
45
- "hono": "^4.12.8",
46
45
  "nanoid": "^5.1.7",
47
46
  "path-to-regexp": "^8.3.0",
48
47
  "send": "^1.2.1",
49
- "typescript": "^5.9.3",
48
+ "typescript": "^6.0.2",
50
49
  "ws": "npm:@kevisual/ws",
51
50
  "xml2js": "^0.6.2"
52
51
  },
package/src/commander.ts CHANGED
@@ -18,7 +18,7 @@ export const parseArgs = (args: string) => {
18
18
  } catch {
19
19
  // 尝试解析 a=b b=c 格式
20
20
  const result: Record<string, string> = {};
21
- const pairs = args.match(/(\S+?)=(\S+)/g);
21
+ const pairs = args.match(/(\S+?)=(.*?)(?=\s|$)/g);
22
22
  if (pairs && pairs.length > 0) {
23
23
  for (const pair of pairs) {
24
24
  const idx = pair.indexOf('=');
@@ -27,7 +27,8 @@ export const parseArgs = (args: string) => {
27
27
  let value: string | number | boolean = raw;
28
28
  if (raw === 'true') value = true;
29
29
  else if (raw === 'false') value = false;
30
- else if (raw !== '' && !isNaN(Number(raw))) value = Number(raw);
30
+ else if (raw === '') value = true;
31
+ else if (!isNaN(Number(raw))) value = Number(raw);
31
32
  result[key] = value as string;
32
33
  }
33
34
  return result;
@@ -72,7 +73,6 @@ export const createCommand = (opts: { app: any, program: Command }) => {
72
73
  const app = opts.app as App;
73
74
  const routes = app.routes;
74
75
 
75
-
76
76
  const groupRoutes = groupByPath(routes);
77
77
  for (const path in groupRoutes) {
78
78
  const routeList = groupRoutes[path];
@@ -174,7 +174,7 @@ const createCliList = (app: App) => {
174
174
  q: z.string().optional().describe('查询关键词,支持模糊匹配命令'),
175
175
  path: z.string().optional().describe('按路径前缀过滤,如 user、admin'),
176
176
  tags: z.string().optional().describe('按标签过滤,多个标签用逗号分隔'),
177
- sort: z.enum(['key', 'path', 'name']).optional().describe('排序方式'),
177
+ sort: z.enum(['key', 'path', '-key', '-path']).optional().describe('排序方式'),
178
178
  limit: z.number().optional().describe('限制返回数量'),
179
179
  offset: z.number().optional().describe('偏移量,用于分页'),
180
180
  format: z.enum(['table', 'simple', 'json']).optional().describe('输出格式'),
@@ -222,6 +222,8 @@ const createCliList = (app: App) => {
222
222
  routes.sort((a, b) => {
223
223
  if (sort === 'path') return a.path.localeCompare(b.path);
224
224
  if (sort === 'key') return a.key.localeCompare(b.key);
225
+ if (sort === '-path') return b.path.localeCompare(a.path);
226
+ if (sort === '-key') return b.key.localeCompare(a.key);
225
227
  return a.key.localeCompare(b.key); // name 默认为 key
226
228
  });
227
229
  }