Skip to content

Commit 1c441ed

Browse files
committed
Refactor
1 parent f4ad5c6 commit 1c441ed

File tree

7 files changed

+1232
-29
lines changed

7 files changed

+1232
-29
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"changes":{"packages/zod/package.json":"Patch","packages/core/package.json":"Patch","packages/react-query/package.json":"Patch","packages/hookform/package.json":"Patch","packages/generator/package.json":"Patch","packages/fetch/package.json":"Patch"},"note":"Impl pregen, Fix wrong path issue","date":"2026-03-25T12:54:53.475679Z"}

examples/next/app/page.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ export default function Home() {
3939
const _object2: DevupObject<'response', 'openapi2.json'>['User'] | undefined =
4040
data?.[0]
4141

42+
const _results = queryClient.useQueries([
43+
['GET', 'getUsers', { query: { name: 'John Doe' } }],
44+
['GET', '/users/{id}', { params: { id: 1 }, query: { name: 'John Doe' } }],
45+
])
46+
4247
console.info(data, isLoading, error)
4348

4449
const {

packages/core/src/api-struct.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ export interface DevupResponseComponentStruct {}
2828
// biome-ignore lint/suspicious/noEmptyInterface: empty interface
2929
export interface DevupErrorComponentStruct {}
3030

31+
// biome-ignore lint/suspicious/noEmptyInterface: empty interface for augmentation by generator
32+
export interface DevupPrecomputedMethodKeys {}
33+
34+
// biome-ignore lint/suspicious/noEmptyInterface: empty interface for augmentation by generator
35+
export interface DevupPrecomputedScopes {}
36+
37+
type LowercaseMethod = 'get' | 'post' | 'put' | 'delete' | 'patch'
38+
3139
export type DevupObject<
3240
R extends 'response' | 'request' | 'error' = 'response',
3341
T extends keyof DevupApiServers | (string & {}) = 'openapi.json',
@@ -105,7 +113,13 @@ export type DevupApiMethodScope<
105113
export type DevupApiMethodKey<
106114
S extends string,
107115
M extends DevupApiMethodKeys,
108-
> = ConditionalKeys<DevupApiMethodScope<S, M>>
116+
> = S extends keyof DevupPrecomputedMethodKeys
117+
? ExtractValue<
118+
ExtractValue<DevupPrecomputedMethodKeys, S>,
119+
Lowercase<M> & LowercaseMethod,
120+
never
121+
>
122+
: ConditionalKeys<DevupApiMethodScope<S, M>>
109123

110124
export type DevupApiStructScope<O extends string> = DevupGetApiStructScope<O> &
111125
DevupPostApiStructScope<O> &

packages/fetch/src/api.ts

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,15 @@ import type {
33
ApiOption,
44
BoildApiOption,
55
ConditionalKeys,
6+
DevupApiMethodKey,
67
DevupApiRequestInit,
78
DevupApiServers,
89
DevupApiStructKey,
910
DevupApiStructScope,
10-
DevupDeleteApiStructKey,
1111
DevupDeleteApiStructScope,
12-
DevupGetApiStructKey,
1312
DevupGetApiStructScope,
14-
DevupPatchApiStructKey,
1513
DevupPatchApiStructScope,
16-
DevupPostApiStructKey,
1714
DevupPostApiStructScope,
18-
DevupPutApiStructKey,
1915
DevupPutApiStructScope,
2016
ExtractValue,
2117
Middleware,
@@ -65,7 +61,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
6561
}
6662

6763
get<
68-
T extends DevupGetApiStructKey<S>,
64+
T extends DevupApiMethodKey<S, 'get'>,
6965
O extends Additional<T, DevupGetApiStructScope<S>>,
7066
>(
7167
path: T,
@@ -80,7 +76,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
8076
}
8177

8278
GET<
83-
T extends DevupGetApiStructKey<S>,
79+
T extends DevupApiMethodKey<S, 'get'>,
8480
O extends Additional<T, DevupGetApiStructScope<S>>,
8581
>(
8682
path: T,
@@ -95,7 +91,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
9591
}
9692

9793
post<
98-
T extends DevupPostApiStructKey<S>,
94+
T extends DevupApiMethodKey<S, 'post'>,
9995
O extends Additional<T, DevupPostApiStructScope<S>>,
10096
>(
10197
path: T,
@@ -110,7 +106,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
110106
}
111107

112108
POST<
113-
T extends DevupPostApiStructKey<S>,
109+
T extends DevupApiMethodKey<S, 'post'>,
114110
O extends Additional<T, DevupPostApiStructScope<S>>,
115111
>(
116112
path: T,
@@ -125,7 +121,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
125121
}
126122

127123
put<
128-
T extends DevupPutApiStructKey<S>,
124+
T extends DevupApiMethodKey<S, 'put'>,
129125
O extends Additional<T, DevupPutApiStructScope<S>>,
130126
>(
131127
path: T,
@@ -140,7 +136,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
140136
}
141137

142138
PUT<
143-
T extends DevupPutApiStructKey<S>,
139+
T extends DevupApiMethodKey<S, 'put'>,
144140
O extends Additional<T, DevupPutApiStructScope<S>>,
145141
>(
146142
path: T,
@@ -155,7 +151,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
155151
}
156152

157153
delete<
158-
T extends DevupDeleteApiStructKey<S>,
154+
T extends DevupApiMethodKey<S, 'delete'>,
159155
O extends Additional<T, DevupDeleteApiStructScope<S>>,
160156
>(
161157
path: T,
@@ -170,7 +166,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
170166
}
171167

172168
DELETE<
173-
T extends DevupDeleteApiStructKey<S>,
169+
T extends DevupApiMethodKey<S, 'delete'>,
174170
O extends Additional<T, DevupDeleteApiStructScope<S>>,
175171
>(
176172
path: T,
@@ -185,7 +181,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
185181
}
186182

187183
patch<
188-
T extends DevupPatchApiStructKey<S>,
184+
T extends DevupApiMethodKey<S, 'patch'>,
189185
O extends Additional<T, DevupPatchApiStructScope<S>>,
190186
>(
191187
path: T,
@@ -200,7 +196,7 @@ export class DevupApi<S extends ConditionalKeys<DevupApiServers>> {
200196
}
201197

202198
PATCH<
203-
T extends DevupPatchApiStructKey<S>,
199+
T extends DevupApiMethodKey<S, 'patch'>,
204200
O extends Additional<T, DevupPatchApiStructScope<S>>,
205201
>(
206202
path: T,

0 commit comments

Comments
 (0)