fix: Validate select menu options (#7566)

* fix: validate select menu options

* chore: make requested changes

* refactor: make requested changes

* fix: tests
This commit is contained in:
Suneet Tipirneni
2022-03-24 15:57:53 -04:00
committed by GitHub
parent b520c3df3c
commit b1d63d919a
3 changed files with 86 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
import { APIMessageComponentEmoji, ButtonStyle } from 'discord-api-types/v10';
import { z } from 'zod';
import type { SelectMenuOptionBuilder } from './selectMenu/SelectMenuOption';
import { UnsafeSelectMenuOptionBuilder } from './selectMenu/UnsafeSelectMenuOption';
export const customIdValidator = z.string().min(1).max(100);
@@ -22,7 +23,19 @@ export const buttonStyleValidator = z.number().int().min(ButtonStyle.Primary).ma
export const placeholderValidator = z.string().max(150);
export const minMaxValidator = z.number().int().min(0).max(25);
export const optionsValidator = z.object({}).array().nonempty();
export const labelValueDescriptionValidator = z.string().min(1).max(100);
export const optionValidator = z.union([
z.object({
label: labelValueDescriptionValidator,
value: labelValueDescriptionValidator,
description: labelValueDescriptionValidator.optional(),
emoji: emojiValidator.optional(),
default: z.boolean().optional(),
}),
z.instanceof(UnsafeSelectMenuOptionBuilder),
]);
export const optionsValidator = optionValidator.array().nonempty();
export const optionsLengthValidator = z.number().int().min(0).max(25);
export function validateRequiredSelectMenuParameters(options: SelectMenuOptionBuilder[], customId?: string) {
customIdValidator.parse(customId);