Skip to content

Commit f4ad5c6

Browse files
committed
Fix refactor
1 parent 2180f8f commit f4ad5c6

File tree

6 files changed

+214
-224
lines changed

6 files changed

+214
-224
lines changed

packages/core/src/additional.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,10 @@ export type Additional<
66
Target extends object,
77
> = T extends keyof Target ? Target[T] & object : object
88

9-
export type RequiredOptions<T extends object> = keyof T extends undefined
9+
export type RequiredOptions<T extends object> = ('params' | 'query' | 'body') &
10+
keyof T extends never
1011
? never
11-
: 'params' extends keyof T
12-
? T
13-
: 'query' extends keyof T
14-
? T
15-
: 'body' extends keyof T
16-
? T
17-
: never
12+
: T
1813
export type IsCold = keyof DevupApiServers extends never ? true : false
1914
export type DevupApiRequestInit = Omit<RequestInit, 'body'> & {
2015
body?: object | RequestInit['body']
@@ -40,9 +35,10 @@ export type ExtractValue<T, V extends string, F = any> = V extends keyof T
4035

4136
export type BoildApiOption<O> = Omit<DevupApiRequestInit, 'params'> &
4237
Omit<O, 'response' | 'error'>
43-
export type ConditionalApiOption<O> = IsCold extends true
44-
? DevupApiRequestInit
45-
: BoildApiOption<O>
38+
export type ConditionalApiOption<
39+
O,
40+
_Cold extends boolean = IsCold,
41+
> = _Cold extends true ? DevupApiRequestInit : BoildApiOption<O>
4642

4743
export type ApiOption<O extends object, R extends unknown[] = []> = [
4844
RequiredOptions<O>,

packages/core/src/api-struct.ts

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@ export interface DevupErrorComponentStruct {}
3131
export type DevupObject<
3232
R extends 'response' | 'request' | 'error' = 'response',
3333
T extends keyof DevupApiServers | (string & {}) = 'openapi.json',
34-
> = ExtractValue<
35-
{
36-
response: ExtractValue<DevupResponseComponentStruct, T>
37-
request: ExtractValue<DevupRequestComponentStruct, T>
38-
error: ExtractValue<DevupErrorComponentStruct, T>
39-
},
40-
R
41-
>
34+
> = R extends 'response'
35+
? ExtractValue<DevupResponseComponentStruct, T>
36+
: R extends 'request'
37+
? ExtractValue<DevupRequestComponentStruct, T>
38+
: R extends 'error'
39+
? ExtractValue<DevupErrorComponentStruct, T>
40+
: never
4241

4342
export type DevupGetApiStructScope<O extends string> = ConditionalScope<
4443
DevupGetApiStruct,
@@ -91,25 +90,32 @@ export type DevupApiMethodKeys =
9190
export type DevupApiMethodScope<
9291
S extends string,
9392
M extends DevupApiMethodKeys,
94-
> = {
95-
get: DevupGetApiStructScope<S>
96-
post: DevupPostApiStructScope<S>
97-
put: DevupPutApiStructScope<S>
98-
delete: DevupDeleteApiStructScope<S>
99-
patch: DevupPatchApiStructScope<S>
100-
GET: DevupGetApiStructScope<S>
101-
POST: DevupPostApiStructScope<S>
102-
PUT: DevupPutApiStructScope<S>
103-
DELETE: DevupDeleteApiStructScope<S>
104-
PATCH: DevupPatchApiStructScope<S>
105-
}[M]
93+
> = M extends 'get' | 'GET'
94+
? DevupGetApiStructScope<S>
95+
: M extends 'post' | 'POST'
96+
? DevupPostApiStructScope<S>
97+
: M extends 'put' | 'PUT'
98+
? DevupPutApiStructScope<S>
99+
: M extends 'delete' | 'DELETE'
100+
? DevupDeleteApiStructScope<S>
101+
: M extends 'patch' | 'PATCH'
102+
? DevupPatchApiStructScope<S>
103+
: never
104+
105+
export type DevupApiMethodKey<
106+
S extends string,
107+
M extends DevupApiMethodKeys,
108+
> = ConditionalKeys<DevupApiMethodScope<S, M>>
106109

107110
export type DevupApiStructScope<O extends string> = DevupGetApiStructScope<O> &
108111
DevupPostApiStructScope<O> &
109112
DevupPutApiStructScope<O> &
110113
DevupDeleteApiStructScope<O> &
111114
DevupPatchApiStructScope<O>
112115

113-
export type DevupApiStructKey<O extends string> = ConditionalKeys<
114-
DevupApiStructScope<O>
115-
>
116+
export type DevupApiStructKey<O extends string> =
117+
| DevupGetApiStructKey<O>
118+
| DevupPostApiStructKey<O>
119+
| DevupPutApiStructKey<O>
120+
| DevupDeleteApiStructKey<O>
121+
| DevupPatchApiStructKey<O>

packages/core/src/utils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { ExtractValue } from './additional'
2+
import type { DevupApiServers } from './api-struct'
23

3-
export type ConditionalKeys<T, F = string> = keyof T extends undefined
4+
export type ConditionalKeys<T, F = string> = keyof DevupApiServers extends never
45
? F
56
: keyof T & string
67
export type ConditionalScope<T, K extends string> = ExtractValue<T, K, object>

packages/hookform/src/types.ts

Lines changed: 13 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,9 @@ import type {
22
Additional,
33
ConditionalKeys,
44
DevupApi,
5+
DevupApiMethodKey,
6+
DevupApiMethodScope,
57
DevupApiServers,
6-
DevupDeleteApiStructKey,
7-
DevupDeleteApiStructScope,
8-
DevupGetApiStructKey,
9-
DevupGetApiStructScope,
10-
DevupPatchApiStructKey,
11-
DevupPatchApiStructScope,
12-
DevupPostApiStructKey,
13-
DevupPostApiStructScope,
14-
DevupPutApiStructKey,
15-
DevupPutApiStructScope,
168
ExtractValue,
179
} from '@devup-api/fetch'
1810
import type { QueryClient, UseMutationResult } from '@tanstack/react-query'
@@ -31,58 +23,22 @@ export type FetchMethod = 'get' | 'post' | 'put' | 'patch' | 'delete'
3123
export type MethodApiStructScope<
3224
S extends string,
3325
M extends HttpMethod,
34-
> = M extends 'post'
35-
? DevupPostApiStructScope<S>
36-
: M extends 'put'
37-
? DevupPutApiStructScope<S>
38-
: M extends 'patch'
39-
? DevupPatchApiStructScope<S>
40-
: M extends 'delete'
41-
? DevupDeleteApiStructScope<S>
42-
: never
26+
> = DevupApiMethodScope<S, M>
4327

4428
export type MethodApiStructKey<
4529
S extends string,
4630
M extends HttpMethod,
47-
> = M extends 'post'
48-
? DevupPostApiStructKey<S>
49-
: M extends 'put'
50-
? DevupPutApiStructKey<S>
51-
: M extends 'patch'
52-
? DevupPatchApiStructKey<S>
53-
: M extends 'delete'
54-
? DevupDeleteApiStructKey<S>
55-
: never
31+
> = DevupApiMethodKey<S, M>
5632

5733
export type FetchMethodApiStructScope<
5834
S extends string,
5935
M extends FetchMethod,
60-
> = M extends 'get'
61-
? DevupGetApiStructScope<S>
62-
: M extends 'post'
63-
? DevupPostApiStructScope<S>
64-
: M extends 'put'
65-
? DevupPutApiStructScope<S>
66-
: M extends 'patch'
67-
? DevupPatchApiStructScope<S>
68-
: M extends 'delete'
69-
? DevupDeleteApiStructScope<S>
70-
: never
36+
> = DevupApiMethodScope<S, M>
7137

7238
export type FetchMethodApiStructKey<
7339
S extends string,
7440
M extends FetchMethod,
75-
> = M extends 'get'
76-
? DevupGetApiStructKey<S>
77-
: M extends 'post'
78-
? DevupPostApiStructKey<S>
79-
: M extends 'put'
80-
? DevupPutApiStructKey<S>
81-
: M extends 'patch'
82-
? DevupPatchApiStructKey<S>
83-
: M extends 'delete'
84-
? DevupDeleteApiStructKey<S>
85-
: never
41+
> = DevupApiMethodKey<S, M>
8642

8743
/**
8844
* Configuration for auto-fetching default values
@@ -91,10 +47,6 @@ export interface FetchDefaultValuesConfig<
9147
S extends ConditionalKeys<DevupApiServers>,
9248
FM extends FetchMethod = 'get',
9349
FP extends FetchMethodApiStructKey<S, FM> = FetchMethodApiStructKey<S, FM>,
94-
FO extends Additional<FP, FetchMethodApiStructScope<S, FM>> = Additional<
95-
FP,
96-
FetchMethodApiStructScope<S, FM>
97-
>,
9850
> {
9951
/**
10052
* HTTP method for fetching default values
@@ -108,11 +60,16 @@ export interface FetchDefaultValuesConfig<
10860
/**
10961
* Request options for fetching (params, query, headers)
11062
*/
111-
options?: Omit<FO, 'body'>
63+
options?: Omit<Additional<FP, FetchMethodApiStructScope<S, FM>>, 'body'>
11264
/**
11365
* Transform the fetched response to form default values
11466
*/
115-
transform?: (response: ExtractValue<FO, 'response'>) => unknown
67+
transform?: (
68+
response: ExtractValue<
69+
Additional<FP, FetchMethodApiStructScope<S, FM>>,
70+
'response'
71+
>,
72+
) => unknown
11673
}
11774

11875
/**

0 commit comments

Comments
 (0)