Skip to content

Commit c3c6c72

Browse files
committed
fix: wordwrap for jsdoc
1 parent feebf12 commit c3c6c72

3 files changed

Lines changed: 41 additions & 11 deletions

File tree

__tests__/fixtures/petstore/methods.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* WARN: Do not edit directly.
55
*
6-
* Generated on 2022-10-29T10:44:17.417Z
6+
* Generated on 2022-10-29T11:20:35.437Z
77
*
88
*/
99
import type {
@@ -17,9 +17,28 @@ import type { Simplify } from 'type-fest';
1717

1818
/**
1919
* Returns all pets from the system that the user has access to
20-
* Nam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia.
20+
* Nam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem
21+
* sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio
22+
* lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis,
23+
* pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea
24+
* dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra
25+
* tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit
26+
* non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat
27+
* venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim
28+
* enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor,
29+
* consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis
30+
* libero sed lacinia.
2131
*
22-
* Sed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien.
32+
* Sed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu
33+
* condimentum ligula luctus nec. Phasellus semper velit eget aliquet
34+
* faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem
35+
* id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio.
36+
* Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et
37+
* sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel
38+
* tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis
39+
* gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi.
40+
* Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem.
41+
* Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien.
2342
* @param parameters.query.tags? {String} tags to filter by
2443
* @param parameters.query.limit? {String} maximum number of results to return
2544
* @returns {RequestMethodCaller<Pet[]>} HTTP 200
@@ -38,7 +57,6 @@ export function findPets(parameters?: {
3857

3958
/**
4059
* Creates a new pet in the store. Duplicates are allowed
41-
*
4260
* @param parameters.body {NewPet}
4361
* @returns {RequestMethodCaller<Pet>} HTTP 200
4462
* @returns {RequestMethodCaller<Error>} HTTP default
@@ -55,7 +73,8 @@ export function addPet(parameters: {
5573
}
5674

5775
/**
58-
* Returns a user based on a single ID, if the user does not have access to the pet
76+
* Returns a user based on a single ID, if the user does not have access to
77+
* the pet
5978
* @param id {String} ID of pet to fetch
6079
* @returns {RequestMethodCaller<Pet>} HTTP 200
6180
* @returns {RequestMethodCaller<Error>} HTTP default

lib/process-document.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,18 @@ import {
1010
VariableDeclarationKind,
1111
Writers,
1212
} from 'ts-morph';
13+
import wrap from 'word-wrap';
1314
import { registerTypesFromSchema, schemaToType } from './process-schema.js';
1415
import {
1516
maybeJsDocDescription,
1617
schemaIsOrHasReferenceObject,
1718
} from './utils.js';
1819

20+
function wordWrap(text: string) {
21+
// max width is 75 as it will be indented already inside a multi-line comment
22+
return wrap(text, { width: 75, indent: '' });
23+
}
24+
1925
export async function processOpenApiDocument(
2026
entryFile: SourceFile,
2127
typesFile: SourceFile,
@@ -174,9 +180,11 @@ export async function processOpenApiDocument(
174180
});
175181

176182
const jsdoc = func.addJsDoc({
177-
description: `${
178-
operationObject.description || operationObject.operationId
179-
}\n\n`,
183+
description: wordWrap(
184+
`\n${
185+
operationObject.description || operationObject.operationId
186+
}\n\n`,
187+
),
180188
});
181189

182190
if (operationObject.deprecated) {
@@ -217,9 +225,11 @@ export async function processOpenApiDocument(
217225

218226
jsdoc.addTag({
219227
tagName: 'param',
220-
text: `${parameterName} {String} ${
221-
parameter.description || ''
222-
}`.trim(),
228+
text: wordWrap(
229+
`${parameterName} {String} ${
230+
resolvedParameter.description || ''
231+
}`,
232+
).trim(),
223233
});
224234
}
225235

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"json-schema-ref-parser": "^9.0.9",
2929
"ts-morph": "^16.0.0",
3030
"type-fest": "^3.1.0",
31+
"word-wrap": "^1.2.3",
3132
"yargs": "^17.6.0"
3233
},
3334
"devDependencies": {

0 commit comments

Comments
 (0)