in src/typespec-aaz/src/convertor.ts [653:722]
function convert2CMDSchema(
context: AAZSchemaEmitterContext,
param: ModelProperty,
name?: string,
): CMDSchema | undefined {
if (isNeverType(param.type)) {
return undefined;
}
let schema;
switch (param.type.kind) {
case "Intrinsic":
schema = convert2CMDSchemaBase(context, param.type);
break;
case "Model":
schema = convert2CMDSchemaBase(context, param.type as Model);
break;
case "ModelProperty":
schema = convert2CMDSchema(context, param.type as ModelProperty);
break;
case "Scalar":
schema = convert2CMDSchemaBase(context, param.type as Scalar);
break;
case "UnionVariant":
schema = convert2CMDSchemaBase(context, param.type.type);
break;
case "Union":
schema = convert2CMDSchemaBase(context, param.type as Union);
break;
case "Enum":
schema = convert2CMDSchemaBase(context, param.type as Enum);
break;
// TODO: handle Literals
case "Number":
case "String":
case "Boolean":
schema = convert2CMDSchemaBase(context, param.type);
break;
// case "Tuple":
default:
reportDiagnostic(context.program, { code: "Unsupported-Type", target: param.type });
}
if (schema) {
schema = {
...schema,
name: name ?? param.name,
description: getDoc(context.program, param),
};
if (param.defaultValue) {
schema.default = {
value: getDefaultValue(context, param.defaultValue, param),
};
}
}
if (schema) {
schema = {
...schema,
...applySchemaFormat(context, param, schema as CMDSchemaBase),
};
schema = {
...schema,
...applyEncoding(context, param, schema),
};
schema = {
...schema,
...applyExtensionsDecorators(context, param, schema),
};
}
return schema;
}