From 41aad0f3681b4c6c6f01f8dd91104b8b83f61d10 Mon Sep 17 00:00:00 2001 From: Sean Sullivan Date: Wed, 20 Aug 2025 14:43:34 -0400 Subject: [PATCH] Update json-transformer.ts to output type information The type information is included in storybook --- src/transformers/json/json-transformer.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/transformers/json/json-transformer.ts b/src/transformers/json/json-transformer.ts index 9d997835..2778a8f5 100644 --- a/src/transformers/json/json-transformer.ts +++ b/src/transformers/json/json-transformer.ts @@ -1,3 +1,4 @@ +import { isAssignableToSimpleTypeKind, isSimpleType, SimpleType, toSimpleType, typeToString } from "ts-simple-type"; import { relative } from "path"; import { Program, TypeChecker } from "typescript"; import { AnalyzerResult } from "../../analyze/types/analyzer-result"; @@ -118,8 +119,14 @@ function componentSlotToHtmlDataSlot(slot: ComponentSlot, checker: TypeChecker): } function componentEventToHtmlDataEvent(event: ComponentEvent, checker: TypeChecker): HtmlDataEvent | undefined { + let typeText = undefined; + if(event.type){ + let type = event.type() + typeText = typeof type === "string" ? type : type == null ? undefined : formatType(type, checker); + } return { name: event.name, + type: typeText, description: getDescriptionFromJsDoc(event.jsDoc), deprecated: event.deprecated === true || undefined, deprecatedMessage: typeof event.deprecated === "string" ? event.deprecated : undefined @@ -160,3 +167,12 @@ function componentMemberToHtmlDataProperty(member: ComponentMember, checker: Typ function getDescriptionFromJsDoc(jsDoc: JsDoc | undefined): string | undefined { return jsDoc?.description; } + +/** + * Formats a type to present in documentation + * @param type + * @param checker + */ +function formatType(type: Type | SimpleType, checker: TypeChecker): string | undefined { + return !isAssignableToSimpleTypeKind(type, "ANY", checker) ? typeToString(type, checker) : undefined; +}