types: add ExcludeEnum utility for easier typings (#6746)

Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
This commit is contained in:
Rodry
2021-10-03 21:54:43 +01:00
committed by GitHub
parent 32b5c2e617
commit 42acc6eef9
2 changed files with 40 additions and 61 deletions

26
typings/enums.d.ts vendored
View File

@@ -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,

75
typings/index.d.ts vendored
View File

@@ -66,6 +66,7 @@ import {
MembershipStates,
MessageButtonStyles,
MessageComponentTypes,
MessageTypes,
MFALevels,
NSFWLevels,
OverwriteTypes,
@@ -2290,6 +2291,8 @@ export class WelcomeScreen extends Base {
type EnumHolder<T> = { [P in keyof T]: T[P] };
type ExcludeEnum<T, K extends keyof T> = Exclude<keyof T | T[keyof T], K | T[K]>;
export const Constants: {
Package: {
name: string;
@@ -2900,7 +2903,7 @@ export type ActivitiesOptions = Omit<ActivityOptions, 'shardId'>;
export interface ActivityOptions {
name?: string;
url?: string;
type?: Exclude<ActivityType, 'CUSTOM'> | Exclude<ActivityTypes, ActivityTypes.CUSTOM>;
type?: ExcludeEnum<typeof ActivityTypes, 'CUSTOM'>;
shardId?: number | readonly number[];
}
@@ -3129,7 +3132,7 @@ export type ApplicationCommandData =
export interface ApplicationCommandChannelOptionData extends BaseApplicationCommandOptionsData {
type: CommandOptionChannelResolvableType;
channelTypes?: Exclude<keyof typeof ChannelTypes | ChannelTypes, 'UNKNOWN' | ChannelTypes.UNKNOWN>[];
channelTypes?: ExcludeEnum<typeof ChannelTypes, 'UNKNOWN'>[];
channel_types?: Exclude<ChannelTypes, ChannelTypes.UNKNOWN>[];
}
@@ -3313,8 +3316,8 @@ export type CacheWithLimitsOptions = {
export interface CategoryCreateChannelOptions {
permissionOverwrites?: OverwriteResolvable[] | Collection<Snowflake, OverwriteResolvable>;
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<CategoryCreateChannelOptions, 'type'> {
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<MessageButtonStyleResolvable, 'LINK' | MessageButtonStyles.LINK>;
style: ExcludeEnum<typeof MessageButtonStyles, 'LINK'>;
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;