Skip to content

Commit 078ee9d

Browse files
authored
Merge pull request #2310 from hey-api/chore/sdk-params-progress
chore(sdk): initial implementation for custom params
2 parents 482bdb4 + eb1913c commit 078ee9d

File tree

339 files changed

+4221
-124
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

339 files changed

+4221
-124
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
"rollup": "4.31.0",
6464
"rollup-plugin-dts": "6.1.1",
6565
"tsup": "8.4.0",
66-
"turbo": "2.5.4",
66+
"turbo": "2.5.5",
6767
"typescript": "5.8.3",
6868
"typescript-eslint": "8.29.1",
6969
"vitest": "3.1.1"

packages/custom-client/src/core/types.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,17 @@ export interface Config {
102102
*/
103103
responseValidator?: (data: unknown) => Promise<unknown>;
104104
}
105+
106+
type IsExactlyNeverOrNeverUndefined<T> = [T] extends [never]
107+
? true
108+
: [T] extends [never | undefined]
109+
? [undefined] extends [T]
110+
? false
111+
: true
112+
: false;
113+
114+
export type OmitNever<T extends Record<string, unknown>> = {
115+
[K in keyof T as IsExactlyNeverOrNeverUndefined<T[K]> extends true
116+
? never
117+
: K]: T[K];
118+
};

packages/openapi-ts-tests/test/__snapshots__/2.0.x/body-response-text-plain/core/params.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,21 @@ type Slot = 'body' | 'headers' | 'path' | 'query';
33
export type Field =
44
| {
55
in: Exclude<Slot, 'body'>;
6+
/**
7+
* Field name. This is the name we want the user to see and use.
8+
*/
69
key: string;
10+
/**
11+
* Field mapped name. This is the name we want to use in the request.
12+
* If omitted, we use the same value as `key`.
13+
*/
714
map?: string;
815
}
916
| {
1017
in: Extract<Slot, 'body'>;
18+
/**
19+
* Key isn't required for bodies.
20+
*/
1121
key?: string;
1222
map?: string;
1323
};

packages/openapi-ts-tests/test/__snapshots__/2.0.x/body-response-text-plain/core/types.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,17 @@ export interface Config {
102102
*/
103103
responseValidator?: (data: unknown) => Promise<unknown>;
104104
}
105+
106+
type IsExactlyNeverOrNeverUndefined<T> = [T] extends [never]
107+
? true
108+
: [T] extends [never | undefined]
109+
? [undefined] extends [T]
110+
? false
111+
: true
112+
: false;
113+
114+
export type OmitNever<T extends Record<string, unknown>> = {
115+
[K in keyof T as IsExactlyNeverOrNeverUndefined<T[K]> extends true
116+
? never
117+
: K]: T[K];
118+
};

packages/openapi-ts-tests/test/__snapshots__/2.0.x/form-data/core/params.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,21 @@ type Slot = 'body' | 'headers' | 'path' | 'query';
33
export type Field =
44
| {
55
in: Exclude<Slot, 'body'>;
6+
/**
7+
* Field name. This is the name we want the user to see and use.
8+
*/
69
key: string;
10+
/**
11+
* Field mapped name. This is the name we want to use in the request.
12+
* If omitted, we use the same value as `key`.
13+
*/
714
map?: string;
815
}
916
| {
1017
in: Extract<Slot, 'body'>;
18+
/**
19+
* Key isn't required for bodies.
20+
*/
1121
key?: string;
1222
map?: string;
1323
};

packages/openapi-ts-tests/test/__snapshots__/2.0.x/form-data/core/types.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,17 @@ export interface Config {
102102
*/
103103
responseValidator?: (data: unknown) => Promise<unknown>;
104104
}
105+
106+
type IsExactlyNeverOrNeverUndefined<T> = [T] extends [never]
107+
? true
108+
: [T] extends [never | undefined]
109+
? [undefined] extends [T]
110+
? false
111+
: true
112+
: false;
113+
114+
export type OmitNever<T extends Record<string, unknown>> = {
115+
[K in keyof T as IsExactlyNeverOrNeverUndefined<T[K]> extends true
116+
? never
117+
: K]: T[K];
118+
};

packages/openapi-ts-tests/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/core/params.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,21 @@ type Slot = 'body' | 'headers' | 'path' | 'query';
33
export type Field =
44
| {
55
in: Exclude<Slot, 'body'>;
6+
/**
7+
* Field name. This is the name we want the user to see and use.
8+
*/
69
key: string;
10+
/**
11+
* Field mapped name. This is the name we want to use in the request.
12+
* If omitted, we use the same value as `key`.
13+
*/
714
map?: string;
815
}
916
| {
1017
in: Extract<Slot, 'body'>;
18+
/**
19+
* Key isn't required for bodies.
20+
*/
1121
key?: string;
1222
map?: string;
1323
};

packages/openapi-ts-tests/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/default/core/types.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,17 @@ export interface Config {
102102
*/
103103
responseValidator?: (data: unknown) => Promise<unknown>;
104104
}
105+
106+
type IsExactlyNeverOrNeverUndefined<T> = [T] extends [never]
107+
? true
108+
: [T] extends [never | undefined]
109+
? [undefined] extends [T]
110+
? false
111+
: true
112+
: false;
113+
114+
export type OmitNever<T extends Record<string, unknown>> = {
115+
[K in keyof T as IsExactlyNeverOrNeverUndefined<T[K]> extends true
116+
? never
117+
: K]: T[K];
118+
};

packages/openapi-ts-tests/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/core/params.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,21 @@ type Slot = 'body' | 'headers' | 'path' | 'query';
33
export type Field =
44
| {
55
in: Exclude<Slot, 'body'>;
6+
/**
7+
* Field name. This is the name we want the user to see and use.
8+
*/
69
key: string;
10+
/**
11+
* Field mapped name. This is the name we want to use in the request.
12+
* If omitted, we use the same value as `key`.
13+
*/
714
map?: string;
815
}
916
| {
1017
in: Extract<Slot, 'body'>;
18+
/**
19+
* Key isn't required for bodies.
20+
*/
1121
key?: string;
1222
map?: string;
1323
};

packages/openapi-ts-tests/test/__snapshots__/2.0.x/plugins/@hey-api/sdk/instance/core/types.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,17 @@ export interface Config {
102102
*/
103103
responseValidator?: (data: unknown) => Promise<unknown>;
104104
}
105+
106+
type IsExactlyNeverOrNeverUndefined<T> = [T] extends [never]
107+
? true
108+
: [T] extends [never | undefined]
109+
? [undefined] extends [T]
110+
? false
111+
: true
112+
: false;
113+
114+
export type OmitNever<T extends Record<string, unknown>> = {
115+
[K in keyof T as IsExactlyNeverOrNeverUndefined<T[K]> extends true
116+
? never
117+
: K]: T[K];
118+
};

0 commit comments

Comments
 (0)