Skip to content

Commit e2be55c

Browse files
committed
Bug fixes
1 parent 902a4a0 commit e2be55c

File tree

2 files changed

+60
-37
lines changed

2 files changed

+60
-37
lines changed

packages/docs-md/src/generator/mdx/chunks/schema.ts

Lines changed: 59 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,13 @@ function getDisplayType(
106106
}
107107
case "enum": {
108108
return {
109-
typeLabel: { label: "enum", children: [] },
109+
typeLabel: {
110+
label: "enum",
111+
children: value.values.map((v) => ({
112+
label: `${typeof v === "string" ? `"${v}"` : v}`,
113+
children: [],
114+
})),
115+
},
110116
breakoutSubTypes: [],
111117
};
112118
}
@@ -263,23 +269,24 @@ function computeMultilineTypeLabel(
263269

264270
function renderSchemaFrontmatter({
265271
renderer,
266-
site,
267272
schema,
268273
baseHeadingLevel,
269-
data,
270-
depth,
271274
propertyName,
272-
}: RenderSchemaOptions & { propertyName: string }) {
273-
const displayType = getDisplayType(schema, data);
275+
displayType,
276+
}: {
277+
renderer: Renderer;
278+
schema: SchemaValue;
279+
baseHeadingLevel: number;
280+
propertyName: string;
281+
displayType: DisplayType;
282+
}) {
274283
const computedDisplayType = computeDisplayType(
275284
displayType.typeLabel,
276285
propertyName
277286
);
278287
if (computedDisplayType.multiline) {
279288
renderer.appendHeading(baseHeadingLevel, propertyName);
280-
renderer.appendParagraph(
281-
`\n\`\`\`\n${computedDisplayType.content}\n\`\`\``
282-
);
289+
renderer.appendParagraph(`\`\`\`\n${computedDisplayType.content}\n\`\`\``);
283290
} else {
284291
renderer.appendHeading(
285292
baseHeadingLevel,
@@ -303,7 +310,23 @@ function renderSchemaFrontmatter({
303310
if ("defaultValue" in schema && schema.defaultValue) {
304311
renderer.appendParagraph(`_Default Value:_ \`${schema.defaultValue}\``);
305312
}
313+
}
306314

315+
function renderSchemaBreakouts({
316+
renderer,
317+
site,
318+
baseHeadingLevel,
319+
data,
320+
depth,
321+
displayType,
322+
}: {
323+
renderer: Renderer;
324+
site: Site;
325+
baseHeadingLevel: number;
326+
data: Map<string, Chunk>;
327+
depth: number;
328+
displayType: DisplayType;
329+
}) {
307330
// TODO: this is a quick-n-dirty deduping of breakout types, but if there are
308331
// two different schemas with the same name they'll be deduped, which is wrong.
309332
for (let i = 0; i < displayType.breakoutSubTypes.length; i++) {
@@ -339,8 +362,7 @@ export function renderSchema({
339362
}: RenderSchemaOptions & {
340363
topLevelName: string;
341364
}) {
342-
const { maxTypeSignatureLineLength, maxSchemaNesting } =
343-
getSettings().display;
365+
const { maxSchemaNesting } = getSettings().display;
344366

345367
function renderObjectProperties(
346368
objectValue: ObjectValue,
@@ -352,31 +374,40 @@ export function renderSchema({
352374
for (const [key, value] of Object.entries(objectValue.properties)) {
353375
if (value.type === "chunk") {
354376
const schemaChunk = getSchemaFromId(value.chunkId, data);
377+
const schema = schemaChunk.chunkData.value;
378+
const displayType = getDisplayType(schema, data);
355379
renderSchemaFrontmatter({
380+
renderer,
381+
schema,
382+
baseHeadingLevel,
383+
propertyName: key,
384+
displayType,
385+
});
386+
renderSchemaBreakouts({
356387
renderer,
357388
site,
358-
schema: schemaChunk.chunkData.value,
359389
baseHeadingLevel,
360390
data,
361391
depth,
362-
propertyName: key,
392+
displayType,
363393
});
364394
} else if (value.type === "enum") {
365-
renderer.appendHeading(baseHeadingLevel, key);
366-
let computedTypeLabel = `_Type Signature:_ \`${value.values.map((v) => (typeof v === "string" ? `'${v}'` : v)).join(" | ")}\``;
367-
if (computedTypeLabel.length > maxTypeSignatureLineLength) {
368-
computedTypeLabel = `_Type Signature:_\n\`\`\`\nenum${value.values.map((v) => `\n ${typeof v === "string" ? `'${v}'` : v}`).join("")}\n\`\`\``;
369-
}
370-
renderer.appendParagraph(computedTypeLabel);
395+
const displayType = getDisplayType(value, data);
396+
renderSchemaFrontmatter({
397+
renderer,
398+
schema: value,
399+
baseHeadingLevel,
400+
propertyName: key,
401+
displayType,
402+
});
371403
} else {
404+
const displayType = getDisplayType(value, data);
372405
renderSchemaFrontmatter({
373406
renderer,
374-
site,
375407
schema: value,
376408
baseHeadingLevel,
377-
data,
378-
depth,
379409
propertyName: key,
410+
displayType,
380411
});
381412
}
382413
}
@@ -386,45 +417,37 @@ export function renderSchema({
386417
function renderArrayLikeItems(
387418
arrayLikeValue: ArrayValue | MapValue | SetValue
388419
) {
420+
const displayType = getDisplayType(arrayLikeValue, data);
389421
renderSchemaFrontmatter({
390422
renderer,
391-
site,
392423
schema: arrayLikeValue,
393424
baseHeadingLevel,
394-
data,
395-
depth,
396425
propertyName: topLevelName,
426+
displayType,
397427
});
398428
}
399429

400430
function renderUnionItems(unionValue: UnionValue) {
431+
const displayType = getDisplayType(unionValue, data);
401432
renderSchemaFrontmatter({
402433
renderer,
403-
site,
404434
schema: unionValue,
405435
baseHeadingLevel,
406-
data,
407-
depth,
408436
propertyName: topLevelName,
437+
displayType,
409438
});
410439
return;
411440
}
412441

413442
function renderBasicItems(primitiveValue: SchemaValue) {
443+
const displayType = getDisplayType(primitiveValue, data);
414444
renderSchemaFrontmatter({
415445
renderer,
416-
site,
417446
schema: primitiveValue,
418447
baseHeadingLevel,
419-
data,
420-
depth,
421448
propertyName: topLevelName,
449+
displayType,
422450
});
423-
if (primitiveValue.type === "enum") {
424-
renderer.appendParagraph(
425-
`Values: ${primitiveValue.values.map((v) => `\`${v}\``).join(", ")}`
426-
);
427-
}
428451
}
429452

430453
if (depth >= maxSchemaNesting) {

packages/docs-md/src/generator/mdx/generateContent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function getPageMap(data: Data) {
7676
// Sort by slug so that the sidebar position is stable
7777
tagChunks.sort((a, b) => a.slug.localeCompare(b.slug));
7878

79-
// Render the tag pagse
79+
// Render the tag pages
8080
let tagIndex = 0;
8181
for (const chunk of tagChunks) {
8282
const pagePath = buildPagePath(chunk.slug);

0 commit comments

Comments
 (0)