mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
33 lines
720 B
TypeScript
33 lines
720 B
TypeScript
import {z} from 'zod';
|
|
|
|
export interface EnumEntry {
|
|
name: string;
|
|
value: string | number;
|
|
description?: string;
|
|
}
|
|
|
|
export interface BitflagEntry {
|
|
name: string;
|
|
value: string;
|
|
description?: string;
|
|
}
|
|
|
|
interface SchemaMetadata {
|
|
name?: string;
|
|
enumEntries?: Array<EnumEntry>;
|
|
openEnum?: boolean;
|
|
bitflagValues?: Array<BitflagEntry>;
|
|
format?: string;
|
|
preserveEmptyValues?: boolean;
|
|
preserveNullFields?: boolean;
|
|
experiment?: string;
|
|
}
|
|
|
|
export const schemaMetadata = z.registry<SchemaMetadata>();
|
|
|
|
export function withSchemaMetadata<T extends z.ZodType>(schema: T, metadata: SchemaMetadata): T {
|
|
const registeredSchema: z.ZodType = schema;
|
|
schemaMetadata.add(registeredSchema, metadata);
|
|
return schema;
|
|
}
|