Skip to content

Commit d5441e9

Browse files
committed
🎉 feat: 1.4.5
1 parent 8dbbcab commit d5441e9

File tree

6 files changed

+131
-49
lines changed

6 files changed

+131
-49
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
# 1.4.5 - 13 Nov 2025
2+
Improvement:
3+
- export `EdenFetchError`
4+
5+
Bug fix:
6+
- [#221](https://github.com/elysiajs/eden/pull/221) better handling for empty header and query types
7+
- use `ResponseInit['headers']` instead of `HeadersInit` for response headers type
8+
19
# 1.4.4 - 13 Oct 2025
210
Bug fix:
311
- revert streaming transferEncoding chunked

bun.lock

Lines changed: 26 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@elysiajs/eden",
3-
"version": "1.4.4",
3+
"version": "1.4.5",
44
"description": "Fully type-safe Elysia client",
55
"author": {
66
"name": "saltyAom",
@@ -53,13 +53,13 @@
5353
"release": "npm run build && npm run test && npm publish --access public"
5454
},
5555
"peerDependencies": {
56-
"elysia": ">= 1.4.0-exp.0"
56+
"elysia": ">= 1.4.0"
5757
},
5858
"devDependencies": {
5959
"@elysiajs/cors": "1.3.3",
6060
"@types/bun": "^1.2.20",
6161
"@types/node": "^24.3.0",
62-
"elysia": "^1.4.10",
62+
"elysia": "^1.4.15",
6363
"esbuild": "^0.25.9",
6464
"eslint": "^9.34.0",
6565
"expect-type": "^1.2.2",

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export type { Treaty } from './treaty2'
33
export { treaty } from './treaty2'
44
export { edenTreaty } from './treaty'
55
export { edenFetch } from './fetch'
6+
export { EdenFetchError } from './errors'

src/treaty2/types.ts

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,20 @@ type ReplaceGeneratorWithAsyncGenerator<
4040
: RecordType[K]
4141
} & {}
4242

43-
type Enumerate<N extends number, Acc extends number[] = []> =
44-
Acc['length'] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc['length']]>;
43+
type Enumerate<
44+
N extends number,
45+
Acc extends number[] = []
46+
> = Acc['length'] extends N
47+
? Acc[number]
48+
: Enumerate<N, [...Acc, Acc['length']]>
4549

46-
type IntegerRange<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
50+
type IntegerRange<F extends number, T extends number> = Exclude<
51+
Enumerate<T>,
52+
Enumerate<F>
53+
>
4754

48-
type SuccessCodeRange = IntegerRange<200, 300>;
49-
type IsSuccessCode<S extends number> = S extends SuccessCodeRange ? true : false;
55+
type SuccessCodeRange = IntegerRange<200, 300>
56+
type IsSuccessCode<S extends number> = S extends SuccessCodeRange ? true : false
5057

5158
type MaybeArray<T> = T | T[]
5259
type MaybePromise<T> = T | Promise<T>
@@ -60,26 +67,29 @@ export namespace Treaty {
6067
App extends {
6168
'~Routes': infer Schema extends Record<any, any>
6269
}
63-
? Prettify<Sign<Schema> & CreateParams<Schema>>
70+
? Prettify<Sign<Schema>> & CreateParams<Schema>
6471
: 'Please install Elysia before using Eden'
6572

6673
export type Sign<in out Route extends Record<any, any>> = {
6774
[K in keyof Route as K extends `:${string}`
6875
? never
6976
: K]: K extends 'subscribe' // ? Websocket route
7077
? MaybeEmptyObject<Route['subscribe']['headers'], 'headers'> &
71-
MaybeEmptyObject<Route['subscribe']['query'], 'query'> extends infer Param
78+
MaybeEmptyObject<
79+
Route['subscribe']['query'],
80+
'query'
81+
> extends infer Param
7282
? (options?: Param) => EdenWS<Route['subscribe']>
7383
: never
7484
: Route[K] extends {
75-
body: infer Body
76-
headers: infer Headers
77-
params: any
78-
query: infer Query
79-
response: infer Res extends Record<number, unknown>
80-
}
81-
? MaybeEmptyObject<Headers, 'headers'> &
82-
MaybeEmptyObject<Query, 'query'> extends infer Param
85+
body: infer Body
86+
headers: infer Headers
87+
params: any
88+
query: infer Query
89+
response: infer Res extends Record<number, unknown>
90+
}
91+
? MaybeEmptyObject<Headers, 'headers'> &
92+
MaybeEmptyObject<Query, 'query'> extends infer Param
8393
? {} extends Param
8494
? undefined extends Body
8595
? K extends 'get' | 'head'
@@ -98,23 +108,31 @@ export namespace Treaty {
98108
ReplaceGeneratorWithAsyncGenerator<Res>
99109
>
100110
>
101-
: {} extends Body
111+
: K extends 'get' | 'head'
102112
? (
103-
body?: Body,
104-
options?: Prettify<Param & TreatyParam>
105-
) => Promise<
106-
TreatyResponse<
107-
ReplaceGeneratorWithAsyncGenerator<Res>
108-
>
109-
>
110-
: (
111-
body: Body,
112113
options?: Prettify<Param & TreatyParam>
113114
) => Promise<
114115
TreatyResponse<
115116
ReplaceGeneratorWithAsyncGenerator<Res>
116117
>
117118
>
119+
: {} extends Body
120+
? (
121+
body?: Body,
122+
options?: Prettify<Param & TreatyParam>
123+
) => Promise<
124+
TreatyResponse<
125+
ReplaceGeneratorWithAsyncGenerator<Res>
126+
>
127+
>
128+
: (
129+
body: Body,
130+
options?: Prettify<Param & TreatyParam>
131+
) => Promise<
132+
TreatyResponse<
133+
ReplaceGeneratorWithAsyncGenerator<Res>
134+
>
135+
>
118136
: K extends 'get' | 'head'
119137
? (
120138
options: Prettify<Param & TreatyParam>
@@ -188,7 +206,7 @@ export namespace Treaty {
188206
error: null
189207
response: Response
190208
status: number
191-
headers: RequestInit['headers']
209+
headers: ResponseInit['headers']
192210
}
193211
| {
194212
data: null
@@ -209,7 +227,7 @@ export namespace Treaty {
209227
}[Exclude<keyof Res, SuccessCodeRange>]
210228
response: Response
211229
status: number
212-
headers: RequestInit['headers']
230+
headers: ResponseInit['headers']
213231
}
214232

215233
export interface OnMessage<Data = unknown> extends MessageEvent {

0 commit comments

Comments
 (0)