Skip to content

Commit c704e5b

Browse files
committed
Exports helpers to enhance request or response
1 parent cccd5a5 commit c704e5b

File tree

3 files changed

+1849
-2206
lines changed

3 files changed

+1849
-2206
lines changed

Diff for: package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,20 @@
3737
},
3838
"devDependencies": {
3939
"@types/content-type": "^1.1.3",
40-
"@types/cookie": "^0.3.3",
41-
"@types/jest": "^25.2.1",
40+
"@types/cookie": "^0.4.0",
41+
"@types/jest": "^25.2.3",
4242
"@types/micro": "^7.3.3",
4343
"@types/test-listen": "^1.1.0",
4444
"axios": "^0.19.2",
45-
"codecov": "^3.6.5",
45+
"codecov": "^3.7.0",
4646
"form-data": "^3.0.0",
4747
"husky": "^4.2.5",
48-
"jest": "^25.5.4",
48+
"jest": "^26.0.1",
4949
"test-listen": "^1.1.0",
50-
"ts-jest": "^25.5.1",
50+
"ts-jest": "^26.0.0",
5151
"tsdx": "^0.13.2",
52-
"tslib": "^1.11.2",
53-
"typescript": "^3.8.3"
52+
"tslib": "^1.13.0",
53+
"typescript": "^3.8.4"
5454
},
5555
"dependencies": {
5656
"@vercel/node": "^1.6.1",

Diff for: src/index.ts

+39-28
Original file line numberDiff line numberDiff line change
@@ -72,37 +72,48 @@ function parseCookie(req: IncomingMessage): NowRequestCookies {
7272
return parse(Array.isArray(header) ? header.join(';') : header);
7373
}
7474

75+
export const enhanceRequest = async (
76+
req: IncomingMessage
77+
): Promise<NowRequest> => {
78+
const bufferOrString = await buffer(req);
79+
return Object.assign(req, {
80+
body:
81+
typeof bufferOrString === 'string'
82+
? bufferOrString
83+
: parseBody(req, bufferOrString),
84+
cookies: parseCookie(req),
85+
query: parseQuery(req),
86+
});
87+
};
88+
89+
export const enhanceResponse = (res: ServerResponse): NowResponse => {
90+
let _status: number;
91+
const nowRes = Object.assign(res, {
92+
status: (status: number) => {
93+
_status = status;
94+
return nowRes;
95+
},
96+
json: (jsonBody: any) => {
97+
send(nowRes, _status || 200, jsonBody);
98+
return nowRes;
99+
},
100+
send: (body: string | object | Buffer) => {
101+
send(nowRes, _status || 200, body);
102+
return nowRes;
103+
},
104+
text: (body: string) => {
105+
send(nowRes, _status || 200, body);
106+
return nowRes;
107+
},
108+
});
109+
return nowRes;
110+
};
111+
75112
export const createServer = (
76113
route: (req: NowRequest, res: NowResponse) => any | Promise<any>
77114
) =>
78115
micro(async (req: IncomingMessage, res: ServerResponse) => {
79-
const bufferOrString = await buffer(req);
80-
const nowReq = Object.assign(req, {
81-
body:
82-
typeof bufferOrString === 'string'
83-
? bufferOrString
84-
: parseBody(req, bufferOrString),
85-
cookies: parseCookie(req),
86-
query: parseQuery(req),
87-
});
88-
let _status: number;
89-
const nowRes = Object.assign(res, {
90-
status: (status: number) => {
91-
_status = status;
92-
return nowRes;
93-
},
94-
json: (jsonBody: any) => {
95-
send(nowRes, _status || 200, jsonBody);
96-
return nowRes;
97-
},
98-
send: (body: string | object | Buffer) => {
99-
send(nowRes, _status || 200, body);
100-
return nowRes;
101-
},
102-
text: (body: string) => {
103-
send(nowRes, _status || 200, body);
104-
return nowRes;
105-
},
106-
});
116+
const nowReq = await enhanceRequest(req);
117+
const nowRes = enhanceResponse(res);
107118
return await route(nowReq, nowRes);
108119
});

0 commit comments

Comments
 (0)