function convert2CMDSchema()

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;
}