@hono/node-server 1.6.0 → 1.7.0
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/README.md +34 -0
- package/dist/index.js +27 -6
- package/dist/index.mjs +27 -6
- package/dist/listener.d.mts +4 -2
- package/dist/listener.d.ts +4 -2
- package/dist/listener.js +27 -6
- package/dist/listener.mjs +27 -6
- package/dist/server.js +27 -6
- package/dist/server.mjs +27 -6
- package/dist/types.d.mts +2 -1
- package/dist/types.d.ts +2 -1
- package/dist/vercel.d.mts +1 -1
- package/dist/vercel.d.ts +1 -1
- package/dist/vercel.js +27 -6
- package/dist/vercel.mjs +27 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -178,6 +178,40 @@ app.use(
|
|
|
178
178
|
)
|
|
179
179
|
```
|
|
180
180
|
|
|
181
|
+
## Accessing Node.js API
|
|
182
|
+
|
|
183
|
+
You can access the Node.js API from `c.env` in Node.js. For example, if you want to specify a type, you can write the following.
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
import { serve } from '@hono/node-server'
|
|
187
|
+
import type { HttpBindings } from '@hono/node-server'
|
|
188
|
+
import { Hono } from 'hono'
|
|
189
|
+
|
|
190
|
+
const app = new Hono<{ Bindings: HttpBindings }>()
|
|
191
|
+
|
|
192
|
+
app.get('/', (c) => {
|
|
193
|
+
return c.json({
|
|
194
|
+
remoteAddress: c.env.incoming.socket.remoteAddress,
|
|
195
|
+
})
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
serve(app)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
The APIs that you can get from `c.env` are as follows.
|
|
202
|
+
|
|
203
|
+
```ts
|
|
204
|
+
type HttpBindings = {
|
|
205
|
+
incoming: IncomingMessage
|
|
206
|
+
outgoing: ServerResponse
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
type Http2Bindings = {
|
|
210
|
+
incoming: Http2ServerRequest
|
|
211
|
+
outgoing: Http2ServerResponse
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
181
215
|
## Related projects
|
|
182
216
|
|
|
183
217
|
- Hono - <https://hono.dev>
|
package/dist/index.js
CHANGED
|
@@ -304,8 +304,22 @@ var responseViaCache = (res, outgoing) => {
|
|
|
304
304
|
);
|
|
305
305
|
}
|
|
306
306
|
};
|
|
307
|
-
var responseViaResponseObject = async (res, outgoing) => {
|
|
308
|
-
|
|
307
|
+
var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
308
|
+
if (res instanceof Promise) {
|
|
309
|
+
if (options.errorHandler) {
|
|
310
|
+
try {
|
|
311
|
+
res = await res;
|
|
312
|
+
} catch (err) {
|
|
313
|
+
const errRes = await options.errorHandler(err);
|
|
314
|
+
if (!errRes) {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
res = errRes;
|
|
318
|
+
}
|
|
319
|
+
} else {
|
|
320
|
+
res = await res.catch(handleFetchError);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
309
323
|
try {
|
|
310
324
|
const isCached = cacheKey in res;
|
|
311
325
|
if (isCached) {
|
|
@@ -342,8 +356,8 @@ var responseViaResponseObject = async (res, outgoing) => {
|
|
|
342
356
|
outgoing.end();
|
|
343
357
|
}
|
|
344
358
|
};
|
|
345
|
-
var getRequestListener = (fetchCallback) => {
|
|
346
|
-
return (incoming, outgoing) => {
|
|
359
|
+
var getRequestListener = (fetchCallback, options = {}) => {
|
|
360
|
+
return async (incoming, outgoing) => {
|
|
347
361
|
let res;
|
|
348
362
|
const req = newRequest(incoming);
|
|
349
363
|
try {
|
|
@@ -353,12 +367,19 @@ var getRequestListener = (fetchCallback) => {
|
|
|
353
367
|
}
|
|
354
368
|
} catch (e) {
|
|
355
369
|
if (!res) {
|
|
356
|
-
|
|
370
|
+
if (options.errorHandler) {
|
|
371
|
+
res = await options.errorHandler(e);
|
|
372
|
+
if (!res) {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
} else {
|
|
376
|
+
res = handleFetchError(e);
|
|
377
|
+
}
|
|
357
378
|
} else {
|
|
358
379
|
return handleResponseError(e, outgoing);
|
|
359
380
|
}
|
|
360
381
|
}
|
|
361
|
-
return responseViaResponseObject(res, outgoing);
|
|
382
|
+
return responseViaResponseObject(res, outgoing, options);
|
|
362
383
|
};
|
|
363
384
|
};
|
|
364
385
|
|
package/dist/index.mjs
CHANGED
|
@@ -266,8 +266,22 @@ var responseViaCache = (res, outgoing) => {
|
|
|
266
266
|
);
|
|
267
267
|
}
|
|
268
268
|
};
|
|
269
|
-
var responseViaResponseObject = async (res, outgoing) => {
|
|
270
|
-
|
|
269
|
+
var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
270
|
+
if (res instanceof Promise) {
|
|
271
|
+
if (options.errorHandler) {
|
|
272
|
+
try {
|
|
273
|
+
res = await res;
|
|
274
|
+
} catch (err) {
|
|
275
|
+
const errRes = await options.errorHandler(err);
|
|
276
|
+
if (!errRes) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
res = errRes;
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
res = await res.catch(handleFetchError);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
271
285
|
try {
|
|
272
286
|
const isCached = cacheKey in res;
|
|
273
287
|
if (isCached) {
|
|
@@ -304,8 +318,8 @@ var responseViaResponseObject = async (res, outgoing) => {
|
|
|
304
318
|
outgoing.end();
|
|
305
319
|
}
|
|
306
320
|
};
|
|
307
|
-
var getRequestListener = (fetchCallback) => {
|
|
308
|
-
return (incoming, outgoing) => {
|
|
321
|
+
var getRequestListener = (fetchCallback, options = {}) => {
|
|
322
|
+
return async (incoming, outgoing) => {
|
|
309
323
|
let res;
|
|
310
324
|
const req = newRequest(incoming);
|
|
311
325
|
try {
|
|
@@ -315,12 +329,19 @@ var getRequestListener = (fetchCallback) => {
|
|
|
315
329
|
}
|
|
316
330
|
} catch (e) {
|
|
317
331
|
if (!res) {
|
|
318
|
-
|
|
332
|
+
if (options.errorHandler) {
|
|
333
|
+
res = await options.errorHandler(e);
|
|
334
|
+
if (!res) {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
} else {
|
|
338
|
+
res = handleFetchError(e);
|
|
339
|
+
}
|
|
319
340
|
} else {
|
|
320
341
|
return handleResponseError(e, outgoing);
|
|
321
342
|
}
|
|
322
343
|
}
|
|
323
|
-
return responseViaResponseObject(res, outgoing);
|
|
344
|
+
return responseViaResponseObject(res, outgoing, options);
|
|
324
345
|
};
|
|
325
346
|
};
|
|
326
347
|
|
package/dist/listener.d.mts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import { Http2ServerRequest, Http2ServerResponse } from 'node:http2';
|
|
3
|
-
import { FetchCallback } from './types.mjs';
|
|
3
|
+
import { FetchCallback, CustomErrorHandler } from './types.mjs';
|
|
4
4
|
import 'node:https';
|
|
5
5
|
|
|
6
|
-
declare const getRequestListener: (fetchCallback: FetchCallback
|
|
6
|
+
declare const getRequestListener: (fetchCallback: FetchCallback, options?: {
|
|
7
|
+
errorHandler?: CustomErrorHandler;
|
|
8
|
+
}) => (incoming: IncomingMessage | Http2ServerRequest, outgoing: ServerResponse | Http2ServerResponse) => Promise<void>;
|
|
7
9
|
|
|
8
10
|
export { getRequestListener };
|
package/dist/listener.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import { Http2ServerRequest, Http2ServerResponse } from 'node:http2';
|
|
3
|
-
import { FetchCallback } from './types.js';
|
|
3
|
+
import { FetchCallback, CustomErrorHandler } from './types.js';
|
|
4
4
|
import 'node:https';
|
|
5
5
|
|
|
6
|
-
declare const getRequestListener: (fetchCallback: FetchCallback
|
|
6
|
+
declare const getRequestListener: (fetchCallback: FetchCallback, options?: {
|
|
7
|
+
errorHandler?: CustomErrorHandler;
|
|
8
|
+
}) => (incoming: IncomingMessage | Http2ServerRequest, outgoing: ServerResponse | Http2ServerResponse) => Promise<void>;
|
|
7
9
|
|
|
8
10
|
export { getRequestListener };
|
package/dist/listener.js
CHANGED
|
@@ -299,8 +299,22 @@ var responseViaCache = (res, outgoing) => {
|
|
|
299
299
|
);
|
|
300
300
|
}
|
|
301
301
|
};
|
|
302
|
-
var responseViaResponseObject = async (res, outgoing) => {
|
|
303
|
-
|
|
302
|
+
var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
303
|
+
if (res instanceof Promise) {
|
|
304
|
+
if (options.errorHandler) {
|
|
305
|
+
try {
|
|
306
|
+
res = await res;
|
|
307
|
+
} catch (err) {
|
|
308
|
+
const errRes = await options.errorHandler(err);
|
|
309
|
+
if (!errRes) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
res = errRes;
|
|
313
|
+
}
|
|
314
|
+
} else {
|
|
315
|
+
res = await res.catch(handleFetchError);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
304
318
|
try {
|
|
305
319
|
const isCached = cacheKey in res;
|
|
306
320
|
if (isCached) {
|
|
@@ -337,8 +351,8 @@ var responseViaResponseObject = async (res, outgoing) => {
|
|
|
337
351
|
outgoing.end();
|
|
338
352
|
}
|
|
339
353
|
};
|
|
340
|
-
var getRequestListener = (fetchCallback) => {
|
|
341
|
-
return (incoming, outgoing) => {
|
|
354
|
+
var getRequestListener = (fetchCallback, options = {}) => {
|
|
355
|
+
return async (incoming, outgoing) => {
|
|
342
356
|
let res;
|
|
343
357
|
const req = newRequest(incoming);
|
|
344
358
|
try {
|
|
@@ -348,12 +362,19 @@ var getRequestListener = (fetchCallback) => {
|
|
|
348
362
|
}
|
|
349
363
|
} catch (e) {
|
|
350
364
|
if (!res) {
|
|
351
|
-
|
|
365
|
+
if (options.errorHandler) {
|
|
366
|
+
res = await options.errorHandler(e);
|
|
367
|
+
if (!res) {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
} else {
|
|
371
|
+
res = handleFetchError(e);
|
|
372
|
+
}
|
|
352
373
|
} else {
|
|
353
374
|
return handleResponseError(e, outgoing);
|
|
354
375
|
}
|
|
355
376
|
}
|
|
356
|
-
return responseViaResponseObject(res, outgoing);
|
|
377
|
+
return responseViaResponseObject(res, outgoing, options);
|
|
357
378
|
};
|
|
358
379
|
};
|
|
359
380
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/listener.mjs
CHANGED
|
@@ -263,8 +263,22 @@ var responseViaCache = (res, outgoing) => {
|
|
|
263
263
|
);
|
|
264
264
|
}
|
|
265
265
|
};
|
|
266
|
-
var responseViaResponseObject = async (res, outgoing) => {
|
|
267
|
-
|
|
266
|
+
var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
267
|
+
if (res instanceof Promise) {
|
|
268
|
+
if (options.errorHandler) {
|
|
269
|
+
try {
|
|
270
|
+
res = await res;
|
|
271
|
+
} catch (err) {
|
|
272
|
+
const errRes = await options.errorHandler(err);
|
|
273
|
+
if (!errRes) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
res = errRes;
|
|
277
|
+
}
|
|
278
|
+
} else {
|
|
279
|
+
res = await res.catch(handleFetchError);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
268
282
|
try {
|
|
269
283
|
const isCached = cacheKey in res;
|
|
270
284
|
if (isCached) {
|
|
@@ -301,8 +315,8 @@ var responseViaResponseObject = async (res, outgoing) => {
|
|
|
301
315
|
outgoing.end();
|
|
302
316
|
}
|
|
303
317
|
};
|
|
304
|
-
var getRequestListener = (fetchCallback) => {
|
|
305
|
-
return (incoming, outgoing) => {
|
|
318
|
+
var getRequestListener = (fetchCallback, options = {}) => {
|
|
319
|
+
return async (incoming, outgoing) => {
|
|
306
320
|
let res;
|
|
307
321
|
const req = newRequest(incoming);
|
|
308
322
|
try {
|
|
@@ -312,12 +326,19 @@ var getRequestListener = (fetchCallback) => {
|
|
|
312
326
|
}
|
|
313
327
|
} catch (e) {
|
|
314
328
|
if (!res) {
|
|
315
|
-
|
|
329
|
+
if (options.errorHandler) {
|
|
330
|
+
res = await options.errorHandler(e);
|
|
331
|
+
if (!res) {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
} else {
|
|
335
|
+
res = handleFetchError(e);
|
|
336
|
+
}
|
|
316
337
|
} else {
|
|
317
338
|
return handleResponseError(e, outgoing);
|
|
318
339
|
}
|
|
319
340
|
}
|
|
320
|
-
return responseViaResponseObject(res, outgoing);
|
|
341
|
+
return responseViaResponseObject(res, outgoing, options);
|
|
321
342
|
};
|
|
322
343
|
};
|
|
323
344
|
export {
|
package/dist/server.js
CHANGED
|
@@ -301,8 +301,22 @@ var responseViaCache = (res, outgoing) => {
|
|
|
301
301
|
);
|
|
302
302
|
}
|
|
303
303
|
};
|
|
304
|
-
var responseViaResponseObject = async (res, outgoing) => {
|
|
305
|
-
|
|
304
|
+
var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
305
|
+
if (res instanceof Promise) {
|
|
306
|
+
if (options.errorHandler) {
|
|
307
|
+
try {
|
|
308
|
+
res = await res;
|
|
309
|
+
} catch (err) {
|
|
310
|
+
const errRes = await options.errorHandler(err);
|
|
311
|
+
if (!errRes) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
res = errRes;
|
|
315
|
+
}
|
|
316
|
+
} else {
|
|
317
|
+
res = await res.catch(handleFetchError);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
306
320
|
try {
|
|
307
321
|
const isCached = cacheKey in res;
|
|
308
322
|
if (isCached) {
|
|
@@ -339,8 +353,8 @@ var responseViaResponseObject = async (res, outgoing) => {
|
|
|
339
353
|
outgoing.end();
|
|
340
354
|
}
|
|
341
355
|
};
|
|
342
|
-
var getRequestListener = (fetchCallback) => {
|
|
343
|
-
return (incoming, outgoing) => {
|
|
356
|
+
var getRequestListener = (fetchCallback, options = {}) => {
|
|
357
|
+
return async (incoming, outgoing) => {
|
|
344
358
|
let res;
|
|
345
359
|
const req = newRequest(incoming);
|
|
346
360
|
try {
|
|
@@ -350,12 +364,19 @@ var getRequestListener = (fetchCallback) => {
|
|
|
350
364
|
}
|
|
351
365
|
} catch (e) {
|
|
352
366
|
if (!res) {
|
|
353
|
-
|
|
367
|
+
if (options.errorHandler) {
|
|
368
|
+
res = await options.errorHandler(e);
|
|
369
|
+
if (!res) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
} else {
|
|
373
|
+
res = handleFetchError(e);
|
|
374
|
+
}
|
|
354
375
|
} else {
|
|
355
376
|
return handleResponseError(e, outgoing);
|
|
356
377
|
}
|
|
357
378
|
}
|
|
358
|
-
return responseViaResponseObject(res, outgoing);
|
|
379
|
+
return responseViaResponseObject(res, outgoing, options);
|
|
359
380
|
};
|
|
360
381
|
};
|
|
361
382
|
|
package/dist/server.mjs
CHANGED
|
@@ -266,8 +266,22 @@ var responseViaCache = (res, outgoing) => {
|
|
|
266
266
|
);
|
|
267
267
|
}
|
|
268
268
|
};
|
|
269
|
-
var responseViaResponseObject = async (res, outgoing) => {
|
|
270
|
-
|
|
269
|
+
var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
270
|
+
if (res instanceof Promise) {
|
|
271
|
+
if (options.errorHandler) {
|
|
272
|
+
try {
|
|
273
|
+
res = await res;
|
|
274
|
+
} catch (err) {
|
|
275
|
+
const errRes = await options.errorHandler(err);
|
|
276
|
+
if (!errRes) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
res = errRes;
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
res = await res.catch(handleFetchError);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
271
285
|
try {
|
|
272
286
|
const isCached = cacheKey in res;
|
|
273
287
|
if (isCached) {
|
|
@@ -304,8 +318,8 @@ var responseViaResponseObject = async (res, outgoing) => {
|
|
|
304
318
|
outgoing.end();
|
|
305
319
|
}
|
|
306
320
|
};
|
|
307
|
-
var getRequestListener = (fetchCallback) => {
|
|
308
|
-
return (incoming, outgoing) => {
|
|
321
|
+
var getRequestListener = (fetchCallback, options = {}) => {
|
|
322
|
+
return async (incoming, outgoing) => {
|
|
309
323
|
let res;
|
|
310
324
|
const req = newRequest(incoming);
|
|
311
325
|
try {
|
|
@@ -315,12 +329,19 @@ var getRequestListener = (fetchCallback) => {
|
|
|
315
329
|
}
|
|
316
330
|
} catch (e) {
|
|
317
331
|
if (!res) {
|
|
318
|
-
|
|
332
|
+
if (options.errorHandler) {
|
|
333
|
+
res = await options.errorHandler(e);
|
|
334
|
+
if (!res) {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
} else {
|
|
338
|
+
res = handleFetchError(e);
|
|
339
|
+
}
|
|
319
340
|
} else {
|
|
320
341
|
return handleResponseError(e, outgoing);
|
|
321
342
|
}
|
|
322
343
|
}
|
|
323
|
-
return responseViaResponseObject(res, outgoing);
|
|
344
|
+
return responseViaResponseObject(res, outgoing, options);
|
|
324
345
|
};
|
|
325
346
|
};
|
|
326
347
|
|
package/dist/types.d.mts
CHANGED
|
@@ -37,5 +37,6 @@ type Options = {
|
|
|
37
37
|
port?: number;
|
|
38
38
|
hostname?: string;
|
|
39
39
|
} & ServerOptions;
|
|
40
|
+
type CustomErrorHandler = (err: unknown) => void | Response | Promise<void | Response>;
|
|
40
41
|
|
|
41
|
-
export { FetchCallback, Http2Bindings, HttpBindings, NextHandlerOption, Options, ServerType };
|
|
42
|
+
export { CustomErrorHandler, FetchCallback, Http2Bindings, HttpBindings, NextHandlerOption, Options, ServerType };
|
package/dist/types.d.ts
CHANGED
|
@@ -37,5 +37,6 @@ type Options = {
|
|
|
37
37
|
port?: number;
|
|
38
38
|
hostname?: string;
|
|
39
39
|
} & ServerOptions;
|
|
40
|
+
type CustomErrorHandler = (err: unknown) => void | Response | Promise<void | Response>;
|
|
40
41
|
|
|
41
|
-
export { FetchCallback, Http2Bindings, HttpBindings, NextHandlerOption, Options, ServerType };
|
|
42
|
+
export { CustomErrorHandler, FetchCallback, Http2Bindings, HttpBindings, NextHandlerOption, Options, ServerType };
|
package/dist/vercel.d.mts
CHANGED
|
@@ -2,6 +2,6 @@ import * as http2 from 'http2';
|
|
|
2
2
|
import * as http from 'http';
|
|
3
3
|
import { Hono } from 'hono';
|
|
4
4
|
|
|
5
|
-
declare const handle: (app: Hono<any, any, any>) => (incoming: http.IncomingMessage | http2.Http2ServerRequest, outgoing: http.ServerResponse<http.IncomingMessage> | http2.Http2ServerResponse) =>
|
|
5
|
+
declare const handle: (app: Hono<any, any, any>) => (incoming: http.IncomingMessage | http2.Http2ServerRequest, outgoing: http.ServerResponse<http.IncomingMessage> | http2.Http2ServerResponse) => Promise<void>;
|
|
6
6
|
|
|
7
7
|
export { handle };
|
package/dist/vercel.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ import * as http2 from 'http2';
|
|
|
2
2
|
import * as http from 'http';
|
|
3
3
|
import { Hono } from 'hono';
|
|
4
4
|
|
|
5
|
-
declare const handle: (app: Hono<any, any, any>) => (incoming: http.IncomingMessage | http2.Http2ServerRequest, outgoing: http.ServerResponse<http.IncomingMessage> | http2.Http2ServerResponse) =>
|
|
5
|
+
declare const handle: (app: Hono<any, any, any>) => (incoming: http.IncomingMessage | http2.Http2ServerRequest, outgoing: http.ServerResponse<http.IncomingMessage> | http2.Http2ServerResponse) => Promise<void>;
|
|
6
6
|
|
|
7
7
|
export { handle };
|
package/dist/vercel.js
CHANGED
|
@@ -299,8 +299,22 @@ var responseViaCache = (res, outgoing) => {
|
|
|
299
299
|
);
|
|
300
300
|
}
|
|
301
301
|
};
|
|
302
|
-
var responseViaResponseObject = async (res, outgoing) => {
|
|
303
|
-
|
|
302
|
+
var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
303
|
+
if (res instanceof Promise) {
|
|
304
|
+
if (options.errorHandler) {
|
|
305
|
+
try {
|
|
306
|
+
res = await res;
|
|
307
|
+
} catch (err) {
|
|
308
|
+
const errRes = await options.errorHandler(err);
|
|
309
|
+
if (!errRes) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
res = errRes;
|
|
313
|
+
}
|
|
314
|
+
} else {
|
|
315
|
+
res = await res.catch(handleFetchError);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
304
318
|
try {
|
|
305
319
|
const isCached = cacheKey in res;
|
|
306
320
|
if (isCached) {
|
|
@@ -337,8 +351,8 @@ var responseViaResponseObject = async (res, outgoing) => {
|
|
|
337
351
|
outgoing.end();
|
|
338
352
|
}
|
|
339
353
|
};
|
|
340
|
-
var getRequestListener = (fetchCallback) => {
|
|
341
|
-
return (incoming, outgoing) => {
|
|
354
|
+
var getRequestListener = (fetchCallback, options = {}) => {
|
|
355
|
+
return async (incoming, outgoing) => {
|
|
342
356
|
let res;
|
|
343
357
|
const req = newRequest(incoming);
|
|
344
358
|
try {
|
|
@@ -348,12 +362,19 @@ var getRequestListener = (fetchCallback) => {
|
|
|
348
362
|
}
|
|
349
363
|
} catch (e) {
|
|
350
364
|
if (!res) {
|
|
351
|
-
|
|
365
|
+
if (options.errorHandler) {
|
|
366
|
+
res = await options.errorHandler(e);
|
|
367
|
+
if (!res) {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
} else {
|
|
371
|
+
res = handleFetchError(e);
|
|
372
|
+
}
|
|
352
373
|
} else {
|
|
353
374
|
return handleResponseError(e, outgoing);
|
|
354
375
|
}
|
|
355
376
|
}
|
|
356
|
-
return responseViaResponseObject(res, outgoing);
|
|
377
|
+
return responseViaResponseObject(res, outgoing, options);
|
|
357
378
|
};
|
|
358
379
|
};
|
|
359
380
|
|
package/dist/vercel.mjs
CHANGED
|
@@ -263,8 +263,22 @@ var responseViaCache = (res, outgoing) => {
|
|
|
263
263
|
);
|
|
264
264
|
}
|
|
265
265
|
};
|
|
266
|
-
var responseViaResponseObject = async (res, outgoing) => {
|
|
267
|
-
|
|
266
|
+
var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
267
|
+
if (res instanceof Promise) {
|
|
268
|
+
if (options.errorHandler) {
|
|
269
|
+
try {
|
|
270
|
+
res = await res;
|
|
271
|
+
} catch (err) {
|
|
272
|
+
const errRes = await options.errorHandler(err);
|
|
273
|
+
if (!errRes) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
res = errRes;
|
|
277
|
+
}
|
|
278
|
+
} else {
|
|
279
|
+
res = await res.catch(handleFetchError);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
268
282
|
try {
|
|
269
283
|
const isCached = cacheKey in res;
|
|
270
284
|
if (isCached) {
|
|
@@ -301,8 +315,8 @@ var responseViaResponseObject = async (res, outgoing) => {
|
|
|
301
315
|
outgoing.end();
|
|
302
316
|
}
|
|
303
317
|
};
|
|
304
|
-
var getRequestListener = (fetchCallback) => {
|
|
305
|
-
return (incoming, outgoing) => {
|
|
318
|
+
var getRequestListener = (fetchCallback, options = {}) => {
|
|
319
|
+
return async (incoming, outgoing) => {
|
|
306
320
|
let res;
|
|
307
321
|
const req = newRequest(incoming);
|
|
308
322
|
try {
|
|
@@ -312,12 +326,19 @@ var getRequestListener = (fetchCallback) => {
|
|
|
312
326
|
}
|
|
313
327
|
} catch (e) {
|
|
314
328
|
if (!res) {
|
|
315
|
-
|
|
329
|
+
if (options.errorHandler) {
|
|
330
|
+
res = await options.errorHandler(e);
|
|
331
|
+
if (!res) {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
} else {
|
|
335
|
+
res = handleFetchError(e);
|
|
336
|
+
}
|
|
316
337
|
} else {
|
|
317
338
|
return handleResponseError(e, outgoing);
|
|
318
339
|
}
|
|
319
340
|
}
|
|
320
|
-
return responseViaResponseObject(res, outgoing);
|
|
341
|
+
return responseViaResponseObject(res, outgoing, options);
|
|
321
342
|
};
|
|
322
343
|
};
|
|
323
344
|
|