Skip to content

Commit 4f53541

Browse files
committed
feat: 使用项目内的prettier配置对生成的文件进行格式化
1 parent 36c35e0 commit 4f53541

File tree

2 files changed

+63
-41
lines changed

2 files changed

+63
-41
lines changed

src/lib/generate-template.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,19 @@ export const generateTemplate = async (
3535
content = `import { BaseOpenapiClient } from 'foca-openapi';\n${content}`;
3636
}
3737

38-
content = `/* eslint-disable */\n/* @ts-nocheck */\n/* 自动生成的文件,请勿手动修改 */\n\n${content}`;
38+
content = `/* Autogenerated file. Do not edit manually */\n/* eslint-disable */\n/* @ts-nocheck */\n\n${content}`;
39+
40+
let configuration: prettier.Options | null;
41+
try {
42+
configuration = await prettier.resolveConfig(import.meta.filename);
43+
} catch {
44+
configuration = null;
45+
}
3946

4047
return {
4148
[projectName]: await prettier.format(content, {
49+
...configuration,
4250
parser: 'typescript',
43-
printWidth: 120,
44-
semi: true,
4551
}),
4652
};
4753
};

test/lib/generate-template.test.ts

Lines changed: 54 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@ test('完整的类型提示', async () => {
6262
await expect(generateTemplate(docs, { classMode: 'rest' })).resolves
6363
.toMatchInlineSnapshot(`
6464
{
65-
"": "/* eslint-disable */
65+
"": "/* Autogenerated file. Do not edit manually */
66+
/* eslint-disable */
6667
/* @ts-nocheck */
67-
/* 自动生成的文件,请勿手动修改 */
6868
69-
import { BaseOpenapiClient } from "foca-openapi";
69+
import { BaseOpenapiClient } from 'foca-openapi';
7070
7171
export namespace OpenapiClient {
7272
export type GetUsersQuery = { foo?: string; bar?: string };
@@ -78,28 +78,31 @@ test('完整的类型提示', async () => {
7878
export class OpenapiClient<T extends object = object> extends BaseOpenapiClient<T> {
7979
get<K extends keyof OpenapiClient_get_paths>(
8080
uri: K,
81-
...rest: K extends "/users/{id}"
82-
? [opts?: OpenapiClient_get_paths[K]["request"] & BaseOpenapiClient.UserInputOpts<T>]
83-
: [opts: OpenapiClient_get_paths[K]["request"] & BaseOpenapiClient.UserInputOpts<T>]
84-
): Promise<OpenapiClient_get_paths[K]["response"]> {
85-
return this.request(uri, "get", ...rest);
81+
...rest: K extends '/users/{id}'
82+
? [
83+
opts?: OpenapiClient_get_paths[K]['request'] &
84+
BaseOpenapiClient.UserInputOpts<T>,
85+
]
86+
: [opts: OpenapiClient_get_paths[K]['request'] & BaseOpenapiClient.UserInputOpts<T>]
87+
): Promise<OpenapiClient_get_paths[K]['response']> {
88+
return this.request(uri, 'get', ...rest);
8689
}
8790
8891
protected override pickContentTypes(uri: string, method: string) {
89-
return contentTypes[method + " " + uri] || [void 0, void 0];
92+
return contentTypes[method + ' ' + uri] || [void 0, void 0];
9093
}
9194
}
9295
9396
interface OpenapiClient_get_paths {
94-
"/users": BaseOpenapiClient.Prettify<{
97+
'/users': BaseOpenapiClient.Prettify<{
9598
request: {
9699
query?: OpenapiClient.GetUsersQuery;
97100
params: OpenapiClient.GetUsersParams;
98101
body: OpenapiClient.GetUsersBody;
99102
};
100103
response: OpenapiClient.GetUsersResponse;
101104
}>;
102-
"/users/{id}": BaseOpenapiClient.Prettify<{
105+
'/users/{id}': BaseOpenapiClient.Prettify<{
103106
request: {
104107
query?: object;
105108
};
@@ -109,7 +112,10 @@ test('完整的类型提示', async () => {
109112
110113
const contentTypes: Record<
111114
string,
112-
[BaseOpenapiClient.UserInputOpts["requestBodyType"], BaseOpenapiClient.UserInputOpts["responseType"]]
115+
[
116+
BaseOpenapiClient.UserInputOpts['requestBodyType'],
117+
BaseOpenapiClient.UserInputOpts['responseType'],
118+
]
113119
> = {};
114120
",
115121
}
@@ -118,11 +124,11 @@ test('完整的类型提示', async () => {
118124
await expect(generateTemplate(docs, { classMode: 'rpc-group' })).resolves
119125
.toMatchInlineSnapshot(`
120126
{
121-
"": "/* eslint-disable */
127+
"": "/* Autogenerated file. Do not edit manually */
128+
/* eslint-disable */
122129
/* @ts-nocheck */
123-
/* 自动生成的文件,请勿手动修改 */
124130
125-
import { BaseOpenapiClient } from "foca-openapi";
131+
import { BaseOpenapiClient } from 'foca-openapi';
126132
127133
export namespace OpenapiClient {
128134
export type GetUsersQuery = { foo?: string; bar?: string };
@@ -138,37 +144,39 @@ test('完整的类型提示', async () => {
138144
* @method GET
139145
*/
140146
getUsers: (
141-
opts: OpenapiClient_get_paths["/users"]["request"] & BaseOpenapiClient.UserInputOpts<T>,
142-
): Promise<OpenapiClient_get_paths["/users"]["response"]> => {
143-
return this.request("/users", "get", opts);
147+
opts: OpenapiClient_get_paths['/users']['request'] &
148+
BaseOpenapiClient.UserInputOpts<T>,
149+
): Promise<OpenapiClient_get_paths['/users']['response']> => {
150+
return this.request('/users', 'get', opts);
144151
},
145152
146153
/**
147154
* @uri /users/{id}
148155
* @method GET
149156
*/
150157
getUsersById: (
151-
opts?: OpenapiClient_get_paths["/users/{id}"]["request"] & BaseOpenapiClient.UserInputOpts<T>,
152-
): Promise<OpenapiClient_get_paths["/users/{id}"]["response"]> => {
153-
return this.request("/users/{id}", "get", opts);
158+
opts?: OpenapiClient_get_paths['/users/{id}']['request'] &
159+
BaseOpenapiClient.UserInputOpts<T>,
160+
): Promise<OpenapiClient_get_paths['/users/{id}']['response']> => {
161+
return this.request('/users/{id}', 'get', opts);
154162
},
155163
};
156164
157165
protected override pickContentTypes(uri: string, method: string) {
158-
return contentTypes[method + " " + uri] || [void 0, void 0];
166+
return contentTypes[method + ' ' + uri] || [void 0, void 0];
159167
}
160168
}
161169
162170
interface OpenapiClient_get_paths {
163-
"/users": BaseOpenapiClient.Prettify<{
171+
'/users': BaseOpenapiClient.Prettify<{
164172
request: {
165173
query?: OpenapiClient.GetUsersQuery;
166174
params: OpenapiClient.GetUsersParams;
167175
body: OpenapiClient.GetUsersBody;
168176
};
169177
response: OpenapiClient.GetUsersResponse;
170178
}>;
171-
"/users/{id}": BaseOpenapiClient.Prettify<{
179+
'/users/{id}': BaseOpenapiClient.Prettify<{
172180
request: {
173181
query?: object;
174182
};
@@ -178,7 +186,10 @@ test('完整的类型提示', async () => {
178186
179187
const contentTypes: Record<
180188
string,
181-
[BaseOpenapiClient.UserInputOpts["requestBodyType"], BaseOpenapiClient.UserInputOpts["responseType"]]
189+
[
190+
BaseOpenapiClient.UserInputOpts['requestBodyType'],
191+
BaseOpenapiClient.UserInputOpts['responseType'],
192+
]
182193
> = {};
183194
",
184195
}
@@ -187,11 +198,11 @@ test('完整的类型提示', async () => {
187198
await expect(generateTemplate(docs, { classMode: 'rpc' })).resolves
188199
.toMatchInlineSnapshot(`
189200
{
190-
"": "/* eslint-disable */
201+
"": "/* Autogenerated file. Do not edit manually */
202+
/* eslint-disable */
191203
/* @ts-nocheck */
192-
/* 自动生成的文件,请勿手动修改 */
193204
194-
import { BaseOpenapiClient } from "foca-openapi";
205+
import { BaseOpenapiClient } from 'foca-openapi';
195206
196207
export namespace OpenapiClient {
197208
export type GetUsersQuery = { foo?: string; bar?: string };
@@ -206,36 +217,38 @@ test('完整的类型提示', async () => {
206217
* @method GET
207218
*/
208219
getUsers(
209-
opts: OpenapiClient_get_paths["/users"]["request"] & BaseOpenapiClient.UserInputOpts<T>,
210-
): Promise<OpenapiClient_get_paths["/users"]["response"]> {
211-
return this.request("/users", "get", opts);
220+
opts: OpenapiClient_get_paths['/users']['request'] &
221+
BaseOpenapiClient.UserInputOpts<T>,
222+
): Promise<OpenapiClient_get_paths['/users']['response']> {
223+
return this.request('/users', 'get', opts);
212224
}
213225
214226
/**
215227
* @uri /users/{id}
216228
* @method GET
217229
*/
218230
getUsersById(
219-
opts?: OpenapiClient_get_paths["/users/{id}"]["request"] & BaseOpenapiClient.UserInputOpts<T>,
220-
): Promise<OpenapiClient_get_paths["/users/{id}"]["response"]> {
221-
return this.request("/users/{id}", "get", opts);
231+
opts?: OpenapiClient_get_paths['/users/{id}']['request'] &
232+
BaseOpenapiClient.UserInputOpts<T>,
233+
): Promise<OpenapiClient_get_paths['/users/{id}']['response']> {
234+
return this.request('/users/{id}', 'get', opts);
222235
}
223236
224237
protected override pickContentTypes(uri: string, method: string) {
225-
return contentTypes[method + " " + uri] || [void 0, void 0];
238+
return contentTypes[method + ' ' + uri] || [void 0, void 0];
226239
}
227240
}
228241
229242
interface OpenapiClient_get_paths {
230-
"/users": BaseOpenapiClient.Prettify<{
243+
'/users': BaseOpenapiClient.Prettify<{
231244
request: {
232245
query?: OpenapiClient.GetUsersQuery;
233246
params: OpenapiClient.GetUsersParams;
234247
body: OpenapiClient.GetUsersBody;
235248
};
236249
response: OpenapiClient.GetUsersResponse;
237250
}>;
238-
"/users/{id}": BaseOpenapiClient.Prettify<{
251+
'/users/{id}': BaseOpenapiClient.Prettify<{
239252
request: {
240253
query?: object;
241254
};
@@ -245,7 +258,10 @@ test('完整的类型提示', async () => {
245258
246259
const contentTypes: Record<
247260
string,
248-
[BaseOpenapiClient.UserInputOpts["requestBodyType"], BaseOpenapiClient.UserInputOpts["responseType"]]
261+
[
262+
BaseOpenapiClient.UserInputOpts['requestBodyType'],
263+
BaseOpenapiClient.UserInputOpts['responseType'],
264+
]
249265
> = {};
250266
",
251267
}

0 commit comments

Comments
 (0)