hono 2.7.3 → 2.7.4

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.
@@ -121,6 +121,11 @@ class Context {
121
121
  return this._res || (this._res = new Response("404 Not Found", { status: 404 }));
122
122
  }
123
123
  set res(_res) {
124
+ if (this._res) {
125
+ this._res.headers.forEach((v, k) => {
126
+ _res.headers.set(k, v);
127
+ });
128
+ }
124
129
  this._res = _res;
125
130
  this.finalized = true;
126
131
  }
package/dist/context.js CHANGED
@@ -99,6 +99,11 @@ var Context = class {
99
99
  return this._res || (this._res = new Response("404 Not Found", { status: 404 }));
100
100
  }
101
101
  set res(_res) {
102
+ if (this._res) {
103
+ this._res.headers.forEach((v, k) => {
104
+ _res.headers.set(k, v);
105
+ });
106
+ }
102
107
  this._res = _res;
103
108
  this.finalized = true;
104
109
  }
@@ -1,11 +1,15 @@
1
1
  import type { BodyData } from './utils/body';
2
2
  import type { Cookie } from './utils/cookie';
3
+ import type { UnionToIntersection } from './utils/types';
4
+ declare type RemoveQuestion<T> = T extends `${infer R}?` ? R : T;
5
+ declare type UndefinedIfHavingQuestion<T> = T extends `${infer _}?` ? string | undefined : string;
6
+ declare type ParamKeyToRecord<T extends string> = T extends `${infer R}?` ? Record<R, string | undefined> : Record<T, string>;
3
7
  declare global {
4
- interface Request<CfHostMetadata = unknown, ParamKeyType extends string = string, Data = any> {
5
- paramData?: Record<ParamKeyType, string>;
8
+ interface Request<CfHostMetadata = unknown, ParamKey extends string = string, Data = any> {
9
+ paramData?: Record<ParamKey, string>;
6
10
  param: {
7
- (key: ParamKeyType): string;
8
- (): Record<ParamKeyType, string>;
11
+ (key: RemoveQuestion<ParamKey>): UndefinedIfHavingQuestion<ParamKey>;
12
+ (): UnionToIntersection<ParamKeyToRecord<ParamKey>>;
9
13
  };
10
14
  queryData?: Record<string, string>;
11
15
  query: {
@@ -37,3 +41,4 @@ declare global {
37
41
  }
38
42
  }
39
43
  export declare function extendRequestPrototype(): void;
44
+ export {};
@@ -13,7 +13,7 @@ export declare type NotFoundHandler<E extends Partial<Environment> = Environment
13
13
  export declare type ErrorHandler<E extends Partial<Environment> = Environment> = (err: Error, c: Context<string, E>) => Response;
14
14
  export declare type Next = () => Promise<void>;
15
15
  declare type ParamKeyName<NameWithPattern> = NameWithPattern extends `${infer Name}{${infer _Pattern}` ? Name : NameWithPattern;
16
- declare type ParamKey<Component> = Component extends `:${infer NameWithPattern}?` ? ParamKeyName<NameWithPattern> : Component extends `:${infer NameWithPattern}` ? ParamKeyName<NameWithPattern> : never;
16
+ declare type ParamKey<Component> = Component extends `:${infer NameWithPattern}` ? ParamKeyName<NameWithPattern> : never;
17
17
  export declare type ParamKeys<Path> = Path extends `${infer Component}/${infer Rest}` ? ParamKey<Component> | ParamKeys<Rest> : ParamKey<Path>;
18
18
  export interface CustomHandler<P = string, E = Partial<Environment>, S = any> {
19
19
  (c: Context<P extends string ? P : string, P extends Partial<Environment> ? P : E extends Partial<Environment> ? E : never, P extends string ? E extends Partial<Environment> ? S : P extends Partial<Environment> ? E : never : P extends Partial<Environment> ? E extends Partial<Environment> ? S : E : P>, next: Next): Response | Promise<Response | undefined | void>;
@@ -1,3 +1,4 @@
1
1
  export declare type Expect<T extends true> = T;
2
2
  export declare type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
3
3
  export declare type NotEqual<X, Y> = true extends Equal<X, Y> ? false : true;
4
+ export declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "2.7.3",
3
+ "version": "2.7.4",
4
4
  "description": "Ultrafast web framework for Cloudflare Workers, Deno, and Bun.",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",
@@ -20,6 +20,7 @@
20
20
  "denoify": "rimraf deno_dist && denoify && rimraf 'deno_dist/**/*.test.ts'",
21
21
  "copy:package.cjs.json": "cp ./package.cjs.json ./dist/cjs/package.json && cp ./package.cjs.json ./dist/types/package.json ",
22
22
  "build": "rimraf dist && tsx ./build.ts && yarn copy:package.cjs.json",
23
+ "postbuild": "publint",
23
24
  "watch": "rimraf dist && tsx ./build.ts --watch && yarn copy:package.cjs.json",
24
25
  "prerelease": "yarn denoify && yarn test:deno && yarn build",
25
26
  "release": "np"
@@ -276,6 +277,7 @@
276
277
  "jest-environment-miniflare": "2.7.1",
277
278
  "np": "^7.6.2",
278
279
  "prettier": "^2.6.2",
280
+ "publint": "^0.1.8",
279
281
  "rimraf": "^3.0.2",
280
282
  "ts-jest": "^29.0.1",
281
283
  "tsx": "^3.11.0",