diff --git a/esm/discord.mjs b/esm/discord.mjs index ccafcae94..b8bee9fd7 100644 --- a/esm/discord.mjs +++ b/esm/discord.mjs @@ -22,7 +22,6 @@ export const { Intents, Permissions, Speaking, - Snowflake, SnowflakeUtil, Structures, SystemChannelFlags, diff --git a/src/index.js b/src/index.js index 1dc667d9c..51ff9e6f6 100644 --- a/src/index.js +++ b/src/index.js @@ -25,8 +25,7 @@ module.exports = { Intents: require('./util/Intents'), Permissions: require('./util/Permissions'), Speaking: require('./util/Speaking'), - Snowflake: require('./util/Snowflake'), - SnowflakeUtil: require('./util/Snowflake'), + SnowflakeUtil: require('./util/SnowflakeUtil'), Structures: require('./util/Structures'), SystemChannelFlags: require('./util/SystemChannelFlags'), UserFlags: require('./util/UserFlags'), diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 7e4104524..f27344250 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -5,7 +5,7 @@ const { Error, TypeError, RangeError } = require('../errors'); const GuildMember = require('../structures/GuildMember'); const Collection = require('../util/Collection'); const { Events, OPCodes } = require('../util/Constants'); -const SnowflakeUtil = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); /** * Manages API methods for GuildMembers and stores their cache. diff --git a/src/structures/Channel.js b/src/structures/Channel.js index 63ce08b44..f0c28eb3f 100644 --- a/src/structures/Channel.js +++ b/src/structures/Channel.js @@ -2,7 +2,7 @@ const Base = require('./Base'); const { ChannelTypes } = require('../util/Constants'); -const Snowflake = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); /** * Represents any channel on Discord. @@ -51,7 +51,7 @@ class Channel extends Base { * @readonly */ get createdTimestamp() { - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/Emoji.js b/src/structures/Emoji.js index 86119d309..160f3a710 100644 --- a/src/structures/Emoji.js +++ b/src/structures/Emoji.js @@ -1,7 +1,7 @@ 'use strict'; const Base = require('./Base'); -const Snowflake = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); /** * Represents an emoji, see {@link GuildEmoji} and {@link ReactionEmoji}. @@ -62,7 +62,7 @@ class Emoji extends Base { */ get createdTimestamp() { if (!this.id) return null; - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/Guild.js b/src/structures/Guild.js index 09fccda8f..31dc5de01 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -24,7 +24,7 @@ const { ExplicitContentFilterLevels, } = require('../util/Constants'); const DataResolver = require('../util/DataResolver'); -const Snowflake = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); const SystemChannelFlags = require('../util/SystemChannelFlags'); const Util = require('../util/Util'); @@ -444,7 +444,7 @@ class Guild extends Base { * @readonly */ get createdTimestamp() { - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/GuildAuditLogs.js b/src/structures/GuildAuditLogs.js index 81a3d0d78..cdb1bfad3 100644 --- a/src/structures/GuildAuditLogs.js +++ b/src/structures/GuildAuditLogs.js @@ -5,7 +5,7 @@ const Webhook = require('./Webhook'); const Collection = require('../util/Collection'); const { OverwriteTypes, PartialTypes } = require('../util/Constants'); const Permissions = require('../util/Permissions'); -const Snowflake = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); const Util = require('../util/Util'); /** @@ -491,7 +491,7 @@ class GuildAuditLogsEntry { * @readonly */ get createdTimestamp() { - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/Message.js b/src/structures/Message.js index ea01220ae..867233611 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -13,7 +13,7 @@ const Collection = require('../util/Collection'); const { MessageTypes, SystemMessageTypes } = require('../util/Constants'); const MessageFlags = require('../util/MessageFlags'); const Permissions = require('../util/Permissions'); -const SnowflakeUtil = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); const Util = require('../util/Util'); /** diff --git a/src/structures/Role.js b/src/structures/Role.js index f5e2de1a2..91922c097 100644 --- a/src/structures/Role.js +++ b/src/structures/Role.js @@ -3,7 +3,7 @@ const Base = require('./Base'); const { Error, TypeError } = require('../errors'); const Permissions = require('../util/Permissions'); -const Snowflake = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); const Util = require('../util/Util'); /** @@ -110,7 +110,7 @@ class Role extends Base { * @readonly */ get createdTimestamp() { - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/Team.js b/src/structures/Team.js index a28c5a231..f987a8715 100644 --- a/src/structures/Team.js +++ b/src/structures/Team.js @@ -3,7 +3,7 @@ const Base = require('./Base'); const TeamMember = require('./TeamMember'); const Collection = require('../util/Collection'); -const Snowflake = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); /** * Represents a Client OAuth2 Application Team. @@ -67,7 +67,7 @@ class Team extends Base { * @readonly */ get createdTimestamp() { - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/User.js b/src/structures/User.js index bddb94825..59a4a7925 100644 --- a/src/structures/User.js +++ b/src/structures/User.js @@ -3,7 +3,7 @@ const Base = require('./Base'); const TextBasedChannel = require('./interfaces/TextBasedChannel'); const { Error } = require('../errors'); -const Snowflake = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); const UserFlags = require('../util/UserFlags'); let Structures; @@ -116,7 +116,7 @@ class User extends Base { * @readonly */ get createdTimestamp() { - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/Webhook.js b/src/structures/Webhook.js index 66a6e650e..6b8d2ca94 100644 --- a/src/structures/Webhook.js +++ b/src/structures/Webhook.js @@ -4,7 +4,7 @@ const APIMessage = require('./APIMessage'); const Channel = require('./Channel'); const { WebhookTypes } = require('../util/Constants'); const DataResolver = require('../util/DataResolver'); -const Snowflake = require('../util/Snowflake'); +const SnowflakeUtil = require('../util/SnowflakeUtil'); /** * Represents a webhook. @@ -281,7 +281,7 @@ class Webhook { * @readonly */ get createdTimestamp() { - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/interfaces/Application.js b/src/structures/interfaces/Application.js index 14db69e46..c8b198fbb 100644 --- a/src/structures/interfaces/Application.js +++ b/src/structures/interfaces/Application.js @@ -1,7 +1,7 @@ 'use strict'; const { ClientApplicationAssetTypes, Endpoints } = require('../../util/Constants'); -const Snowflake = require('../../util/Snowflake'); +const SnowflakeUtil = require('../../util/SnowflakeUtil'); const Base = require('../Base'); const AssetTypes = Object.keys(ClientApplicationAssetTypes); @@ -48,7 +48,7 @@ class Application extends Base { * @readonly */ get createdTimestamp() { - return Snowflake.deconstruct(this.id).timestamp; + return SnowflakeUtil.deconstruct(this.id).timestamp; } /** diff --git a/src/structures/interfaces/TextBasedChannel.js b/src/structures/interfaces/TextBasedChannel.js index b2100569c..6d4690548 100644 --- a/src/structures/interfaces/TextBasedChannel.js +++ b/src/structures/interfaces/TextBasedChannel.js @@ -3,7 +3,7 @@ /* eslint-disable import/order */ const MessageCollector = require('../MessageCollector'); const APIMessage = require('../APIMessage'); -const Snowflake = require('../../util/Snowflake'); +const SnowflakeUtil = require('../../util/SnowflakeUtil'); const Collection = require('../../util/Collection'); const { RangeError, TypeError } = require('../../errors'); @@ -317,7 +317,7 @@ class TextBasedChannel { if (Array.isArray(messages) || messages instanceof Collection) { let messageIDs = messages instanceof Collection ? messages.keyArray() : messages.map(m => m.id || m); if (filterOld) { - messageIDs = messageIDs.filter(id => Date.now() - Snowflake.deconstruct(id).date.getTime() < 1209600000); + messageIDs = messageIDs.filter(id => Date.now() - SnowflakeUtil.deconstruct(id).timestamp < 1209600000); } if (messageIDs.length === 0) return new Collection(); if (messageIDs.length === 1) { diff --git a/src/util/Snowflake.js b/src/util/SnowflakeUtil.js similarity index 94% rename from src/util/Snowflake.js rename to src/util/SnowflakeUtil.js index bf1309c7c..2153a0ccf 100644 --- a/src/util/Snowflake.js +++ b/src/util/SnowflakeUtil.js @@ -1,6 +1,6 @@ 'use strict'; -const Util = require('../util/Util'); +const Util = require('./Util'); // Discord epoch (2015-01-01T00:00:00.000Z) const EPOCH = 1420070400000; @@ -64,20 +64,16 @@ class SnowflakeUtil { */ static deconstruct(snowflake) { const BINARY = Util.idToBinary(snowflake).toString(2).padStart(64, '0'); - const res = { + return { timestamp: parseInt(BINARY.substring(0, 42), 2) + EPOCH, + get date() { + return new Date(this.timestamp); + }, workerID: parseInt(BINARY.substring(42, 47), 2), processID: parseInt(BINARY.substring(47, 52), 2), increment: parseInt(BINARY.substring(52, 64), 2), binary: BINARY, }; - Object.defineProperty(res, 'date', { - get: function get() { - return new Date(this.timestamp); - }, - enumerable: true, - }); - return res; } /**