From 42acc6eef9c76cdb698208ddacce64eed25f1396 Mon Sep 17 00:00:00 2001 From: Rodry <38259440+ImRodry@users.noreply.github.com> Date: Sun, 3 Oct 2021 21:54:43 +0100 Subject: [PATCH] types: add ExcludeEnum utility for easier typings (#6746) Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com> --- typings/enums.d.ts | 26 ++++++++++++++++ typings/index.d.ts | 75 +++++++++------------------------------------- 2 files changed, 40 insertions(+), 61 deletions(-) diff --git a/typings/enums.d.ts b/typings/enums.d.ts index 1a27f5470..79df75adf 100644 --- a/typings/enums.d.ts +++ b/typings/enums.d.ts @@ -49,6 +49,32 @@ export const enum ChannelTypes { GUILD_STAGE_VOICE = 13, } +export const enum MessageTypes { + DEFAULT, + RECIPIENT_ADD, + RECIPIENT_REMOVE, + CALL, + CHANNEL_NAME_CHANGE, + CHANNEL_ICON_CHANGE, + CHANNEL_PINNED_MESSAGE, + GUILD_MEMBER_JOIN, + USER_PREMIUM_GUILD_SUBSCRIPTION, + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1, + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2, + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3, + CHANNEL_FOLLOW_ADD, + GUILD_DISCOVERY_DISQUALIFIED = 14, + GUILD_DISCOVERY_REQUALIFIED, + GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING, + GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING, + THREAD_CREATED, + REPLY, + APPLICATION_COMMAND, + THREAD_STARTER_MESSAGE, + GUILD_INVITE_REMINDER, + CONTEXT_MENU_COMMAND, +} + export const enum DefaultMessageNotificationLevels { ALL_MESSAGES = 0, ONLY_MENTIONS = 1, diff --git a/typings/index.d.ts b/typings/index.d.ts index 7a3ef5b3e..78db460a9 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -66,6 +66,7 @@ import { MembershipStates, MessageButtonStyles, MessageComponentTypes, + MessageTypes, MFALevels, NSFWLevels, OverwriteTypes, @@ -2290,6 +2291,8 @@ export class WelcomeScreen extends Base { type EnumHolder = { [P in keyof T]: T[P] }; +type ExcludeEnum = Exclude; + export const Constants: { Package: { name: string; @@ -2900,7 +2903,7 @@ export type ActivitiesOptions = Omit; export interface ActivityOptions { name?: string; url?: string; - type?: Exclude | Exclude; + type?: ExcludeEnum; shardId?: number | readonly number[]; } @@ -3129,7 +3132,7 @@ export type ApplicationCommandData = export interface ApplicationCommandChannelOptionData extends BaseApplicationCommandOptionsData { type: CommandOptionChannelResolvableType; - channelTypes?: Exclude[]; + channelTypes?: ExcludeEnum[]; channel_types?: Exclude[]; } @@ -3313,8 +3316,8 @@ export type CacheWithLimitsOptions = { export interface CategoryCreateChannelOptions { permissionOverwrites?: OverwriteResolvable[] | Collection; topic?: string; - type?: Exclude< - keyof typeof ChannelTypes | ChannelTypes, + type?: ExcludeEnum< + typeof ChannelTypes, | 'DM' | 'GROUP_DM' | 'UNKNOWN' @@ -3322,13 +3325,6 @@ export interface CategoryCreateChannelOptions { | 'GUILD_NEWS_THREAD' | 'GUILD_PRIVATE_THREAD' | 'GUILD_CATEGORY' - | ChannelTypes.DM - | ChannelTypes.GROUP_DM - | ChannelTypes.UNKNOWN - | ChannelTypes.GUILD_PUBLIC_THREAD - | ChannelTypes.GUILD_NEWS_THREAD - | ChannelTypes.GUILD_PRIVATE_THREAD - | ChannelTypes.GUILD_CATEGORY >; nsfw?: boolean; bitrate?: number; @@ -3968,20 +3964,9 @@ export type GuildChannelResolvable = Snowflake | GuildChannel | ThreadChannel; export interface GuildChannelCreateOptions extends Omit { parent?: CategoryChannelResolvable; - type?: Exclude< - keyof typeof ChannelTypes | ChannelTypes, - | 'DM' - | 'GROUP_DM' - | 'UNKNOWN' - | 'GUILD_PUBLIC_THREAD' - | 'GUILD_NEWS_THREAD' - | 'GUILD_PRIVATE_THREAD' - | ChannelTypes.DM - | ChannelTypes.GROUP_DM - | ChannelTypes.UNKNOWN - | ChannelTypes.GUILD_PUBLIC_THREAD - | ChannelTypes.GUILD_NEWS_THREAD - | ChannelTypes.GUILD_PRIVATE_THREAD + type?: ExcludeEnum< + typeof ChannelTypes, + 'DM' | 'GROUP_DM' | 'UNKNOWN' | 'GUILD_PUBLIC_THREAD' | 'GUILD_NEWS_THREAD' | 'GUILD_PRIVATE_THREAD' >; } @@ -4308,7 +4293,7 @@ export interface LinkButtonOptions extends BaseButtonOptions { } export interface InteractionButtonOptions extends BaseButtonOptions { - style: Exclude; + style: ExcludeEnum; customId: string; } @@ -4506,30 +4491,7 @@ export type MessageTarget = | Message | MessageManager; -export type MessageType = - | 'DEFAULT' - | 'RECIPIENT_ADD' - | 'RECIPIENT_REMOVE' - | 'CALL' - | 'CHANNEL_NAME_CHANGE' - | 'CHANNEL_ICON_CHANGE' - | 'CHANNEL_PINNED_MESSAGE' - | 'GUILD_MEMBER_JOIN' - | 'USER_PREMIUM_GUILD_SUBSCRIPTION' - | 'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1' - | 'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2' - | 'USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3' - | 'CHANNEL_FOLLOW_ADD' - | 'GUILD_DISCOVERY_DISQUALIFIED' - | 'GUILD_DISCOVERY_REQUALIFIED' - | 'GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING' - | 'GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING' - | 'THREAD_CREATED' - | 'REPLY' - | 'APPLICATION_COMMAND' - | 'THREAD_STARTER_MESSAGE' - | 'GUILD_INVITE_REMINDER' - | 'CONTEXT_MENU_COMMAND'; +export type MessageType = keyof typeof MessageTypes; export type MFALevel = keyof typeof MFALevels; @@ -4631,8 +4593,8 @@ export type PresenceResolvable = Presence | UserResolvable | Snowflake; export interface PartialChannelData { id?: Snowflake | number; parentId?: Snowflake | number; - type?: Exclude< - keyof typeof ChannelTypes | ChannelTypes, + type?: ExcludeEnum< + typeof ChannelTypes, | 'DM' | 'GROUP_DM' | 'GUILD_NEWS' @@ -4642,15 +4604,6 @@ export interface PartialChannelData { | 'GUILD_PUBLIC_THREAD' | 'GUILD_PRIVATE_THREAD' | 'GUILD_STAGE_VOICE' - | ChannelTypes.DM - | ChannelTypes.GROUP_DM - | ChannelTypes.GUILD_NEWS - | ChannelTypes.GUILD_STORE - | ChannelTypes.UNKNOWN - | ChannelTypes.GUILD_NEWS_THREAD - | ChannelTypes.GUILD_PUBLIC_THREAD - | ChannelTypes.GUILD_PRIVATE_THREAD - | ChannelTypes.GUILD_STAGE_VOICE >; name: string; topic?: string;