@kevisual/router 0.0.65 → 0.0.67

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.
@@ -477,6 +477,12 @@ type RouterReq<T = {}> = {
477
477
  };
478
478
  body?: string;
479
479
  cookies?: Record<string, string>;
480
+ bun?: {
481
+ request: Bun.BunRequest;
482
+ server: Bun.Server<{}>;
483
+ resolve: (response: Response) => void;
484
+ };
485
+ on: (event: 'close', listener: Function) => void;
480
486
  } & T;
481
487
  type RouterRes<T = {}> = {
482
488
  statusCode: number;
@@ -488,7 +494,7 @@ type RouterRes<T = {}> = {
488
494
  setHeader: (name: string, value: string | string[]) => void;
489
495
  cookie: (name: string, value: string, options?: any) => void;
490
496
  write: (chunk: any) => void;
491
- pipe: (stream: any) => void;
497
+ pipe: (stream: ReadableStream) => void;
492
498
  end: (data?: any) => void;
493
499
  } & T;
494
500
 
package/dist/router.d.ts CHANGED
@@ -645,6 +645,12 @@ type RouterReq<T = {}> = {
645
645
  };
646
646
  body?: string;
647
647
  cookies?: Record<string, string>;
648
+ bun?: {
649
+ request: Bun.BunRequest;
650
+ server: Bun.Server<{}>;
651
+ resolve: (response: Response) => void;
652
+ };
653
+ on: (event: 'close', listener: Function) => void;
648
654
  } & T;
649
655
  type RouterRes<T = {}> = {
650
656
  statusCode: number;
@@ -656,7 +662,7 @@ type RouterRes<T = {}> = {
656
662
  setHeader: (name: string, value: string | string[]) => void;
657
663
  cookie: (name: string, value: string, options?: any) => void;
658
664
  write: (chunk: any) => void;
659
- pipe: (stream: any) => void;
665
+ pipe: (stream: ReadableStream) => void;
660
666
  end: (data?: any) => void;
661
667
  } & T;
662
668
 
package/dist/router.js CHANGED
@@ -21476,6 +21476,7 @@ class BunServer extends ServerBase {
21476
21476
  }
21477
21477
  // 将 Bun 的 Request 转换为 Node.js 风格的 req/res
21478
21478
  return new Promise(async (resolve) => {
21479
+ const reqListener = [];
21479
21480
  const req = {
21480
21481
  url: url.pathname + url.search,
21481
21482
  method: request.method,
@@ -21485,12 +21486,29 @@ class BunServer extends ServerBase {
21485
21486
  remoteAddress: request?.remoteAddress || request?.ip || clientInfo?.address || '',
21486
21487
  remotePort: clientInfo?.port || 0,
21487
21488
  },
21488
- // @ts-ignore
21489
+ on: (event, listener) => {
21490
+ reqListener.push({ event, listener });
21491
+ },
21489
21492
  bun: {
21490
21493
  request, // 原始请求对象
21491
21494
  server, // 原始服务器对象
21495
+ resolve
21492
21496
  }
21493
21497
  };
21498
+ const onClose = () => {
21499
+ reqListener.forEach(item => {
21500
+ if (item.event === 'close') {
21501
+ item.listener();
21502
+ }
21503
+ });
21504
+ reqListener.length = 0;
21505
+ };
21506
+ // 监听请求的取消事件
21507
+ if (request.signal) {
21508
+ request.signal.addEventListener('abort', () => {
21509
+ onClose();
21510
+ });
21511
+ }
21494
21512
  const res = {
21495
21513
  statusCode: 200,
21496
21514
  headersSent: false,
@@ -21564,6 +21582,7 @@ class BunServer extends ServerBase {
21564
21582
  controller.enqueue(chunk);
21565
21583
  });
21566
21584
  stream.on('end', () => {
21585
+ onClose();
21567
21586
  controller.close();
21568
21587
  });
21569
21588
  stream.on('error', (err) => {
@@ -21571,9 +21590,9 @@ class BunServer extends ServerBase {
21571
21590
  });
21572
21591
  },
21573
21592
  cancel() {
21574
- if (stream.destroy) {
21575
- stream.destroy();
21576
- }
21593
+ // 只有NODE流才有destroy方法
21594
+ // @ts-ignore
21595
+ stream?.destroy?.();
21577
21596
  }
21578
21597
  });
21579
21598
  resolve(new Response(readableStream, {