Skip to content

Commit d99f8d2

Browse files
committed
refactor(models): simplify recursive tree schemas
https://zod.dev/v4#recursive-objects
1 parent 0b146e5 commit d99f8d2

1 file changed

Lines changed: 18 additions & 18 deletions

File tree

packages/models/src/lib/tree.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ const basicTreeNodeDataSchema = z.object({
1212
.describe('Additional values for node'),
1313
});
1414

15-
export const basicTreeNodeSchema: z.ZodType<BasicTreeNode> =
16-
basicTreeNodeDataSchema.extend({
17-
children: z
18-
.lazy(() => z.array(basicTreeNodeSchema).optional())
19-
.describe('Direct descendants of this node (omit if leaf)'),
20-
});
21-
export type BasicTreeNode = z.infer<typeof basicTreeNodeDataSchema> & {
22-
children?: BasicTreeNode[];
23-
};
15+
export const basicTreeNodeSchema = basicTreeNodeDataSchema.extend({
16+
get children() {
17+
return z
18+
.array(basicTreeNodeSchema)
19+
.optional()
20+
.describe('Direct descendants of this node (omit if leaf)');
21+
},
22+
});
23+
export type BasicTreeNode = z.infer<typeof basicTreeNodeSchema>;
2424

2525
export const coverageTreeMissingLOCSchema = filePositionSchema
2626
.extend({
@@ -48,15 +48,15 @@ const coverageTreeNodeDataSchema = z.object({
4848
),
4949
});
5050

51-
export const coverageTreeNodeSchema: z.ZodType<CoverageTreeNode> =
52-
coverageTreeNodeDataSchema.extend({
53-
children: z
54-
.lazy(() => z.array(coverageTreeNodeSchema).optional())
55-
.describe('Files and folders contained in this folder (omit if file)'),
56-
});
57-
export type CoverageTreeNode = z.infer<typeof coverageTreeNodeDataSchema> & {
58-
children?: CoverageTreeNode[];
59-
};
51+
export const coverageTreeNodeSchema = coverageTreeNodeDataSchema.extend({
52+
get children() {
53+
return z
54+
.array(coverageTreeNodeSchema)
55+
.optional()
56+
.describe('Files and folders contained in this folder (omit if file)');
57+
},
58+
});
59+
export type CoverageTreeNode = z.infer<typeof coverageTreeNodeSchema>;
6060

6161
export const basicTreeSchema = z
6262
.object({

0 commit comments

Comments
 (0)