mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-15 11:03:30 +01:00
fix(builders): add proper snowflake validation (#11290)
* fix(builders): add proper snowflake validation close #11289 * fix(builders): use snowflake validation for attachment id * test(builders): add validation tests for snowflake attachment IDs * fix: better regex Co-authored-by: Almeida <github@almeidx.dev> * test(builders): fix snowflake validation in fileBody test * Update packages/builders/src/Assertions.ts Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> * fix: update regex --------- Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> Co-authored-by: Almeida <github@almeidx.dev> Co-authored-by: Vlad Frangu <me@vladfrangu.dev> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import { ButtonStyle, ChannelType, ComponentType, SelectMenuDefaultValueType } from 'discord-api-types/v10';
|
||||
import { z } from 'zod';
|
||||
import { idPredicate, customIdPredicate } from '../Assertions.js';
|
||||
import { idPredicate, customIdPredicate, snowflakePredicate } from '../Assertions.js';
|
||||
|
||||
const labelPredicate = z.string().min(1).max(80);
|
||||
|
||||
export const emojiPredicate = z
|
||||
.strictObject({
|
||||
id: z.string().optional(),
|
||||
id: snowflakePredicate.optional(),
|
||||
name: z.string().min(2).max(32).optional(),
|
||||
animated: z.boolean().optional(),
|
||||
})
|
||||
@@ -39,7 +39,7 @@ const buttonLinkPredicate = buttonPredicateBase.extend({
|
||||
|
||||
const buttonPremiumPredicate = buttonPredicateBase.extend({
|
||||
style: z.literal(ButtonStyle.Premium),
|
||||
sku_id: z.string(),
|
||||
sku_id: snowflakePredicate,
|
||||
});
|
||||
|
||||
export const buttonPredicate = z.discriminatedUnion('style', [
|
||||
@@ -64,7 +64,7 @@ export const selectMenuChannelPredicate = selectMenuBasePredicate.extend({
|
||||
type: z.literal(ComponentType.ChannelSelect),
|
||||
channel_types: z.enum(ChannelType).array().optional(),
|
||||
default_values: z
|
||||
.object({ id: z.string(), type: z.literal(SelectMenuDefaultValueType.Channel) })
|
||||
.object({ id: snowflakePredicate, type: z.literal(SelectMenuDefaultValueType.Channel) })
|
||||
.array()
|
||||
.max(25)
|
||||
.optional(),
|
||||
@@ -74,7 +74,7 @@ export const selectMenuMentionablePredicate = selectMenuBasePredicate.extend({
|
||||
type: z.literal(ComponentType.MentionableSelect),
|
||||
default_values: z
|
||||
.object({
|
||||
id: z.string(),
|
||||
id: snowflakePredicate,
|
||||
type: z.literal([SelectMenuDefaultValueType.Role, SelectMenuDefaultValueType.User]),
|
||||
})
|
||||
.array()
|
||||
@@ -85,7 +85,7 @@ export const selectMenuMentionablePredicate = selectMenuBasePredicate.extend({
|
||||
export const selectMenuRolePredicate = selectMenuBasePredicate.extend({
|
||||
type: z.literal(ComponentType.RoleSelect),
|
||||
default_values: z
|
||||
.object({ id: z.string(), type: z.literal(SelectMenuDefaultValueType.Role) })
|
||||
.object({ id: snowflakePredicate, type: z.literal(SelectMenuDefaultValueType.Role) })
|
||||
.array()
|
||||
.max(25)
|
||||
.optional(),
|
||||
@@ -142,7 +142,7 @@ export const selectMenuStringPredicate = selectMenuBasePredicate
|
||||
export const selectMenuUserPredicate = selectMenuBasePredicate.extend({
|
||||
type: z.literal(ComponentType.UserSelect),
|
||||
default_values: z
|
||||
.object({ id: z.string(), type: z.literal(SelectMenuDefaultValueType.User) })
|
||||
.object({ id: snowflakePredicate, type: z.literal(SelectMenuDefaultValueType.User) })
|
||||
.array()
|
||||
.max(25)
|
||||
.optional(),
|
||||
|
||||
Reference in New Issue
Block a user