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

Function findDiscriminator

scripts/codegen/csharp.ts:668–697  ·  view source on GitHub ↗

* Find a discriminator property shared by all variants in an anyOf.

(variants: JSONSchema7[])

Source from the content-addressed store, hash-verified

666 * Find a discriminator property shared by all variants in an anyOf.
667 */
668function findDiscriminator(variants: JSONSchema7[]): DiscriminatorInfo | null {
669 if (variants.length === 0) return null;
670 const firstVariant = variants[0];
671 if (!firstVariant.properties) return null;
672
673 for (const [propName, propSchema] of Object.entries(firstVariant.properties).sort(([a], [b]) => a.localeCompare(b))) {
674 if (typeof propSchema !== "object") continue;
675 const schema = propSchema as JSONSchema7;
676 if (schema.const === undefined) continue;
677
678 const mapping = new Map<string, DiscriminatorVariant>();
679 let isValidDiscriminator = true;
680
681 for (const variant of variants) {
682 if (!variant.properties) { isValidDiscriminator = false; break; }
683 const variantProp = variant.properties[propName];
684 if (typeof variantProp !== "object") { isValidDiscriminator = false; break; }
685 const variantSchema = variantProp as JSONSchema7;
686 if (variantSchema.const === undefined) { isValidDiscriminator = false; break; }
687 const key = String(variantSchema.const);
688 if (mapping.has(key)) { isValidDiscriminator = false; break; }
689 mapping.set(key, { value: variantSchema.const, schema: variant });
690 }
691
692 if (isValidDiscriminator && mapping.size === variants.length) {
693 return { property: propName, mapping };
694 }
695 }
696 return null;
697}
698
699/** Callback that resolves the C# type for a property schema within a polymorphic class. */
700type PropertyTypeResolver = (

Callers 3

resolveRpcTypeFunction · 0.70

Calls 2

StringFunction · 0.85
setMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…