Skip to content

Commit 599c844

Browse files
committed
chore: improve baseUrl types
1 parent cfda6a3 commit 599c844

24 files changed

Lines changed: 177 additions & 269 deletions

File tree

dev/inputs.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export const inputs = {
1212
'https://raw.githubusercontent.com/swagger-api/swagger-petstore/master/src/main/resources/openapi.yaml',
1313
redfish:
1414
'https://raw.githubusercontent.com/DMTF/Redfish-Publications/refs/heads/main/openapi/openapi.yaml',
15+
rpc: path.resolve(specsPath, '3.1.x', 'rpc.yaml'),
1516
scalar: 'scalar:@scalar/access-service',
1617
transformers: path.resolve(specsPath, '3.1.x', 'transformers.json'),
1718
validators: path.resolve(specsPath, '3.1.x', 'validators.yaml'),

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/default/msw.gen.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import { http, type HttpHandler, HttpResponse, type HttpResponseResolver, type RequestHandlerOptions as RequestHandlerOptions2 } from 'msw';
44

5-
import type { ApiVVersionODataControllerCountResponses, CallWithDuplicateResponsesResponses, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseResponses, CallWithResponsesResponses, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ComplexParamsData, ComplexParamsResponses, ComplexTypesResponses, DummyAResponses, DummyBResponses, FileResponseResponses, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, ImportData, ImportResponses, MultipartRequestData, MultipartResponseResponses, NonAsciiæøåÆøÅöôêÊ字符串Responses, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponses, PutWithFormUrlEncodedData, TestErrorCodeResponses, TypesResponses, UploadFileData, UploadFileResponses } from './types.gen';
5+
import type { ApiVVersionODataControllerCountResponses, CallWithDuplicateResponsesResponses, CallWithNoContentResponseResponses, CallWithParametersData, CallWithResponseAndNoContentResponseResponses, CallWithResponsesResponses, CallWithResultFromHeaderResponses, CallWithWeirdParameterNamesData, ClientOptions, ComplexParamsData, ComplexParamsResponses, ComplexTypesResponses, DummyAResponses, DummyBResponses, FileResponseResponses, GetApiVbyApiVersionSimpleOperationResponses, GetCallWithOptionalParamData, ImportData, ImportResponses, MultipartRequestData, MultipartResponseResponses, NonAsciiæøåÆøÅöôêÊ字符串Responses, PostApiVbyApiVersionFormDataData, PostApiVbyApiVersionRequestBodyData, PostCallWithOptionalParamData, PostCallWithOptionalParamResponses, PutWithFormUrlEncodedData, TestErrorCodeResponses, TypesResponses, UploadFileData, UploadFileResponses } from './types.gen';
66

77
export type RequestHandlerOptions = RequestHandlerOptions2 & {
8-
baseUrl?: string;
8+
baseUrl?: ClientOptions['baseUrl'];
99
responseFallback?: 'error' | 'passthrough';
1010
};
1111

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/response-example-disabled/index.ts renamed to packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/mockers-disabled/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
// This file is auto-generated by @hey-api/openapi-ts
22

3-
export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses, Person, PostFooData, PostFooResponse, PostFooResponses } from './types.gen';
3+
export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses, Person, PostFooData, PostFooResponse, PostFooResponses, PutFooData, PutFooResponse, PutFooResponses } from './types.gen';

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/response-example-disabled/msw.gen.ts renamed to packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/mockers-disabled/msw.gen.ts

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import { http, type HttpHandler, HttpResponse, type HttpResponseResolver, type RequestHandlerOptions as RequestHandlerOptions2 } from 'msw';
44

5-
import type { GetFooResponses, PostFooData, PostFooResponses } from './types.gen';
5+
import type { ClientOptions, GetFooResponses, PostFooData, PostFooResponses, PutFooResponses } from './types.gen';
66

77
export type RequestHandlerOptions = RequestHandlerOptions2 & {
8-
baseUrl?: string;
8+
baseUrl?: ClientOptions['baseUrl'];
99
responseFallback?: 'error' | 'passthrough';
1010
};
1111

@@ -66,6 +66,31 @@ export function handlePostFoo(response?: {
6666
}, options);
6767
}
6868

69+
/**
70+
* Handler for the `PUT /foo` operation.
71+
*/
72+
export function handlePutFoo(response?: {
73+
body: PutFooResponses[200];
74+
status?: 200;
75+
} | HttpResponseResolver<never, never>, options?: RequestHandlerOptions): HttpHandler {
76+
return http.put<never, never>(`${options?.baseUrl ?? '*'}/foo`, info => {
77+
if (typeof response === 'function') {
78+
return response(info);
79+
}
80+
const body = response?.body;
81+
if (body !== undefined) {
82+
return HttpResponse.json(body, { status: response?.status ?? 200 });
83+
}
84+
if (options?.responseFallback === 'passthrough') {
85+
return;
86+
}
87+
return new Response('Not Implemented', {
88+
status: 501,
89+
statusText: 'Not Implemented'
90+
});
91+
}, options);
92+
}
93+
6994
export type MswHandlerFactories = {
7095
/**
7196
* Handler for the `GET /foo` operation.
@@ -75,6 +100,10 @@ export type MswHandlerFactories = {
75100
* Handler for the `POST /foo` operation.
76101
*/
77102
postFoo: typeof handlePostFoo;
103+
/**
104+
* Handler for the `PUT /foo` operation.
105+
*/
106+
putFoo: typeof handlePutFoo;
78107
};
79108

80109
export type CreateMswHandlersResult = {
@@ -93,7 +122,8 @@ export function createMswHandlers(config: RequestHandlerOptions = {}): CreateMsw
93122
}
94123
const pick: CreateMswHandlersResult['pick'] = {
95124
getFoo: wrap(handleGetFoo),
96-
postFoo: wrap(handlePostFoo)
125+
postFoo: wrap(handlePostFoo),
126+
putFoo: wrap(handlePutFoo)
97127
};
98128
const all: CreateMswHandlersResult['all'] = (options = {}) => {
99129
type OverrideValue<R> = R | [
@@ -104,7 +134,11 @@ export function createMswHandlers(config: RequestHandlerOptions = {}): CreateMsw
104134
return Array.isArray(override) ? fn(...override) : fn(override);
105135
}
106136
const overrides = options.pick ?? {};
107-
return [invoke(pick.getFoo, overrides.getFoo), invoke(pick.postFoo, overrides.postFoo)];
137+
return [
138+
invoke(pick.getFoo, overrides.getFoo),
139+
invoke(pick.postFoo, overrides.postFoo),
140+
invoke(pick.putFoo, overrides.putFoo)
141+
];
108142
};
109143
return { all, pick };
110144
}

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/response-example/types.gen.ts renamed to packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/mockers-disabled/types.gen.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,21 @@ export type PostFooResponses = {
4848
};
4949

5050
export type PostFooResponse = PostFooResponses[keyof PostFooResponses];
51+
52+
export type PutFooData = {
53+
body?: never;
54+
path?: never;
55+
query?: never;
56+
url: '/foo';
57+
};
58+
59+
export type PutFooResponses = {
60+
/**
61+
* OK
62+
*/
63+
200: {
64+
name?: string;
65+
};
66+
};
67+
68+
export type PutFooResponse = PutFooResponses[keyof PutFooResponses];

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/response-example/index.ts renamed to packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/mockers/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
// This file is auto-generated by @hey-api/openapi-ts
22

3-
export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses, Person, PostFooData, PostFooResponse, PostFooResponses } from './types.gen';
3+
export type { ClientOptions, GetFooData, GetFooResponse, GetFooResponses, Person, PostFooData, PostFooResponse, PostFooResponses, PutFooData, PutFooResponse, PutFooResponses } from './types.gen';

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/response-example/msw.gen.ts renamed to packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/mockers/msw.gen.ts

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import { http, type HttpHandler, HttpResponse, type HttpResponseResolver, type RequestHandlerOptions as RequestHandlerOptions2 } from 'msw';
44

5-
import type { GetFooResponses, PostFooData, PostFooResponses } from './types.gen';
5+
import type { ClientOptions, GetFooResponses, PostFooData, PostFooResponses, PutFooResponses } from './types.gen';
66

77
export type RequestHandlerOptions = RequestHandlerOptions2 & {
8-
baseUrl?: string;
8+
baseUrl?: ClientOptions['baseUrl'];
99
responseFallback?: 'error' | 'passthrough';
1010
};
1111

@@ -56,6 +56,24 @@ export function handlePostFoo(response?: {
5656
}, options);
5757
}
5858

59+
/**
60+
* Handler for the `PUT /foo` operation.
61+
*/
62+
export function handlePutFoo(response?: {
63+
body: PutFooResponses[200];
64+
status?: 200;
65+
} | HttpResponseResolver<never, never>, options?: RequestHandlerOptions): HttpHandler {
66+
return http.put<never, never>(`${options?.baseUrl ?? '*'}/foo`, info => {
67+
if (typeof response === 'function') {
68+
return response(info);
69+
}
70+
const body = response?.body ?? { name: 'Alice' };
71+
if (body !== undefined) {
72+
return HttpResponse.json(body, { status: response?.status ?? 200 });
73+
}
74+
}, options);
75+
}
76+
5977
export type MswHandlerFactories = {
6078
/**
6179
* Handler for the `GET /foo` operation.
@@ -65,6 +83,10 @@ export type MswHandlerFactories = {
6583
* Handler for the `POST /foo` operation.
6684
*/
6785
postFoo: typeof handlePostFoo;
86+
/**
87+
* Handler for the `PUT /foo` operation.
88+
*/
89+
putFoo: typeof handlePutFoo;
6890
};
6991

7092
export type CreateMswHandlersResult = {
@@ -83,7 +105,8 @@ export function createMswHandlers(config: RequestHandlerOptions = {}): CreateMsw
83105
}
84106
const pick: CreateMswHandlersResult['pick'] = {
85107
getFoo: wrap(handleGetFoo),
86-
postFoo: wrap(handlePostFoo)
108+
postFoo: wrap(handlePostFoo),
109+
putFoo: wrap(handlePutFoo)
87110
};
88111
const all: CreateMswHandlersResult['all'] = (options = {}) => {
89112
type OverrideValue<R> = R | [
@@ -94,7 +117,11 @@ export function createMswHandlers(config: RequestHandlerOptions = {}): CreateMsw
94117
return Array.isArray(override) ? fn(...override) : fn(override);
95118
}
96119
const overrides = options.pick ?? {};
97-
return [invoke(pick.getFoo, overrides.getFoo), invoke(pick.postFoo, overrides.postFoo)];
120+
return [
121+
invoke(pick.getFoo, overrides.getFoo),
122+
invoke(pick.postFoo, overrides.postFoo),
123+
invoke(pick.putFoo, overrides.putFoo)
124+
];
98125
};
99126
return { all, pick };
100127
}

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/response-example-disabled/types.gen.ts renamed to packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/mockers/types.gen.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,21 @@ export type PostFooResponses = {
4848
};
4949

5050
export type PostFooResponse = PostFooResponses[keyof PostFooResponses];
51+
52+
export type PutFooData = {
53+
body?: never;
54+
path?: never;
55+
query?: never;
56+
url: '/foo';
57+
};
58+
59+
export type PutFooResponses = {
60+
/**
61+
* OK
62+
*/
63+
200: {
64+
name?: string;
65+
};
66+
};
67+
68+
export type PutFooResponse = PutFooResponses[keyof PutFooResponses];

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/response-types/index.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/openapi-ts-tests/msw/v2/__snapshots__/3.1.x/response-types/msw.gen.ts

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)