hono 4.3.8 → 4.3.10

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.
@@ -218,7 +218,11 @@ var albProcessor = new class ALBProcessor extends EventProcessor {
218
218
  return event.httpMethod;
219
219
  }
220
220
  getQueryString(event) {
221
- return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value}`).join("&");
221
+ if (event.queryStringParameters) {
222
+ return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value}`).join("&");
223
+ } else {
224
+ return Object.entries(event.multiValueQueryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value.join(`&${key}=`)}`).join("&");
225
+ }
222
226
  }
223
227
  getCookies(event, headers) {
224
228
  let cookie;
@@ -250,7 +250,11 @@ const albProcessor = new class ALBProcessor extends EventProcessor {
250
250
  return event.httpMethod;
251
251
  }
252
252
  getQueryString(event) {
253
- return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value}`).join("&");
253
+ if (event.queryStringParameters) {
254
+ return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value}`).join("&");
255
+ } else {
256
+ return Object.entries(event.multiValueQueryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value.join(`&${key}=`)}`).join("&");
257
+ }
254
258
  }
255
259
  getCookies(event, headers) {
256
260
  let cookie;
@@ -31,7 +31,11 @@ class HTTPException extends Error {
31
31
  }
32
32
  getResponse() {
33
33
  if (this.res) {
34
- return this.res;
34
+ const newResponse = new Response(this.res.body, {
35
+ status: this.status,
36
+ headers: this.res.headers
37
+ });
38
+ return newResponse;
35
39
  }
36
40
  return new Response(this.message, {
37
41
  status: this.status
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var etag_exports = {};
20
20
  __export(etag_exports, {
21
+ RETAINED_304_HEADERS: () => RETAINED_304_HEADERS,
21
22
  etag: () => etag
22
23
  });
23
24
  module.exports = __toCommonJS(etag_exports);
@@ -66,5 +67,6 @@ const etag = (options) => {
66
67
  };
67
68
  // Annotate the CommonJS export names for ESM import in node:
68
69
  0 && (module.exports = {
70
+ RETAINED_304_HEADERS,
69
71
  etag
70
72
  });
@@ -22,6 +22,7 @@ __export(secure_headers_exports, {
22
22
  secureHeaders: () => secureHeaders
23
23
  });
24
24
  module.exports = __toCommonJS(secure_headers_exports);
25
+ var import_encode = require("../../utils/encode");
25
26
  const HEADERS_MAP = {
26
27
  crossOriginEmbedderPolicy: ["Cross-Origin-Embedder-Policy", "require-corp"],
27
28
  crossOriginResourcePolicy: ["Cross-Origin-Resource-Policy", "same-origin"],
@@ -53,7 +54,7 @@ const DEFAULT_OPTIONS = {
53
54
  const generateNonce = () => {
54
55
  const buffer = new Uint8Array(16);
55
56
  crypto.getRandomValues(buffer);
56
- return Buffer.from(buffer).toString("base64");
57
+ return (0, import_encode.encodeBase64)(buffer);
57
58
  };
58
59
  const NONCE = (ctx) => {
59
60
  const nonce = ctx.get("secureHeadersNonce") || (() => {
@@ -9,7 +9,11 @@ var HTTPException = class extends Error {
9
9
  }
10
10
  getResponse() {
11
11
  if (this.res) {
12
- return this.res;
12
+ const newResponse = new Response(this.res.body, {
13
+ status: this.status,
14
+ headers: this.res.headers
15
+ });
16
+ return newResponse;
13
17
  }
14
18
  return new Response(this.message, {
15
19
  status: this.status
@@ -43,5 +43,6 @@ var etag = (options) => {
43
43
  };
44
44
  };
45
45
  export {
46
+ RETAINED_304_HEADERS,
46
47
  etag
47
48
  };
@@ -1,4 +1,5 @@
1
1
  // src/middleware/secure-headers/index.ts
2
+ import { encodeBase64 } from "../../utils/encode.js";
2
3
  var HEADERS_MAP = {
3
4
  crossOriginEmbedderPolicy: ["Cross-Origin-Embedder-Policy", "require-corp"],
4
5
  crossOriginResourcePolicy: ["Cross-Origin-Resource-Policy", "same-origin"],
@@ -30,7 +31,7 @@ var DEFAULT_OPTIONS = {
30
31
  var generateNonce = () => {
31
32
  const buffer = new Uint8Array(16);
32
33
  crypto.getRandomValues(buffer);
33
- return Buffer.from(buffer).toString("base64");
34
+ return encodeBase64(buffer);
34
35
  };
35
36
  var NONCE = (ctx) => {
36
37
  const nonce = ctx.get("secureHeadersNonce") || (() => {
@@ -51,6 +51,9 @@ export interface ALBProxyEvent {
51
51
  body: string | null;
52
52
  isBase64Encoded: boolean;
53
53
  queryStringParameters?: Record<string, string | undefined>;
54
+ multiValueQueryStringParameters?: {
55
+ [parameterKey: string]: string[];
56
+ };
54
57
  requestContext: ALBRequestContext;
55
58
  }
56
59
  export interface APIGatewayProxyResult {
@@ -1,7 +1,7 @@
1
1
  import { Hono } from '../../hono';
2
2
  import type { Env, H, HandlerResponse, Input, MiddlewareHandler } from '../../types';
3
3
  type InitApp<E extends Env = Env> = (app: Hono<E>) => void;
4
- interface CreateHandlersInterface<E extends Env, P extends string> {
4
+ export interface CreateHandlersInterface<E extends Env, P extends string> {
5
5
  <I extends Input = {}, R extends HandlerResponse<any> = any>(handler1: H<E, P, I, R>): [
6
6
  H<E, P, I, R>
7
7
  ];
@@ -3,5 +3,12 @@ type ETagOptions = {
3
3
  retainedHeaders?: string[];
4
4
  weak?: boolean;
5
5
  };
6
+ /**
7
+ * Default headers to pass through on 304 responses. From the spec:
8
+ * > The response must not contain a body and must include the headers that
9
+ * > would have been sent in an equivalent 200 OK response: Cache-Control,
10
+ * > Content-Location, Date, ETag, Expires, and Vary.
11
+ */
12
+ export declare const RETAINED_304_HEADERS: string[];
6
13
  export declare const etag: (options?: ETagOptions) => MiddlewareHandler;
7
14
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "4.3.8",
3
+ "version": "4.3.10",
4
4
  "description": "Ultrafast web framework for the Edges",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",