use super::{
BuiltinSignature, Param, ShapeFieldDescriptor, Ty, TY_ANY, TY_BOOL, TY_DICT, TY_DICT_OR_NIL,
TY_INT, TY_LIST, TY_NIL, TY_STRING, TY_STRING_OR_NIL,
};
const SCHEMA_RECOVER_ENVELOPE: Ty = Ty::Shape(&[
ShapeFieldDescriptor::new("ok", TY_BOOL),
ShapeFieldDescriptor::new("data", Ty::Union(&[Ty::Generic("T"), TY_NIL])),
ShapeFieldDescriptor::new("raw_text", TY_STRING),
ShapeFieldDescriptor::new("error", TY_STRING),
ShapeFieldDescriptor::new("error_category", TY_STRING_OR_NIL),
ShapeFieldDescriptor::new("attempts", TY_INT),
ShapeFieldDescriptor::new("stage", TY_STRING),
ShapeFieldDescriptor::new("repaired", TY_BOOL),
]);
const TY_SCHEMA_VALUE: Ty = Ty::Union(&[TY_DICT, Ty::Apply("Schema", &[TY_ANY])]);
pub(crate) const SIGNATURES: &[BuiltinSignature] = &[
BuiltinSignature::simple(
"is_type",
&[
Param::new("value", TY_ANY),
Param::new("schema", TY_SCHEMA_VALUE),
],
TY_BOOL,
),
BuiltinSignature::generic(
"schema_check",
&["T"],
&[
Param::new("value", TY_ANY),
Param::new("schema", Ty::SchemaOf("T")),
],
Ty::Apply("Result", &[Ty::Generic("T"), TY_STRING]),
),
BuiltinSignature::generic(
"schema_expect",
&["T"],
&[
Param::new("value", TY_ANY),
Param::new("schema", Ty::SchemaOf("T")),
Param::optional("apply_defaults", TY_BOOL),
],
Ty::Generic("T"),
),
BuiltinSignature::simple(
"schema_extend",
&[
Param::new("base", TY_DICT),
Param::new("overrides", TY_DICT),
],
TY_DICT,
),
BuiltinSignature::simple(
"schema_from_json_schema",
&[Param::new("json_schema", TY_DICT)],
TY_DICT,
),
BuiltinSignature::simple(
"schema_from_openapi_schema",
&[Param::new("openapi_schema", TY_DICT)],
TY_DICT,
),
BuiltinSignature::simple(
"schema_is",
&[
Param::new("value", TY_ANY),
Param::new("schema", TY_SCHEMA_VALUE),
],
TY_BOOL,
),
BuiltinSignature::simple("schema_of", &[Param::new("type_alias", TY_ANY)], TY_DICT),
BuiltinSignature::simple(
"schema_omit",
&[
Param::new("schema", TY_SCHEMA_VALUE),
Param::new("keys", TY_LIST),
],
TY_DICT,
),
BuiltinSignature::generic(
"schema_parse",
&["T"],
&[
Param::new("value", TY_ANY),
Param::new("schema", Ty::SchemaOf("T")),
],
Ty::Apply("Result", &[Ty::Generic("T"), TY_STRING]),
),
BuiltinSignature::simple(
"schema_partial",
&[Param::new("schema", TY_SCHEMA_VALUE)],
TY_DICT,
),
BuiltinSignature::simple(
"schema_pick",
&[
Param::new("schema", TY_SCHEMA_VALUE),
Param::new("keys", TY_LIST),
],
TY_DICT,
),
BuiltinSignature::generic(
"schema_recover",
&["T"],
&[
Param::new("text", TY_STRING),
Param::new("schema", Ty::SchemaOf("T")),
Param::optional("options", TY_DICT_OR_NIL),
],
SCHEMA_RECOVER_ENVELOPE,
),
BuiltinSignature::simple(
"schema_to_json_schema",
&[Param::new("schema", TY_SCHEMA_VALUE)],
TY_DICT,
),
BuiltinSignature::simple(
"schema_to_openapi_schema",
&[Param::new("schema", TY_SCHEMA_VALUE)],
TY_DICT,
),
];