refactor: comprehensive permissionOverwrites refactor (#2818)

* wip: comprehensive permissionOverwrites refactor

* PermissionOverwrites.resolve should Promise.reject()

where a promise is the expected return value

* On second thought, async rewrite to automatically reject on throw

* Fix some docs

* Fix a bug

* fix 2 more bugs

* typings: Updated for latest commit

* typings: Add missing method in GuildChannel

* typings: Add missing `| null` in PermissionOverwriteOption type

* Suggested changes
This commit is contained in:
bdistin
2018-09-21 05:21:51 -05:00
committed by SpaceEEC
parent 6d184257b3
commit 3d8207a3db
6 changed files with 202 additions and 118 deletions

39
typings/index.d.ts vendored
View File

@@ -519,20 +519,18 @@ declare module 'discord.js' {
public rawPosition: number;
public clone(options?: GuildChannelCloneOptions): Promise<GuildChannel>;
public createInvite(options?: InviteOptions): Promise<Invite>;
public createOverwrite(userOrRole: RoleResolvable | UserResolvable, options: PermissionOverwriteOption, reason?: string): Promise<GuildChannel>;
public edit(data: ChannelData, reason?: string): Promise<GuildChannel>;
public equals(channel: GuildChannel): boolean;
public fetchInvites(): Promise<Collection<string, Invite>>;
public lockPermissions(): Promise<GuildChannel>;
public overwritePermissions(
options: Array<Partial<PermissionOverwrites|PermissionOverwriteOptions>> | Collection<Snowflake, Partial<PermissionOverwriteOptions>>,
reason?: string
): Promise<GuildChannel>;
public overwritePermissions(options?: { overwrites?: OverwriteResolvable[] | Collection<Snowflake, OverwriteResolvable>, reason?: string }): Promise<GuildChannel>;
public permissionsFor(memberOrRole: GuildMemberResolvable | RoleResolvable): Readonly<Permissions> | null;
public setName(name: string, reason?: string): Promise<GuildChannel>;
public setParent(channel: GuildChannel | Snowflake, options?: { lockPermissions?: boolean, reason?: string }): Promise<GuildChannel>;
public setPosition(position: number, options?: { relative?: boolean, reason?: string }): Promise<GuildChannel>;
public setTopic(topic: string, reason?: string): Promise<GuildChannel>;
public updateOverwrite(userOrRole: RoleResolvable | UserResolvable, options: Partial<PermissionObject>, reason?: string): Promise<GuildChannel>;
public updateOverwrite(userOrRole: RoleResolvable | UserResolvable, options: PermissionOverwriteOption, reason?: string): Promise<GuildChannel>;
}
export class GuildEmoji extends Emoji {
@@ -786,8 +784,11 @@ declare module 'discord.js' {
public deny: Readonly<Permissions>;
public id: Snowflake;
public type: OverwriteType;
public update(options: PermissionOverwriteOption, reason?: string): Promise<PermissionOverwrites>;
public delete(reason?: string): Promise<PermissionOverwrites>;
public toJSON(): object;
public static resolveOverwriteOptions(options: ResolvedOverwriteOptions, initialPermissions: { allow?: PermissionResolvable, deny?: PermissionResolvable }): ResolvedOverwriteOptions;
public static resolve(overwrite: OverwriteResolvable, guild: Guild): RawOverwriteData;
}
export class Permissions extends BitField<PermissionString> {
@@ -1521,7 +1522,7 @@ declare module 'discord.js' {
userLimit?: number;
parentID?: Snowflake;
lockPermissions?: boolean;
permissionOverwrites?: PermissionOverwrites[];
permissionOverwrites?: OverwriteResolvable[] | Collection<Snowflake, OverwriteResolvable>;
};
type ChannelLogsQueryOptions = {
@@ -1738,7 +1739,7 @@ declare module 'discord.js' {
bitrate?: number;
userLimit?: number;
parent?: ChannelResolvable;
overwrites?: (PermissionOverwrites | ChannelCreationOverwrites)[];
overwrites?: OverwriteResolvable[] | Collection<Snowflake, OverwriteResolvable>;
reason?: string
};
@@ -1889,18 +1890,22 @@ declare module 'discord.js' {
| 'GUILD_MEMBER_JOIN';
type OverwriteData = {
id: Snowflake;
type: string;
allow?: string;
deny?: string;
allow?: PermissionResolvable;
deny?: PermissionResolvable;
id: GuildMemberResolvable | RoleResolvable;
type?: OverwriteType;
};
type OverwriteResolvable = PermissionOverwrites | OverwriteData;
type OverwriteType = 'member' | 'role';
type PermissionFlags = Record<PermissionString, number>;
type PermissionObject = Record<PermissionString, boolean>;
type PermissionOverwriteOption = { [k in PermissionString]?: boolean | null };
type PermissionString = 'CREATE_INSTANT_INVITE'
| 'KICK_MEMBERS'
| 'BAN_MEMBERS'
@@ -1964,12 +1969,24 @@ declare module 'discord.js' {
route: string;
};
type RawOverwriteData = {
id: Snowflake;
allow: number;
deny: number;
type: OverwriteType;
};
type ReactionCollectorOptions = CollectorOptions & {
max?: number;
maxEmojis?: number;
maxUsers?: number;
};
type ResolvedOverwriteOptions = {
allow: Permissions;
deny: Permissions;
};
type RoleData = {
name?: string;
color?: ColorResolvable;