(
schema: JSONSchema7,
parentClassName: string,
propName: string,
knownTypes: Map<string, string>,
nestedClasses: Map<string, string>,
enumOutput: string[]
)
| 1065 | } |
| 1066 | |
| 1067 | function tryGenerateSessionJsonUnionType( |
| 1068 | schema: JSONSchema7, |
| 1069 | parentClassName: string, |
| 1070 | propName: string, |
| 1071 | knownTypes: Map<string, string>, |
| 1072 | nestedClasses: Map<string, string>, |
| 1073 | enumOutput: string[] |
| 1074 | ): string | undefined { |
| 1075 | const members = getNonNullUnionMembers(schema); |
| 1076 | if (members.length <= 1) return undefined; |
| 1077 | |
| 1078 | const className = (schema.title as string) ?? `${parentClassName}${propName}`; |
| 1079 | if (nestedClasses.has(className)) return className; |
| 1080 | |
| 1081 | const usedNames = new Set<string>(); |
| 1082 | const variants: JsonUnionVariant[] = []; |
| 1083 | for (const member of members) { |
| 1084 | const memberSchema = getVariantSchema(member, sessionDefinitions); |
| 1085 | const typeName = member.$ref |
| 1086 | ? typeToClassName(refTypeName(member.$ref, sessionDefinitions)) |
| 1087 | : ((memberSchema?.title as string | undefined) ?? `${className}Variant${variants.length + 1}`); |
| 1088 | if (!memberSchema || !isObjectSchema(memberSchema)) return undefined; |
| 1089 | |
| 1090 | if (!nestedClasses.has(typeName)) { |
| 1091 | nestedClasses.set(typeName, generateNestedClass(typeName, memberSchema, knownTypes, nestedClasses, enumOutput)); |
| 1092 | } |
| 1093 | variants.push({ |
| 1094 | typeName, |
| 1095 | propertyName: toUnionVariantPropertyName(typeName, usedNames), |
| 1096 | schema: memberSchema, |
| 1097 | }); |
| 1098 | } |
| 1099 | |
| 1100 | nestedClasses.set(className, generateJsonUnionClass(className, variants, schema.description, "SessionEventsJsonContext", isSchemaInternal(schema))); |
| 1101 | return className; |
| 1102 | } |
| 1103 | |
| 1104 | function generateNestedClass( |
| 1105 | className: string, |
no test coverage detected
searching dependent graphs…