96 lines
2.4 KiB
TypeScript
96 lines
2.4 KiB
TypeScript
import { Type, type Static, type TSchema } from "@alkdev/typebox";
|
|
|
|
export const CompatibleInputSchema = Type.Object({
|
|
value: Type.Number(),
|
|
label: Type.Optional(Type.String()),
|
|
});
|
|
|
|
export const CompatibleOutputSchema = Type.Object({
|
|
value: Type.Number(),
|
|
label: Type.Optional(Type.String()),
|
|
});
|
|
|
|
export type CompatibleInput = Static<typeof CompatibleInputSchema>;
|
|
export type CompatibleOutput = Static<typeof CompatibleOutputSchema>;
|
|
|
|
export const NarrowOutputSchema = Type.Object({
|
|
value: Type.Number(),
|
|
});
|
|
|
|
export const WideInputSchema = Type.Object({
|
|
value: Type.Number(),
|
|
label: Type.Optional(Type.String()),
|
|
metadata: Type.Optional(Type.Record(Type.String(), Type.String())),
|
|
});
|
|
|
|
export type NarrowOutput = Static<typeof NarrowOutputSchema>;
|
|
export type WideInput = Static<typeof WideInputSchema>;
|
|
|
|
export const IncompatibleNumberOutputSchema = Type.Object({
|
|
value: Type.Number(),
|
|
});
|
|
|
|
export const IncompatibleStringInputSchema = Type.Object({
|
|
value: Type.String(),
|
|
});
|
|
|
|
export type IncompatibleNumberOutput = Static<typeof IncompatibleNumberOutputSchema>;
|
|
export type IncompatibleStringInput = Static<typeof IncompatibleStringInputSchema>;
|
|
|
|
export const MissingRequiredFieldOutputSchema = Type.Object({
|
|
id: Type.String(),
|
|
});
|
|
|
|
export const MissingRequiredFieldInputSchema = Type.Object({
|
|
id: Type.String(),
|
|
name: Type.String(),
|
|
});
|
|
|
|
export type MissingRequiredFieldOutput = Static<typeof MissingRequiredFieldOutputSchema>;
|
|
export type MissingRequiredFieldInput = Static<typeof MissingRequiredFieldInputSchema>;
|
|
|
|
export const UnknownSchema = Type.Unknown();
|
|
|
|
export const compatiblePairs: Array<{
|
|
name: string;
|
|
output: TSchema;
|
|
input: TSchema;
|
|
}> = [
|
|
{
|
|
name: "identical-structure",
|
|
output: CompatibleOutputSchema,
|
|
input: CompatibleInputSchema,
|
|
},
|
|
{
|
|
name: "narrow-output-wide-input",
|
|
output: NarrowOutputSchema,
|
|
input: WideInputSchema,
|
|
},
|
|
];
|
|
|
|
export const incompatiblePairs: Array<{
|
|
name: string;
|
|
output: TSchema;
|
|
input: TSchema;
|
|
}> = [
|
|
{
|
|
name: "type-mismatch-number-string",
|
|
output: IncompatibleNumberOutputSchema,
|
|
input: IncompatibleStringInputSchema,
|
|
},
|
|
{
|
|
name: "missing-required-field",
|
|
output: MissingRequiredFieldOutputSchema,
|
|
input: MissingRequiredFieldInputSchema,
|
|
},
|
|
];
|
|
|
|
export const unknownSchemas: Array<{
|
|
name: string;
|
|
schema: TSchema;
|
|
}> = [
|
|
{
|
|
name: "unknown-schema",
|
|
schema: UnknownSchema,
|
|
},
|
|
]; |