MCPcopy Index your code
hub / github.com/github/copilot-sdk / tryGenerateSessionJsonUnionType

Function tryGenerateSessionJsonUnionType

scripts/codegen/csharp.ts:1067–1102  ·  view source on GitHub ↗
(
    schema: JSONSchema7,
    parentClassName: string,
    propName: string,
    knownTypes: Map<string, string>,
    nestedClasses: Map<string, string>,
    enumOutput: string[]
)

Source from the content-addressed store, hash-verified

1065}
1066
1067function 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
1104function generateNestedClass(
1105 className: string,

Callers 1

Calls 11

getNonNullUnionMembersFunction · 0.85
getVariantSchemaFunction · 0.85
typeToClassNameFunction · 0.85
refTypeNameFunction · 0.85
isObjectSchemaFunction · 0.85
generateNestedClassFunction · 0.85
generateJsonUnionClassFunction · 0.85
isSchemaInternalFunction · 0.85
setMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…