diff --git a/src/structures/Channel.js b/src/structures/Channel.js index ba9a52ebf..fc4508b34 100644 --- a/src/structures/Channel.js +++ b/src/structures/Channel.js @@ -18,6 +18,7 @@ const SnowflakeUtil = require('../util/SnowflakeUtil'); * @internal */ const deletedChannels = new WeakSet(); +let deprecationEmittedForDeleted = false; /** * Represents any channel on Discord. @@ -67,12 +68,29 @@ class Channel extends Base { /** * Whether or not the structure has been deleted * @type {boolean} + * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ get deleted() { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + return deletedChannels.has(this); } set deleted(value) { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + if (value) deletedChannels.add(this); else deletedChannels.delete(this); } diff --git a/src/structures/Emoji.js b/src/structures/Emoji.js index 215dd33df..3c60c70a0 100644 --- a/src/structures/Emoji.js +++ b/src/structures/Emoji.js @@ -9,6 +9,7 @@ const SnowflakeUtil = require('../util/SnowflakeUtil'); * @internal */ const deletedEmojis = new WeakSet(); +let deprecationEmittedForDeleted = false; /** * Represents raw emoji data from the API @@ -47,12 +48,29 @@ class Emoji extends Base { /** * Whether or not the structure has been deleted * @type {boolean} + * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ get deleted() { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + return deletedEmojis.has(this); } set deleted(value) { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + if (value) deletedEmojis.add(this); else deletedEmojis.delete(this); } diff --git a/src/structures/Guild.js b/src/structures/Guild.js index e975af2c8..fcbd9df5a 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -36,6 +36,7 @@ const Util = require('../util/Util'); let deprecationEmittedForSetChannelPositions = false; let deprecationEmittedForSetRolePositions = false; +let deprecationEmittedForDeleted = false; /** * @type {WeakSet} @@ -130,12 +131,29 @@ class Guild extends AnonymousGuild { /** * Whether or not the structure has been deleted * @type {boolean} + * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ get deleted() { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Guild#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + return deletedGuilds.has(this); } set deleted(value) { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Guild#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + if (value) deletedGuilds.add(this); else deletedGuilds.delete(this); } diff --git a/src/structures/GuildMember.js b/src/structures/GuildMember.js index 4d9109c0a..c52d319fb 100644 --- a/src/structures/GuildMember.js +++ b/src/structures/GuildMember.js @@ -13,6 +13,7 @@ const Permissions = require('../util/Permissions'); * @internal */ const deletedGuildMembers = new WeakSet(); +let deprecationEmittedForDeleted = false; /** * Represents a member of a guild on Discord. @@ -93,12 +94,29 @@ class GuildMember extends Base { /** * Whether or not the structure has been deleted * @type {boolean} + * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ get deleted() { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'GuildMember#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + return deletedGuildMembers.has(this); } set deleted(value) { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'GuildMember#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + if (value) deletedGuildMembers.add(this); else deletedGuildMembers.delete(this); } diff --git a/src/structures/Message.js b/src/structures/Message.js index 622bf10fc..6acc66369 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -25,6 +25,7 @@ const Util = require('../util/Util'); * @internal */ const deletedMessages = new WeakSet(); +let deprecationEmittedForDeleted = false; /** * Represents a message on Discord. @@ -352,12 +353,29 @@ class Message extends Base { /** * Whether or not the structure has been deleted * @type {boolean} + * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ get deleted() { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Message#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + return deletedMessages.has(this); } set deleted(value) { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Message#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + if (value) deletedMessages.add(this); else deletedMessages.delete(this); } diff --git a/src/structures/Role.js b/src/structures/Role.js index bddca2868..00e67a8e3 100644 --- a/src/structures/Role.js +++ b/src/structures/Role.js @@ -14,6 +14,7 @@ let deprecationEmittedForComparePositions = false; * @internal */ const deletedRoles = new WeakSet(); +let deprecationEmittedForDeleted = false; /** * Represents a role on Discord. @@ -152,12 +153,29 @@ class Role extends Base { /** * Whether or not the role has been deleted * @type {boolean} + * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ get deleted() { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + return deletedRoles.has(this); } set deleted(value) { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + if (value) deletedRoles.add(this); else deletedRoles.delete(this); } diff --git a/src/structures/StageInstance.js b/src/structures/StageInstance.js index e695841a3..2b2b8fb7c 100644 --- a/src/structures/StageInstance.js +++ b/src/structures/StageInstance.js @@ -10,6 +10,7 @@ const SnowflakeUtil = require('../util/SnowflakeUtil'); * @internal */ const deletedStageInstances = new WeakSet(); +let deprecationEmittedForDeleted = false; /** * Represents a stage instance. @@ -84,12 +85,29 @@ class StageInstance extends Base { /** * Whether or not the stage instance has been deleted * @type {boolean} + * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ get deleted() { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'StageInstance#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + return deletedStageInstances.has(this); } set deleted(value) { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'StageInstance#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + if (value) deletedStageInstances.add(this); else deletedStageInstances.delete(this); } diff --git a/src/structures/Sticker.js b/src/structures/Sticker.js index 39b1d13a8..e73fc03a1 100644 --- a/src/structures/Sticker.js +++ b/src/structures/Sticker.js @@ -10,6 +10,7 @@ const SnowflakeUtil = require('../util/SnowflakeUtil'); * @internal */ const deletedStickers = new WeakSet(); +let deprecationEmittedForDeleted = false; /** * Represents a Sticker. @@ -147,12 +148,29 @@ class Sticker extends Base { /** * Whether or not the sticker has been deleted * @type {boolean} + * @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ get deleted() { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Sticker#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + return deletedStickers.has(this); } set deleted(value) { + if (!deprecationEmittedForDeleted) { + deprecationEmittedForDeleted = true; + process.emitWarning( + 'Sticker#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.', + 'DeprecationWarning', + ); + } + if (value) deletedStickers.add(this); else deletedStickers.delete(this); } diff --git a/typings/index.d.ts b/typings/index.d.ts index c9583dfda..423bf9686 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -516,9 +516,8 @@ export abstract class Channel extends Base { public constructor(client: Client, data?: RawChannelData, immediatePatch?: boolean); public readonly createdAt: Date; public readonly createdTimestamp: number; - public get deleted(): boolean; - /** @deprecated Will be removed in v14 */ - public set deleted(value: boolean); + /** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ + public deleted: boolean; public id: Snowflake; public readonly partial: false; public type: keyof typeof ChannelTypes; @@ -853,9 +852,8 @@ export class Emoji extends Base { public animated: boolean | null; public readonly createdAt: Date | null; public readonly createdTimestamp: number | null; - public get deleted(): boolean; - /** @deprecated Will be removed in v14 */ - public set deleted(value: boolean); + /** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ + public deleted: boolean; public id: Snowflake | null; public name: string | null; public readonly identifier: string; @@ -880,9 +878,8 @@ export class Guild extends AnonymousGuild { public channels: GuildChannelManager; public commands: GuildApplicationCommandManager; public defaultMessageNotifications: DefaultMessageNotificationLevel | number; - public get deleted(): boolean; - /** @deprecated Will be removed in v14 */ - public set deleted(value: boolean); + /** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ + public deleted: boolean; public discoverySplash: string | null; public emojis: GuildEmojiManager; public explicitContentFilter: ExplicitContentFilterLevel; @@ -1086,9 +1083,8 @@ export class GuildMember extends PartialTextBasedChannel(Base) { private constructor(client: Client, data: RawGuildMemberData, guild: Guild); public avatar: string | null; public readonly bannable: boolean; - public get deleted(): boolean; - /** @deprecated Will be removed in v14 */ - public set deleted(value: boolean); + /** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ + public deleted: boolean; public readonly displayColor: number; public readonly displayHexColor: HexColorString; public readonly displayName: string; @@ -1427,9 +1423,8 @@ export class Message extends Base { public createdTimestamp: number; public readonly crosspostable: boolean; public readonly deletable: boolean; - public get deleted(): boolean; - /** @deprecated Will be removed in v14 */ - public set deleted(value: boolean); + /** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ + public deleted: boolean; public readonly editable: boolean; public readonly editedAt: Date | null; public editedTimestamp: number | null; @@ -1860,9 +1855,8 @@ export class Role extends Base { public color: number; public readonly createdAt: Date; public readonly createdTimestamp: number; - public get deleted(): boolean; - /** @deprecated Will be removed in v14 */ - public set deleted(value: boolean); + /** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ + public deleted: boolean; public readonly editable: boolean; public guild: Guild; public readonly hexColor: HexColorString; @@ -2048,9 +2042,8 @@ export class StageChannel extends BaseGuildVoiceChannel { export class StageInstance extends Base { private constructor(client: Client, data: RawStageInstanceData, channel: StageChannel); public id: Snowflake; - public get deleted(): boolean; - /** @deprecated Will be removed in v14 */ - public set deleted(value: boolean); + /** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ + public deleted: boolean; public guildId: Snowflake; public channelId: Snowflake; public topic: string; @@ -2067,9 +2060,8 @@ export class StageInstance extends Base { export class Sticker extends Base { private constructor(client: Client, data: RawStickerData); - public get deleted(): boolean; - /** @deprecated Will be removed in v14 */ - public set deleted(value: boolean); + /** @deprecated This will be removed in the next major version, see https://github.com/discordjs/discord.js/issues/7091 */ + public deleted: boolean; public readonly createdTimestamp: number; public readonly createdAt: Date; public available: boolean | null; diff --git a/typings/index.test-d.ts b/typings/index.test-d.ts index 9d40205d4..2b28a1eac 100644 --- a/typings/index.test-d.ts +++ b/typings/index.test-d.ts @@ -922,18 +922,18 @@ declare const message: Message; declare const role: Role; declare const stageInstance: StageInstance; declare const sticker: Sticker; -expectDeprecated((dmChannel.deleted = true)); -expectDeprecated((textChannel.deleted = true)); -expectDeprecated((voiceChannel.deleted = true)); -expectDeprecated((newsChannel.deleted = true)); -expectDeprecated((threadChannel.deleted = true)); -expectDeprecated((emoji.deleted = true)); -expectDeprecated((guildMember.deleted = true)); -expectDeprecated((guild.deleted = true)); -expectDeprecated((message.deleted = true)); -expectDeprecated((role.deleted = true)); -expectDeprecated((stageInstance.deleted = true)); -expectDeprecated((sticker.deleted = true)); +expectDeprecated(dmChannel.deleted); +expectDeprecated(textChannel.deleted); +expectDeprecated(voiceChannel.deleted); +expectDeprecated(newsChannel.deleted); +expectDeprecated(threadChannel.deleted); +expectDeprecated(emoji.deleted); +expectDeprecated(guildMember.deleted); +expectDeprecated(guild.deleted); +expectDeprecated(message.deleted); +expectDeprecated(role.deleted); +expectDeprecated(stageInstance.deleted); +expectDeprecated(sticker.deleted); // Test interactions declare const interaction: Interaction;