chore: update version to 0.0.48 and enhance request handling in Bun server

This commit is contained in:
2025-12-21 06:41:15 +08:00
parent b6c613d601
commit 61f89e8250
3 changed files with 26 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
{ {
"$schema": "https://json.schemastore.org/package", "$schema": "https://json.schemastore.org/package",
"name": "@kevisual/router", "name": "@kevisual/router",
"version": "0.0.47", "version": "0.0.48",
"description": "", "description": "",
"type": "module", "type": "module",
"main": "./dist/router.js", "main": "./dist/router.js",

View File

@@ -71,7 +71,7 @@ export class BunServer extends ServerBase implements ServerType {
} }
// 将 Bun 的 Request 转换为 Node.js 风格的 req/res // 将 Bun 的 Request 转换为 Node.js 风格的 req/res
return new Promise((resolve) => { return new Promise(async (resolve) => {
const req: RouterReq = { const req: RouterReq = {
url: url.pathname + url.search, url: url.pathname + url.search,
method: request.method, method: request.method,
@@ -80,6 +80,11 @@ export class BunServer extends ServerBase implements ServerType {
// @ts-ignore // @ts-ignore
remoteAddress: request?.remoteAddress || request?.ip || clientInfo?.address || '', remoteAddress: request?.remoteAddress || request?.ip || clientInfo?.address || '',
remotePort: clientInfo?.port || 0, remotePort: clientInfo?.port || 0,
},
// @ts-ignore
bun: {
request, // 原始请求对象
server, // 原始服务器对象
} }
}; };
@@ -212,10 +217,25 @@ export class BunServer extends ServerBase implements ServerType {
}; };
// 处理请求体 // 处理请求体
if (request.method !== 'GET' && request.method !== 'HEAD') { if (request.method !== 'GET' && request.method !== 'HEAD') {
request.text().then((body) => { const contentType = request.headers.get('content-type') || '';
(req as any).body = body; if (contentType.includes('application/json')) {
const text = await request.text();
req.body = text;
requestCallback(req, res); requestCallback(req, res);
}); return;
} else if (contentType.includes('application/x-www-form-urlencoded')) {
const formData = await request.formData();
const body: Record<string, any> = {};
for (const [key, value] of formData.entries()) {
body[key] = value;
}
req.body = JSON.stringify(body);
requestCallback(req, res);
return;
} else {
requestCallback(req, res);
return;
}
} else { } else {
requestCallback(req, res); requestCallback(req, res);
} }

View File

@@ -91,6 +91,7 @@ export type RouterReq<T = {}> = {
remoteAddress?: string; remoteAddress?: string;
remotePort?: number; remotePort?: number;
}; };
body?: string;
cookies?: Record<string, string>; cookies?: Record<string, string>;
} & T; } & T;