Skip to content

Commit

Permalink
refactor(SnowflakeUtil): switch to @sapphire/snowflake (#7079)
Browse files Browse the repository at this point in the history
  • Loading branch information
kyranet committed Jan 8, 2022
1 parent ae876d9 commit e082dfb
Show file tree
Hide file tree
Showing 23 changed files with 56 additions and 145 deletions.
1 change: 1 addition & 0 deletions packages/discord.js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
"@discordjs/builders": "^0.11.0",
"@discordjs/collection": "^0.4.0",
"@sapphire/async-queue": "^1.1.9",
"@sapphire/snowflake": "^3.0.0",
"@types/node-fetch": "^2.5.12",
"@types/ws": "^8.2.2",
"discord-api-types": "^0.26.1",
Expand Down
13 changes: 13 additions & 0 deletions packages/discord.js/src/client/Client.js
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,19 @@ class Client extends BaseClient {

module.exports = Client;

/**
* A {@link https://developer.twitter.com/en/docs/twitter-ids Twitter snowflake},
* except the epoch is 2015-01-01T00:00:00.000Z.
*
* If we have a snowflake '266241948824764416' we can represent it as binary:
* ```
* 64 22 17 12 0
* 000000111011000111100001101001000101000000 00001 00000 000000000000
* number of ms since Discord epoch worker pid increment
* ```
* @typedef {string} Snowflake
*/

/**
* Emitted for general warnings.
* @event Client#warn
Expand Down
2 changes: 1 addition & 1 deletion packages/discord.js/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ exports.MessageFlags = require('./util/MessageFlags');
exports.Options = require('./util/Options');
exports.Permissions = require('./util/Permissions');
exports.RateLimitError = require('./rest/RateLimitError');
exports.SnowflakeUtil = require('./util/SnowflakeUtil');
exports.SnowflakeUtil = require('@sapphire/snowflake').DiscordSnowflake;
exports.Sweepers = require('./util/Sweepers');
exports.SystemChannelFlags = require('./util/SystemChannelFlags');
exports.ThreadMemberFlags = require('./util/ThreadMemberFlags');
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/managers/GuildMemberManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
const { Buffer } = require('node:buffer');
const { setTimeout } = require('node:timers');
const { Collection } = require('@discordjs/collection');
const { DiscordSnowflake } = require('@sapphire/snowflake');
const CachedManager = require('./CachedManager');
const { Error, TypeError, RangeError } = require('../errors');
const BaseGuildVoiceChannel = require('../structures/BaseGuildVoiceChannel');
const { GuildMember } = require('../structures/GuildMember');
const { Role } = require('../structures/Role');
const { Events, Opcodes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Manages API methods for GuildMembers and stores their cache.
Expand Down Expand Up @@ -414,7 +414,7 @@ class GuildMemberManager extends CachedManager {
user: user_ids,
query,
time = 120e3,
nonce = SnowflakeUtil.generate(),
nonce = DiscordSnowflake.generate().toString(),
} = {}) {
return new Promise((resolve, reject) => {
if (!query && !user_ids) query = '';
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/ApplicationCommand.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const ApplicationCommandPermissionsManager = require('../managers/ApplicationCommandPermissionsManager');
const { ApplicationCommandOptionTypes, ApplicationCommandTypes, ChannelTypes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents an application command.
Expand Down Expand Up @@ -103,7 +103,7 @@ class ApplicationCommand extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/BaseGuild.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* The base class for {@link Guild}, {@link OAuth2Guild} and {@link InviteGuild}.
Expand Down Expand Up @@ -43,7 +43,7 @@ class BaseGuild extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/Channel.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
let CategoryChannel;
let DMChannel;
Expand All @@ -10,7 +11,6 @@ let TextChannel;
let ThreadChannel;
let VoiceChannel;
const { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents any channel on Discord.
Expand Down Expand Up @@ -45,7 +45,7 @@ class Channel extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/Emoji.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents raw emoji data from the API
Expand Down Expand Up @@ -62,7 +62,7 @@ class Emoji extends Base {
* @readonly
*/
get createdTimestamp() {
return this.id && SnowflakeUtil.timestampFrom(this.id);
return this.id && DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/GuildAuditLogs.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
'use strict';

const { Collection } = require('@discordjs/collection');
const { DiscordSnowflake } = require('@sapphire/snowflake');
const { GuildScheduledEvent } = require('./GuildScheduledEvent');
const Integration = require('./Integration');
const Invite = require('./Invite');
const { StageInstance } = require('./StageInstance');
const { Sticker } = require('./Sticker');
const Webhook = require('./Webhook');
const { OverwriteTypes, PartialTypes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil');
const Util = require('../util/Util');

/**
Expand Down Expand Up @@ -614,7 +614,7 @@ class GuildAuditLogsEntry {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/GuildPreview.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

const { Collection } = require('@discordjs/collection');
const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const GuildPreviewEmoji = require('./GuildPreviewEmoji');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents the data about the guild any bot can preview, connected to the specified guild.
Expand Down Expand Up @@ -110,7 +110,7 @@ class GuildPreview extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/Interaction.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const { InteractionTypes, MessageComponentTypes, ApplicationCommandTypes } = require('../util/Constants');
const Permissions = require('../util/Permissions');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents an interaction.
Expand Down Expand Up @@ -82,7 +82,7 @@ class Interaction extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/Message.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict';

const { Collection } = require('@discordjs/collection');
const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const BaseMessageComponent = require('./BaseMessageComponent');
const ClientApplication = require('./ClientApplication');
Expand All @@ -16,7 +17,6 @@ const ReactionManager = require('../managers/ReactionManager');
const { InteractionTypes, MessageTypes, SystemMessageTypes } = require('../util/Constants');
const MessageFlags = require('../util/MessageFlags');
const Permissions = require('../util/Permissions');
const SnowflakeUtil = require('../util/SnowflakeUtil');
const Util = require('../util/Util');

/**
Expand Down Expand Up @@ -53,7 +53,7 @@ class Message extends Base {
* The timestamp the message was sent at
* @type {number}
*/
this.createdTimestamp = SnowflakeUtil.timestampFrom(this.id);
this.createdTimestamp = DiscordSnowflake.timestampFrom(this.id);

if ('type' in data) {
/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/Role.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const { Error } = require('../errors');
const Permissions = require('../util/Permissions');
const SnowflakeUtil = require('../util/SnowflakeUtil');
const Util = require('../util/Util');

/**
Expand Down Expand Up @@ -128,7 +128,7 @@ class Role extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/StageInstance.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const { PrivacyLevels } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents a stage instance.
Expand Down Expand Up @@ -132,7 +132,7 @@ class StageInstance extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/Sticker.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const { StickerFormatTypes, StickerTypes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents a Sticker.
Expand Down Expand Up @@ -125,7 +125,7 @@ class Sticker extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/StickerPack.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

const { Collection } = require('@discordjs/collection');
const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const { Sticker } = require('./Sticker');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents a pack of standard stickers.
Expand Down Expand Up @@ -61,7 +61,7 @@ class StickerPack extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/Team.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

const { Collection } = require('@discordjs/collection');
const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const TeamMember = require('./TeamMember');
const SnowflakeUtil = require('../util/SnowflakeUtil');

/**
* Represents a Client OAuth2 Application Team.
Expand Down Expand Up @@ -76,7 +76,7 @@ class Team extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/User.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const Base = require('./Base');
const TextBasedChannel = require('./interfaces/TextBasedChannel');
const SnowflakeUtil = require('../util/SnowflakeUtil');
const UserFlags = require('../util/UserFlags');

/**
Expand Down Expand Up @@ -126,7 +126,7 @@ class User extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/Webhook.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
'use strict';

const process = require('node:process');
const { DiscordSnowflake } = require('@sapphire/snowflake');
const MessagePayload = require('./MessagePayload');
const { Error } = require('../errors');
const { WebhookTypes } = require('../util/Constants');
const DataResolver = require('../util/DataResolver');
const SnowflakeUtil = require('../util/SnowflakeUtil');

let deprecationEmittedForFetchMessage = false;

Expand Down Expand Up @@ -380,7 +380,7 @@ class Webhook {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions packages/discord.js/src/structures/interfaces/Application.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';

const { DiscordSnowflake } = require('@sapphire/snowflake');
const { ClientApplicationAssetTypes, Endpoints } = require('../../util/Constants');
const SnowflakeUtil = require('../../util/SnowflakeUtil');
const Base = require('../Base');

const AssetTypes = Object.keys(ClientApplicationAssetTypes);
Expand Down Expand Up @@ -60,7 +60,7 @@ class Application extends Base {
* @readonly
*/
get createdTimestamp() {
return SnowflakeUtil.timestampFrom(this.id);
return DiscordSnowflake.timestampFrom(this.id);
}

/**
Expand Down
Loading

0 comments on commit e082dfb

Please sign in to comment.