@hono/node-server 1.9.1 → 1.10.1

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 CHANGED
@@ -48,15 +48,15 @@ Essentially, you can simply use the latest version of each major release.
48
48
 
49
49
  ## Installation
50
50
 
51
- You can install from npm registry with `npm` command:
51
+ You can install it from the npm registry with `npm` command:
52
52
 
53
- ```
53
+ ```sh
54
54
  npm install @hono/node-server
55
55
  ```
56
56
 
57
57
  Or use `yarn`:
58
58
 
59
- ```
59
+ ```sh
60
60
  yarn add @hono/node-server
61
61
  ```
62
62
 
@@ -79,7 +79,7 @@ serve(app, (info) => {
79
79
 
80
80
  For example, run it using `ts-node`. Then an HTTP server will be launched. The default port is `3000`.
81
81
 
82
- ```
82
+ ```sh
83
83
  ts-node ./index.ts
84
84
  ```
85
85
 
@@ -114,6 +114,17 @@ serve({
114
114
  })
115
115
  ```
116
116
 
117
+ ### `overrideGlobalObjects`
118
+
119
+ The default value is `true`. The Node.js Adapter rewrites the global Request/Response and uses a lightweight Request/Response to improve performance. If you don't want to do that, set `false`.
120
+
121
+ ```ts
122
+ serve({
123
+ fetch: app.fetch,
124
+ overrideGlobalObjects: false,
125
+ })
126
+ ```
127
+
117
128
  ## Middleware
118
129
 
119
130
  Most built-in middleware also works with Node.js.
package/dist/index.js CHANGED
@@ -55,9 +55,6 @@ var Request = class extends GlobalRequest {
55
55
  super(input, options);
56
56
  }
57
57
  };
58
- Object.defineProperty(global, "Request", {
59
- value: Request
60
- });
61
58
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
62
59
  const headerRecord = [];
63
60
  const rawHeaders = incoming.rawHeaders;
@@ -263,9 +260,6 @@ var Response2 = class _Response {
263
260
  });
264
261
  Object.setPrototypeOf(Response2, GlobalResponse);
265
262
  Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
266
- Object.defineProperty(global, "Response", {
267
- value: Response2
268
- });
269
263
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
270
264
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
271
265
  );
@@ -392,15 +386,23 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
392
386
  }
393
387
  };
394
388
  var getRequestListener = (fetchCallback, options = {}) => {
389
+ if (options.overrideGlobalObjects !== false && global.Request !== Request) {
390
+ Object.defineProperty(global, "Request", {
391
+ value: Request
392
+ });
393
+ Object.defineProperty(global, "Response", {
394
+ value: Response2
395
+ });
396
+ }
395
397
  return async (incoming, outgoing) => {
396
398
  let res;
397
- const req = newRequest(incoming);
398
- outgoing.on("close", () => {
399
- if (incoming.destroyed) {
400
- req[getAbortController]().abort();
401
- }
402
- });
403
399
  try {
400
+ const req = newRequest(incoming);
401
+ outgoing.on("close", () => {
402
+ if (incoming.destroyed) {
403
+ req[getAbortController]().abort();
404
+ }
405
+ });
404
406
  res = fetchCallback(req, { incoming, outgoing });
405
407
  if (cacheKey in res) {
406
408
  return responseViaCache(res, outgoing);
@@ -430,7 +432,9 @@ var getRequestListener = (fetchCallback, options = {}) => {
430
432
  // src/server.ts
431
433
  var createAdaptorServer = (options) => {
432
434
  const fetchCallback = options.fetch;
433
- const requestListener = getRequestListener(fetchCallback);
435
+ const requestListener = getRequestListener(fetchCallback, {
436
+ overrideGlobalObjects: options.overrideGlobalObjects
437
+ });
434
438
  const createServer = options.createServer || import_node_http.createServer;
435
439
  const server = createServer(options.serverOptions || {}, requestListener);
436
440
  return server;
package/dist/index.mjs CHANGED
@@ -17,9 +17,6 @@ var Request = class extends GlobalRequest {
17
17
  super(input, options);
18
18
  }
19
19
  };
20
- Object.defineProperty(global, "Request", {
21
- value: Request
22
- });
23
20
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
24
21
  const headerRecord = [];
25
22
  const rawHeaders = incoming.rawHeaders;
@@ -225,9 +222,6 @@ var Response2 = class _Response {
225
222
  });
226
223
  Object.setPrototypeOf(Response2, GlobalResponse);
227
224
  Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
228
- Object.defineProperty(global, "Response", {
229
- value: Response2
230
- });
231
225
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
232
226
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
233
227
  );
@@ -354,15 +348,23 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
354
348
  }
355
349
  };
356
350
  var getRequestListener = (fetchCallback, options = {}) => {
351
+ if (options.overrideGlobalObjects !== false && global.Request !== Request) {
352
+ Object.defineProperty(global, "Request", {
353
+ value: Request
354
+ });
355
+ Object.defineProperty(global, "Response", {
356
+ value: Response2
357
+ });
358
+ }
357
359
  return async (incoming, outgoing) => {
358
360
  let res;
359
- const req = newRequest(incoming);
360
- outgoing.on("close", () => {
361
- if (incoming.destroyed) {
362
- req[getAbortController]().abort();
363
- }
364
- });
365
361
  try {
362
+ const req = newRequest(incoming);
363
+ outgoing.on("close", () => {
364
+ if (incoming.destroyed) {
365
+ req[getAbortController]().abort();
366
+ }
367
+ });
366
368
  res = fetchCallback(req, { incoming, outgoing });
367
369
  if (cacheKey in res) {
368
370
  return responseViaCache(res, outgoing);
@@ -392,7 +394,9 @@ var getRequestListener = (fetchCallback, options = {}) => {
392
394
  // src/server.ts
393
395
  var createAdaptorServer = (options) => {
394
396
  const fetchCallback = options.fetch;
395
- const requestListener = getRequestListener(fetchCallback);
397
+ const requestListener = getRequestListener(fetchCallback, {
398
+ overrideGlobalObjects: options.overrideGlobalObjects
399
+ });
396
400
  const createServer = options.createServer || createServerHTTP;
397
401
  const server = createServer(options.serverOptions || {}, requestListener);
398
402
  return server;
@@ -5,6 +5,7 @@ import 'node:https';
5
5
 
6
6
  declare const getRequestListener: (fetchCallback: FetchCallback, options?: {
7
7
  errorHandler?: CustomErrorHandler;
8
+ overrideGlobalObjects?: boolean;
8
9
  }) => (incoming: IncomingMessage | Http2ServerRequest, outgoing: ServerResponse | Http2ServerResponse) => Promise<void>;
9
10
 
10
11
  export { getRequestListener };
@@ -5,6 +5,7 @@ import 'node:https';
5
5
 
6
6
  declare const getRequestListener: (fetchCallback: FetchCallback, options?: {
7
7
  errorHandler?: CustomErrorHandler;
8
+ overrideGlobalObjects?: boolean;
8
9
  }) => (incoming: IncomingMessage | Http2ServerRequest, outgoing: ServerResponse | Http2ServerResponse) => Promise<void>;
9
10
 
10
11
  export { getRequestListener };
package/dist/listener.js CHANGED
@@ -50,9 +50,6 @@ var Request = class extends GlobalRequest {
50
50
  super(input, options);
51
51
  }
52
52
  };
53
- Object.defineProperty(global, "Request", {
54
- value: Request
55
- });
56
53
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
57
54
  const headerRecord = [];
58
55
  const rawHeaders = incoming.rawHeaders;
@@ -258,9 +255,6 @@ var Response2 = class _Response {
258
255
  });
259
256
  Object.setPrototypeOf(Response2, GlobalResponse);
260
257
  Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
261
- Object.defineProperty(global, "Response", {
262
- value: Response2
263
- });
264
258
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
265
259
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
266
260
  );
@@ -387,15 +381,23 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
387
381
  }
388
382
  };
389
383
  var getRequestListener = (fetchCallback, options = {}) => {
384
+ if (options.overrideGlobalObjects !== false && global.Request !== Request) {
385
+ Object.defineProperty(global, "Request", {
386
+ value: Request
387
+ });
388
+ Object.defineProperty(global, "Response", {
389
+ value: Response2
390
+ });
391
+ }
390
392
  return async (incoming, outgoing) => {
391
393
  let res;
392
- const req = newRequest(incoming);
393
- outgoing.on("close", () => {
394
- if (incoming.destroyed) {
395
- req[getAbortController]().abort();
396
- }
397
- });
398
394
  try {
395
+ const req = newRequest(incoming);
396
+ outgoing.on("close", () => {
397
+ if (incoming.destroyed) {
398
+ req[getAbortController]().abort();
399
+ }
400
+ });
399
401
  res = fetchCallback(req, { incoming, outgoing });
400
402
  if (cacheKey in res) {
401
403
  return responseViaCache(res, outgoing);
package/dist/listener.mjs CHANGED
@@ -14,9 +14,6 @@ var Request = class extends GlobalRequest {
14
14
  super(input, options);
15
15
  }
16
16
  };
17
- Object.defineProperty(global, "Request", {
18
- value: Request
19
- });
20
17
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
21
18
  const headerRecord = [];
22
19
  const rawHeaders = incoming.rawHeaders;
@@ -222,9 +219,6 @@ var Response2 = class _Response {
222
219
  });
223
220
  Object.setPrototypeOf(Response2, GlobalResponse);
224
221
  Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
225
- Object.defineProperty(global, "Response", {
226
- value: Response2
227
- });
228
222
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
229
223
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
230
224
  );
@@ -351,15 +345,23 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
351
345
  }
352
346
  };
353
347
  var getRequestListener = (fetchCallback, options = {}) => {
348
+ if (options.overrideGlobalObjects !== false && global.Request !== Request) {
349
+ Object.defineProperty(global, "Request", {
350
+ value: Request
351
+ });
352
+ Object.defineProperty(global, "Response", {
353
+ value: Response2
354
+ });
355
+ }
354
356
  return async (incoming, outgoing) => {
355
357
  let res;
356
- const req = newRequest(incoming);
357
- outgoing.on("close", () => {
358
- if (incoming.destroyed) {
359
- req[getAbortController]().abort();
360
- }
361
- });
362
358
  try {
359
+ const req = newRequest(incoming);
360
+ outgoing.on("close", () => {
361
+ if (incoming.destroyed) {
362
+ req[getAbortController]().abort();
363
+ }
364
+ });
363
365
  res = fetchCallback(req, { incoming, outgoing });
364
366
  if (cacheKey in res) {
365
367
  return responseViaCache(res, outgoing);
package/dist/request.js CHANGED
@@ -41,9 +41,6 @@ var Request = class extends GlobalRequest {
41
41
  super(input, options);
42
42
  }
43
43
  };
44
- Object.defineProperty(global, "Request", {
45
- value: Request
46
- });
47
44
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
48
45
  const headerRecord = [];
49
46
  const rawHeaders = incoming.rawHeaders;
package/dist/request.mjs CHANGED
@@ -14,9 +14,6 @@ var Request = class extends GlobalRequest {
14
14
  super(input, options);
15
15
  }
16
16
  };
17
- Object.defineProperty(global, "Request", {
18
- value: Request
19
- });
20
17
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
21
18
  const headerRecord = [];
22
19
  const rawHeaders = incoming.rawHeaders;
package/dist/response.js CHANGED
@@ -108,9 +108,6 @@ var Response = class _Response {
108
108
  });
109
109
  Object.setPrototypeOf(Response, GlobalResponse);
110
110
  Object.setPrototypeOf(Response.prototype, GlobalResponse.prototype);
111
- Object.defineProperty(global, "Response", {
112
- value: Response
113
- });
114
111
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
115
112
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
116
113
  );
package/dist/response.mjs CHANGED
@@ -79,9 +79,6 @@ var Response = class _Response {
79
79
  });
80
80
  Object.setPrototypeOf(Response, GlobalResponse);
81
81
  Object.setPrototypeOf(Response.prototype, GlobalResponse.prototype);
82
- Object.defineProperty(global, "Response", {
83
- value: Response
84
- });
85
82
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
86
83
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
87
84
  );
package/dist/server.js CHANGED
@@ -52,9 +52,6 @@ var Request = class extends GlobalRequest {
52
52
  super(input, options);
53
53
  }
54
54
  };
55
- Object.defineProperty(global, "Request", {
56
- value: Request
57
- });
58
55
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
59
56
  const headerRecord = [];
60
57
  const rawHeaders = incoming.rawHeaders;
@@ -260,9 +257,6 @@ var Response2 = class _Response {
260
257
  });
261
258
  Object.setPrototypeOf(Response2, GlobalResponse);
262
259
  Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
263
- Object.defineProperty(global, "Response", {
264
- value: Response2
265
- });
266
260
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
267
261
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
268
262
  );
@@ -389,15 +383,23 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
389
383
  }
390
384
  };
391
385
  var getRequestListener = (fetchCallback, options = {}) => {
386
+ if (options.overrideGlobalObjects !== false && global.Request !== Request) {
387
+ Object.defineProperty(global, "Request", {
388
+ value: Request
389
+ });
390
+ Object.defineProperty(global, "Response", {
391
+ value: Response2
392
+ });
393
+ }
392
394
  return async (incoming, outgoing) => {
393
395
  let res;
394
- const req = newRequest(incoming);
395
- outgoing.on("close", () => {
396
- if (incoming.destroyed) {
397
- req[getAbortController]().abort();
398
- }
399
- });
400
396
  try {
397
+ const req = newRequest(incoming);
398
+ outgoing.on("close", () => {
399
+ if (incoming.destroyed) {
400
+ req[getAbortController]().abort();
401
+ }
402
+ });
401
403
  res = fetchCallback(req, { incoming, outgoing });
402
404
  if (cacheKey in res) {
403
405
  return responseViaCache(res, outgoing);
@@ -427,7 +429,9 @@ var getRequestListener = (fetchCallback, options = {}) => {
427
429
  // src/server.ts
428
430
  var createAdaptorServer = (options) => {
429
431
  const fetchCallback = options.fetch;
430
- const requestListener = getRequestListener(fetchCallback);
432
+ const requestListener = getRequestListener(fetchCallback, {
433
+ overrideGlobalObjects: options.overrideGlobalObjects
434
+ });
431
435
  const createServer = options.createServer || import_node_http.createServer;
432
436
  const server = createServer(options.serverOptions || {}, requestListener);
433
437
  return server;
package/dist/server.mjs CHANGED
@@ -17,9 +17,6 @@ var Request = class extends GlobalRequest {
17
17
  super(input, options);
18
18
  }
19
19
  };
20
- Object.defineProperty(global, "Request", {
21
- value: Request
22
- });
23
20
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
24
21
  const headerRecord = [];
25
22
  const rawHeaders = incoming.rawHeaders;
@@ -225,9 +222,6 @@ var Response2 = class _Response {
225
222
  });
226
223
  Object.setPrototypeOf(Response2, GlobalResponse);
227
224
  Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
228
- Object.defineProperty(global, "Response", {
229
- value: Response2
230
- });
231
225
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
232
226
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
233
227
  );
@@ -354,15 +348,23 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
354
348
  }
355
349
  };
356
350
  var getRequestListener = (fetchCallback, options = {}) => {
351
+ if (options.overrideGlobalObjects !== false && global.Request !== Request) {
352
+ Object.defineProperty(global, "Request", {
353
+ value: Request
354
+ });
355
+ Object.defineProperty(global, "Response", {
356
+ value: Response2
357
+ });
358
+ }
357
359
  return async (incoming, outgoing) => {
358
360
  let res;
359
- const req = newRequest(incoming);
360
- outgoing.on("close", () => {
361
- if (incoming.destroyed) {
362
- req[getAbortController]().abort();
363
- }
364
- });
365
361
  try {
362
+ const req = newRequest(incoming);
363
+ outgoing.on("close", () => {
364
+ if (incoming.destroyed) {
365
+ req[getAbortController]().abort();
366
+ }
367
+ });
366
368
  res = fetchCallback(req, { incoming, outgoing });
367
369
  if (cacheKey in res) {
368
370
  return responseViaCache(res, outgoing);
@@ -392,7 +394,9 @@ var getRequestListener = (fetchCallback, options = {}) => {
392
394
  // src/server.ts
393
395
  var createAdaptorServer = (options) => {
394
396
  const fetchCallback = options.fetch;
395
- const requestListener = getRequestListener(fetchCallback);
397
+ const requestListener = getRequestListener(fetchCallback, {
398
+ overrideGlobalObjects: options.overrideGlobalObjects
399
+ });
396
400
  const createServer = options.createServer || createServerHTTP;
397
401
  const server = createServer(options.serverOptions || {}, requestListener);
398
402
  return server;
package/dist/types.d.mts CHANGED
@@ -34,6 +34,7 @@ type createSecureHttp2Options = {
34
34
  type ServerOptions = createHttpOptions | createHttpsOptions | createHttp2Options | createSecureHttp2Options;
35
35
  type Options = {
36
36
  fetch: FetchCallback;
37
+ overrideGlobalObjects?: boolean;
37
38
  port?: number;
38
39
  hostname?: string;
39
40
  } & ServerOptions;
package/dist/types.d.ts CHANGED
@@ -34,6 +34,7 @@ type createSecureHttp2Options = {
34
34
  type ServerOptions = createHttpOptions | createHttpsOptions | createHttp2Options | createSecureHttp2Options;
35
35
  type Options = {
36
36
  fetch: FetchCallback;
37
+ overrideGlobalObjects?: boolean;
37
38
  port?: number;
38
39
  hostname?: string;
39
40
  } & ServerOptions;
package/dist/vercel.js CHANGED
@@ -50,9 +50,6 @@ var Request = class extends GlobalRequest {
50
50
  super(input, options);
51
51
  }
52
52
  };
53
- Object.defineProperty(global, "Request", {
54
- value: Request
55
- });
56
53
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
57
54
  const headerRecord = [];
58
55
  const rawHeaders = incoming.rawHeaders;
@@ -258,9 +255,6 @@ var Response2 = class _Response {
258
255
  });
259
256
  Object.setPrototypeOf(Response2, GlobalResponse);
260
257
  Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
261
- Object.defineProperty(global, "Response", {
262
- value: Response2
263
- });
264
258
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
265
259
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
266
260
  );
@@ -387,15 +381,23 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
387
381
  }
388
382
  };
389
383
  var getRequestListener = (fetchCallback, options = {}) => {
384
+ if (options.overrideGlobalObjects !== false && global.Request !== Request) {
385
+ Object.defineProperty(global, "Request", {
386
+ value: Request
387
+ });
388
+ Object.defineProperty(global, "Response", {
389
+ value: Response2
390
+ });
391
+ }
390
392
  return async (incoming, outgoing) => {
391
393
  let res;
392
- const req = newRequest(incoming);
393
- outgoing.on("close", () => {
394
- if (incoming.destroyed) {
395
- req[getAbortController]().abort();
396
- }
397
- });
398
394
  try {
395
+ const req = newRequest(incoming);
396
+ outgoing.on("close", () => {
397
+ if (incoming.destroyed) {
398
+ req[getAbortController]().abort();
399
+ }
400
+ });
399
401
  res = fetchCallback(req, { incoming, outgoing });
400
402
  if (cacheKey in res) {
401
403
  return responseViaCache(res, outgoing);
package/dist/vercel.mjs CHANGED
@@ -14,9 +14,6 @@ var Request = class extends GlobalRequest {
14
14
  super(input, options);
15
15
  }
16
16
  };
17
- Object.defineProperty(global, "Request", {
18
- value: Request
19
- });
20
17
  var newRequestFromIncoming = (method, url, incoming, abortController) => {
21
18
  const headerRecord = [];
22
19
  const rawHeaders = incoming.rawHeaders;
@@ -222,9 +219,6 @@ var Response2 = class _Response {
222
219
  });
223
220
  Object.setPrototypeOf(Response2, GlobalResponse);
224
221
  Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
225
- Object.defineProperty(global, "Response", {
226
- value: Response2
227
- });
228
222
  var stateKey = Reflect.ownKeys(new GlobalResponse()).find(
229
223
  (k) => typeof k === "symbol" && k.toString() === "Symbol(state)"
230
224
  );
@@ -351,15 +345,23 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
351
345
  }
352
346
  };
353
347
  var getRequestListener = (fetchCallback, options = {}) => {
348
+ if (options.overrideGlobalObjects !== false && global.Request !== Request) {
349
+ Object.defineProperty(global, "Request", {
350
+ value: Request
351
+ });
352
+ Object.defineProperty(global, "Response", {
353
+ value: Response2
354
+ });
355
+ }
354
356
  return async (incoming, outgoing) => {
355
357
  let res;
356
- const req = newRequest(incoming);
357
- outgoing.on("close", () => {
358
- if (incoming.destroyed) {
359
- req[getAbortController]().abort();
360
- }
361
- });
362
358
  try {
359
+ const req = newRequest(incoming);
360
+ outgoing.on("close", () => {
361
+ if (incoming.destroyed) {
362
+ req[getAbortController]().abort();
363
+ }
364
+ });
363
365
  res = fetchCallback(req, { incoming, outgoing });
364
366
  if (cacheKey in res) {
365
367
  return responseViaCache(res, outgoing);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hono/node-server",
3
- "version": "1.9.1",
3
+ "version": "1.10.1",
4
4
  "description": "Node.js Adapter for Hono",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",