@@ -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
264270function 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 ) {
0 commit comments