3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-06-16 19:15:03 +00:00

fix: better schema reusability in json schema

This commit is contained in:
Dragory 2025-06-01 00:56:52 +00:00
parent efaa12192c
commit 36ce6903a3
No known key found for this signature in database
2 changed files with 10 additions and 4 deletions

View file

@ -47,6 +47,8 @@ const pluginOverrideCriteriaSchema = basePluginOverrideCriteriaSchema.extend({
get not() { get not() {
return pluginOverrideCriteriaSchema.optional(); return pluginOverrideCriteriaSchema.optional();
}, },
}).meta({
id: "overrideCriteria",
}); });
const outputPath = process.argv[2]; const outputPath = process.argv[2];

View file

@ -197,7 +197,7 @@ export function zRegex<T extends ZodString>(zStr: T) {
}); });
} }
export const zEmbedInput = z.object({ export const zEmbedInput = z.strictObject({
title: z.string().optional(), title: z.string().optional(),
description: z.string().optional(), description: z.string().optional(),
url: z.string().optional(), url: z.string().optional(),
@ -262,6 +262,8 @@ export const zEmbedInput = z.object({
}), }),
) )
.nullable(), .nullable(),
}).meta({
id: "embedInput",
}); });
export type EmbedWith<T extends keyof APIEmbed> = APIEmbed & Pick<Required<APIEmbed>, T>; export type EmbedWith<T extends keyof APIEmbed> = APIEmbed & Pick<Required<APIEmbed>, T>;
@ -271,7 +273,7 @@ export const zStrictMessageContent = z.strictObject({
tts: z.boolean().optional(), tts: z.boolean().optional(),
embeds: z.union([z.array(zEmbedInput), zEmbedInput]).optional(), embeds: z.union([z.array(zEmbedInput), zEmbedInput]).optional(),
embed: zEmbedInput.optional(), embed: zEmbedInput.optional(),
}).refine((data) => { }).transform((data) => {
if (data.embed) { if (data.embed) {
data.embeds = [data.embed]; data.embeds = [data.embed];
delete data.embed; delete data.embed;
@ -279,7 +281,9 @@ export const zStrictMessageContent = z.strictObject({
if (data.embeds && !Array.isArray(data.embeds)) { if (data.embeds && !Array.isArray(data.embeds)) {
data.embeds = [data.embeds]; data.embeds = [data.embeds];
} }
return true; return data as StrictMessageContent;
}).meta({
id: "strictMessageContent",
}); });
export type ZStrictMessageContent = z.infer<typeof zStrictMessageContent>; export type ZStrictMessageContent = z.infer<typeof zStrictMessageContent>;
@ -294,7 +298,7 @@ export type MessageContent = string | StrictMessageContent;
export const zMessageContent = z.union([ export const zMessageContent = z.union([
zBoundedCharacters(0, 4000), zBoundedCharacters(0, 4000),
zStrictMessageContent, zStrictMessageContent,
]) as z.ZodType<MessageContent>; ]);
export function validateAndParseMessageContent(input: unknown): StrictMessageContent { export function validateAndParseMessageContent(input: unknown): StrictMessageContent {
if (input == null) { if (input == null) {