Skip to content

Commit a94ee51

Browse files
committed
feat(code-gen/experimental): generate type docs strings as JSDoc blocks
This improves usage of tags like `@deprecated` on fields on `@link` tags to link to routes and other types.
1 parent 53f03cd commit a94ee51

File tree

13 files changed

+492
-187
lines changed

13 files changed

+492
-187
lines changed

packages/code-gen/src/experimental/api-client/react-query.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
fileContextRemoveLinePrefix,
88
fileContextSetIndent,
99
} from "../file/context.js";
10-
import { fileFormatInlineComment } from "../file/format.js";
10+
import { fileFormatInlineComment } from "../file/docs.js";
1111
import { fileWrite, fileWriteInline } from "../file/write.js";
1212
import { referenceUtilsGetProperty } from "../processors/reference-utils.js";
1313
import { structureResolveReference } from "../processors/structure.js";
@@ -497,6 +497,7 @@ export function reactQueryGenerateFunction(
497497
${parameterListWithExtraction({
498498
prefix: "opts",
499499
withRequestConfig: true,
500+
defaultToNull: false,
500501
})}
501502
);
502503
}, options);`,
@@ -550,6 +551,7 @@ ${hookName}.queryKey = (
550551
${parameterListWithExtraction({
551552
prefix: "opts",
552553
withRequestConfig: true,
554+
defaultToNull: false,
553555
})}
554556
));
555557
}
@@ -572,6 +574,7 @@ ${hookName}.queryKey = (
572574
${parameterListWithExtraction({
573575
prefix: "opts",
574576
withRequestConfig: true,
577+
defaultToNull: false,
575578
})}
576579
));
577580
}
@@ -675,6 +678,7 @@ ${hookName}.setQueryData = (
675678
${parameterListWithExtraction({
676679
prefix: "variables",
677680
withRequestConfig: true,
681+
defaultToNull: false,
678682
})}
679683
), options);
680684
`,

packages/code-gen/src/experimental/crud/handlers.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
fileContextRemoveLinePrefix,
88
fileContextSetIndent,
99
} from "../file/context.js";
10-
import { fileFormatInlineComment } from "../file/format.js";
10+
import { fileFormatInlineComment } from "../file/docs.js";
1111
import { fileWrite } from "../file/write.js";
1212
import {
1313
crudInformationGetHasCustomReadableType,

packages/code-gen/src/experimental/database/js-postgres.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
fileContextRemoveLinePrefix,
88
fileContextSetIndent,
99
} from "../file/context.js";
10-
import { fileFormatInlineComment } from "../file/format.js";
10+
import { fileFormatInlineComment } from "../file/docs.js";
1111
import { fileWrite, fileWriteInline } from "../file/write.js";
1212
import { modelKeyGetPrimary } from "../processors/model-keys.js";
1313
import {

packages/code-gen/src/experimental/database/postgres.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
fileContextCreateGeneric,
55
fileContextSetIndent,
66
} from "../file/context.js";
7-
import { fileFormatInlineComment } from "../file/format.js";
7+
import { fileFormatInlineComment } from "../file/docs.js";
88
import { fileWrite, fileWriteInline } from "../file/write.js";
99
import {
1010
modelKeyGetPrimary,

packages/code-gen/src/experimental/file/context.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { AppError } from "@compas/stdlib";
2-
import { fileFormatInlineComment } from "./format.js";
2+
import { fileFormatInlineComment } from "./docs.js";
33
import {
44
fileImportsAddPlaceholder,
55
fileImportsStringifyImports,
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* Format the provided contents as an inline comment for the specific file.
3+
*
4+
* @param {import("./context").GenerateFile} file
5+
* @param {string} contents
6+
* @returns {string}
7+
*/
8+
export function fileFormatInlineComment(
9+
file: import("./context").GenerateFile,
10+
contents: string,
11+
): string;
12+
/**
13+
* Format the provided contents as a doc block comment. Compatible with things like JSDoc
14+
* blocks.
15+
*
16+
* @param {import("./context").GenerateFile} file
17+
* @param {string} contents
18+
* @returns {void}
19+
*/
20+
export function fileWriteDocBlock(
21+
file: import("./context").GenerateFile,
22+
contents: string,
23+
): void;
24+
//# sourceMappingURL=docs.d.ts.map
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import {
2+
fileContextAddLinePrefix,
3+
fileContextRemoveLinePrefix,
4+
} from "./context.js";
5+
import { fileWrite } from "./write.js";
6+
7+
/**
8+
* Format the provided contents as an inline comment for the specific file.
9+
*
10+
* @param {import("./context").GenerateFile} file
11+
* @param {string} contents
12+
* @returns {string}
13+
*/
14+
export function fileFormatInlineComment(file, contents) {
15+
return `${file.inlineCommentPrefix}${contents.replace(
16+
/\n/g,
17+
`\n${file.inlineCommentPrefix}`,
18+
)}`;
19+
}
20+
21+
/**
22+
* Format the provided contents as a doc block comment. Compatible with things like JSDoc
23+
* blocks.
24+
*
25+
* @param {import("./context").GenerateFile} file
26+
* @param {string} contents
27+
* @returns {void}
28+
*/
29+
export function fileWriteDocBlock(file, contents) {
30+
fileWrite(file, `/**`);
31+
fileContextAddLinePrefix(file, " * ");
32+
fileWrite(file, contents);
33+
34+
fileContextRemoveLinePrefix(file, 3);
35+
fileWrite(file, " */");
36+
}

packages/code-gen/src/experimental/file/format.d.ts

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

packages/code-gen/src/experimental/file/format.js

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

0 commit comments

Comments
 (0)