Skip to content

Commit 350966a

Browse files
committed
feat: resolve pr issues
1 parent 505dbbe commit 350966a

File tree

12 files changed

+99
-216
lines changed

12 files changed

+99
-216
lines changed

Diff for: packages/cli/plugin-bff/package.json

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@
2121
"main": "./dist/cjs/cli.js",
2222
"module": "./dist/esm/cli.js",
2323
"exports": {
24+
"./types": "./types.d.ts",
2425
".": {
2526
"types": "./dist/types/cli.d.ts",
2627
"jsnext:source": "./src/cli.ts",
2728
"default": "./dist/cjs/cli.js"
2829
},
29-
"./types": "./types/index.d.ts",
3030
"./cli": {
3131
"types": "./dist/types/cli.d.ts",
3232
"jsnext:source": "./src/cli.ts",
@@ -87,7 +87,6 @@
8787
"@modern-js/server-utils": "workspace:*",
8888
"@modern-js/utils": "workspace:*",
8989
"type-is": "^1.6.18",
90-
"formidable": "^1.2.2",
9190
"@swc/helpers": "0.5.13"
9291
},
9392
"devDependencies": {
@@ -103,7 +102,6 @@
103102
"@types/jest": "^29",
104103
"@types/node": "^14",
105104
"@types/type-is": "^1.6.3",
106-
"@types/formidable": "^1.2.3",
107105
"jest": "^29",
108106
"memfs": "^3.5.1",
109107
"ts-jest": "^29.1.0",

Diff for: packages/cli/plugin-bff/src/runtime/hono/adapter.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@ export class HonoAdapter {
7676
before,
7777
handler: async (c: Context, next: Next) => {
7878
if (this.apiServer) {
79-
const response = await this.apiServer.fetch(c.req.raw, c.env);
79+
const response = await this.apiServer.fetch(
80+
c.req as unknown as Request,
81+
c.env,
82+
);
8083

8184
if (response.status !== 404) {
8285
return new Response(response.body, response);

Diff for: packages/cli/plugin-bff/src/utils/createHonoRoutes.ts

+3-54
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import type { IncomingMessage } from 'node:http';
2-
import { Readable } from 'node:stream';
31
import type { APIHandlerInfo } from '@modern-js/bff-core';
42
import {
53
HttpMetadata,
@@ -8,7 +6,6 @@ import {
86
ValidationError,
97
isWithMetaHandler,
108
} from '@modern-js/bff-core';
11-
import formidable from 'formidable';
129
import type { Context, Next } from 'hono';
1310
import typeIs from 'type-is';
1411

@@ -67,7 +64,7 @@ export const createHonoHandler = (handler: Handler) => {
6764
if (response) {
6865
return response;
6966
}
70-
if (c.env?.node?.res?.headersSent) return;
67+
if (c.finalized) return;
7168

7269
const result = await handler(input);
7370
return result && typeof result === 'object'
@@ -87,7 +84,7 @@ export const createHonoHandler = (handler: Handler) => {
8784
const args = Object.values(input.params).concat(input);
8885
try {
8986
const body = await handler(...args);
90-
if (c.env?.node?.res?.headersSent) {
87+
if (c.finalized) {
9188
return await Promise.resolve();
9289
}
9390

@@ -118,8 +115,7 @@ const getHonoInput = async (c: Context) => {
118115
if (typeIs.is(contentType, ['application/json'])) {
119116
draft.data = await c.req.json();
120117
} else if (typeIs.is(contentType, ['multipart/form-data'])) {
121-
const nodeStream = await webStreamToNodeStream(c);
122-
draft.formData = await resolveFormData(nodeStream);
118+
draft.formData = await c.req.parseBody();
123119
} else if (typeIs.is(contentType, ['application/x-www-form-urlencoded'])) {
124120
draft.formUrlencoded = await c.req.parseBody();
125121
} else {
@@ -131,51 +127,4 @@ const getHonoInput = async (c: Context) => {
131127
return draft;
132128
};
133129

134-
async function webStreamToNodeStream(c: Context) {
135-
const reader = (c.req.raw.body as ReadableStream<Uint8Array>).getReader();
136-
const nodeStream = new Readable({
137-
async read() {
138-
try {
139-
const { done, value } = await reader.read();
140-
if (done) {
141-
this.push(null);
142-
} else {
143-
this.push(value);
144-
}
145-
} catch (err) {
146-
this.destroy(err as any);
147-
}
148-
},
149-
destroy(err, callback) {
150-
reader.cancel(err).finally(() => callback(err));
151-
},
152-
}) as IncomingMessage;
153-
154-
const headers = {
155-
'content-type': c.req.header('content-type') || 'multipart/form-data',
156-
'content-length': c.req.header('content-length') || '0',
157-
};
158-
159-
nodeStream.headers = headers;
160-
return nodeStream;
161-
}
162-
163-
const resolveFormData = (
164-
request: IncomingMessage,
165-
): Promise<Record<string, any>> => {
166-
const form = formidable({ multiples: true });
167-
return new Promise((resolve, reject) => {
168-
form.parse(request, (err, fields, files) => {
169-
if (err) {
170-
reject(err);
171-
}
172-
173-
resolve({
174-
...fields,
175-
...files,
176-
});
177-
});
178-
});
179-
};
180-
181130
export default createHonoRoutes;
File renamed without changes.

Diff for: packages/server/core/src/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export { AGGRED_DIR } from './constants';
55
export type { ServerBase, ServerBaseOptions } from './serverBase';
66
export { createServerBase } from './serverBase';
77
export { useHonoContext } from './context';
8-
export { CustomServer } from './plugins/customServer';
98

109
export type {
1110
Middleware,

Diff for: packages/server/core/src/serverBase.ts

-8
Original file line numberDiff line numberDiff line change
@@ -186,14 +186,6 @@ export class ServerBase<E extends Env = any> {
186186
return this.app.notFound.bind(this.app);
187187
}
188188

189-
get routes() {
190-
return this.app.routes;
191-
}
192-
193-
get route() {
194-
return this.app.route.bind(this.app);
195-
}
196-
197189
get onError() {
198190
return this.app.onError.bind(this.app);
199191
}

Diff for: packages/solutions/app-tools/src/plugins/deploy/platforms/vercel.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export const createVercelPreset: CreatePreset = (
102102
});
103103

104104
await fse.writeJSON(path.join(funcsDirectory, '.vc-config.json'), {
105-
runtime: 'nodejs20.x',
105+
runtime: 'nodejs16.x',
106106
handler: 'index.js',
107107
launcherType: 'Nodejs',
108108
shouldAddHelpers: false,

Diff for: packages/toolkit/types/server/server.d.ts

-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
1-
import type { IncomingMessage, ServerResponse } from 'node:http';
2-
import type { Http2ServerRequest, Http2ServerResponse } from 'node:http2';
3-
41
export type NodeRequest = IncomingMessage | Http2ServerRequest;
52
export type NodeResponse = ServerResponse | Http2ServerResponse;

0 commit comments

Comments
 (0)