From 3c62bd2d47dbd52b6b431014be87f584ae3d5309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Rom=C3=A1n?= Date: Tue, 28 Dec 2021 10:15:24 +0100 Subject: [PATCH] refactor: import timers, `process`, and `Buffer` from `node:` (#7157) Co-authored-by: muchnameless <12682826+muchnameless@users.noreply.github.com> Co-authored-by: Almeida --- .eslintrc.json | 26 +++++++++++++++++++++- src/WebSocket.js | 1 + src/client/Client.js | 2 ++ src/client/actions/GuildDelete.js | 1 + src/client/actions/InteractionCreate.js | 1 + src/client/actions/MessageCreate.js | 1 + src/client/websocket/WebSocketManager.js | 1 + src/client/websocket/WebSocketShard.js | 1 + src/managers/ChannelManager.js | 1 + src/managers/GuildChannelManager.js | 1 + src/managers/GuildManager.js | 2 ++ src/managers/GuildMemberManager.js | 2 ++ src/managers/PermissionOverwriteManager.js | 1 + src/managers/RoleManager.js | 1 + src/rest/APIRequest.js | 1 + src/rest/RESTManager.js | 1 + src/rest/RequestHandler.js | 1 + src/sharding/Shard.js | 2 ++ src/sharding/ShardClientUtil.js | 1 + src/sharding/ShardingManager.js | 1 + src/structures/Channel.js | 1 + src/structures/Emoji.js | 1 + src/structures/Guild.js | 1 + src/structures/GuildMember.js | 1 + src/structures/GuildTemplate.js | 1 + src/structures/Message.js | 1 + src/structures/MessageEmbed.js | 1 + src/structures/MessagePayload.js | 1 + src/structures/Role.js | 1 + src/structures/StageInstance.js | 1 + src/structures/Sticker.js | 1 + src/structures/VoiceChannel.js | 1 + src/structures/Webhook.js | 1 + src/structures/interfaces/Collector.js | 1 + src/util/Constants.js | 1 + src/util/DataResolver.js | 1 + src/util/LimitedCollection.js | 1 + src/util/Options.js | 2 ++ src/util/Sweepers.js | 1 + src/util/Util.js | 1 + test/sendtest.js | 5 +++-- test/shard.js | 2 ++ test/sharder.js | 1 + test/tester1000.js | 1 + test/tester2000.js | 1 + test/webhooktest.js | 4 ++-- 46 files changed, 79 insertions(+), 5 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 3d85319b927d..cba7fbbe82fb 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -171,6 +171,30 @@ "prefer-template": "error", "rest-spread-spacing": "error", "template-curly-spacing": "error", - "yield-star-spacing": "error" + "yield-star-spacing": "error", + + "no-restricted-globals": [ + "error", + { + "name": "Buffer", + "message": "Import Buffer from `node:buffer` instead" + }, + { + "name": "process", + "message": "Import process from `node:process` instead" + }, + { + "name": "setTimeout", + "message": "Import setTimeout from `node:timers` instead" + }, + { + "name": "setInterval", + "message": "Import setInterval from `node:timers` instead" + }, + { + "name": "setImmediate", + "message": "Import setImmediate from `node:timers` instead" + } + ] } } diff --git a/src/WebSocket.js b/src/WebSocket.js index c12db834fd4a..efbd6f9a9587 100644 --- a/src/WebSocket.js +++ b/src/WebSocket.js @@ -1,6 +1,7 @@ 'use strict'; let erlpack; +const { Buffer } = require('node:buffer'); try { erlpack = require('erlpack'); diff --git a/src/client/Client.js b/src/client/Client.js index ce769c2b9506..d770e8f01dd3 100644 --- a/src/client/Client.js +++ b/src/client/Client.js @@ -1,5 +1,7 @@ 'use strict'; +const process = require('node:process'); +const { setInterval } = require('node:timers'); const { Collection } = require('@discordjs/collection'); const BaseClient = require('./BaseClient'); const ActionsManager = require('./actions/ActionsManager'); diff --git a/src/client/actions/GuildDelete.js b/src/client/actions/GuildDelete.js index 1312d4ef4ba4..8ab860b37b11 100644 --- a/src/client/actions/GuildDelete.js +++ b/src/client/actions/GuildDelete.js @@ -1,5 +1,6 @@ 'use strict'; +const { setTimeout } = require('node:timers'); const Action = require('./Action'); const { deletedGuilds } = require('../../structures/Guild'); const { Events } = require('../../util/Constants'); diff --git a/src/client/actions/InteractionCreate.js b/src/client/actions/InteractionCreate.js index 2671c8a9ce7c..04774a6b442b 100644 --- a/src/client/actions/InteractionCreate.js +++ b/src/client/actions/InteractionCreate.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Action = require('./Action'); const AutocompleteInteraction = require('../../structures/AutocompleteInteraction'); const ButtonInteraction = require('../../structures/ButtonInteraction'); diff --git a/src/client/actions/MessageCreate.js b/src/client/actions/MessageCreate.js index 2b5a1bb8e0e0..894886e64301 100644 --- a/src/client/actions/MessageCreate.js +++ b/src/client/actions/MessageCreate.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Action = require('./Action'); const { Events } = require('../../util/Constants'); diff --git a/src/client/websocket/WebSocketManager.js b/src/client/websocket/WebSocketManager.js index 3589ca419fe1..65a23f96e338 100644 --- a/src/client/websocket/WebSocketManager.js +++ b/src/client/websocket/WebSocketManager.js @@ -1,6 +1,7 @@ 'use strict'; const EventEmitter = require('node:events'); +const { setImmediate } = require('node:timers'); const { setTimeout: sleep } = require('node:timers/promises'); const { Collection } = require('@discordjs/collection'); const { RPCErrorCodes } = require('discord-api-types/v9'); diff --git a/src/client/websocket/WebSocketShard.js b/src/client/websocket/WebSocketShard.js index 70ace4fce8cb..35174f6d88ff 100644 --- a/src/client/websocket/WebSocketShard.js +++ b/src/client/websocket/WebSocketShard.js @@ -1,6 +1,7 @@ 'use strict'; const EventEmitter = require('node:events'); +const { setTimeout, setInterval } = require('node:timers'); const WebSocket = require('../../WebSocket'); const { Status, Events, ShardEvents, Opcodes, WSEvents } = require('../../util/Constants'); const Intents = require('../../util/Intents'); diff --git a/src/managers/ChannelManager.js b/src/managers/ChannelManager.js index 802f765e5cbb..06b25dc74825 100644 --- a/src/managers/ChannelManager.js +++ b/src/managers/ChannelManager.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const CachedManager = require('./CachedManager'); const { Channel } = require('../structures/Channel'); const { Events, ThreadChannelTypes } = require('../util/Constants'); diff --git a/src/managers/GuildChannelManager.js b/src/managers/GuildChannelManager.js index 658d3a1003d7..687816f97ab6 100644 --- a/src/managers/GuildChannelManager.js +++ b/src/managers/GuildChannelManager.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { Collection } = require('@discordjs/collection'); const CachedManager = require('./CachedManager'); const ThreadManager = require('./ThreadManager'); diff --git a/src/managers/GuildManager.js b/src/managers/GuildManager.js index 6b8cbf2701af..ad6c0d056fe4 100644 --- a/src/managers/GuildManager.js +++ b/src/managers/GuildManager.js @@ -1,5 +1,7 @@ 'use strict'; +const process = require('node:process'); +const { setTimeout } = require('node:timers'); const { Collection } = require('@discordjs/collection'); const CachedManager = require('./CachedManager'); const { Guild } = require('../structures/Guild'); diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 45c4d3f8a864..9a1ddb9ce6a0 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -1,5 +1,7 @@ 'use strict'; +const { Buffer } = require('node:buffer'); +const { setTimeout } = require('node:timers'); const { Collection } = require('@discordjs/collection'); const CachedManager = require('./CachedManager'); const { Error, TypeError, RangeError } = require('../errors'); diff --git a/src/managers/PermissionOverwriteManager.js b/src/managers/PermissionOverwriteManager.js index e93b1f794746..8dbc881dcd5b 100644 --- a/src/managers/PermissionOverwriteManager.js +++ b/src/managers/PermissionOverwriteManager.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { Collection } = require('@discordjs/collection'); const CachedManager = require('./CachedManager'); const { TypeError } = require('../errors'); diff --git a/src/managers/RoleManager.js b/src/managers/RoleManager.js index a947c29af14e..94f35b4f0714 100644 --- a/src/managers/RoleManager.js +++ b/src/managers/RoleManager.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { Collection } = require('@discordjs/collection'); const CachedManager = require('./CachedManager'); const { TypeError } = require('../errors'); diff --git a/src/rest/APIRequest.js b/src/rest/APIRequest.js index 86d127357ce9..d3b5d5e94929 100644 --- a/src/rest/APIRequest.js +++ b/src/rest/APIRequest.js @@ -1,6 +1,7 @@ 'use strict'; const https = require('node:https'); +const { setTimeout } = require('node:timers'); const FormData = require('form-data'); const fetch = require('node-fetch'); const { UserAgent } = require('../util/Constants'); diff --git a/src/rest/RESTManager.js b/src/rest/RESTManager.js index 7a438aa6875d..d553c9fe0e30 100644 --- a/src/rest/RESTManager.js +++ b/src/rest/RESTManager.js @@ -1,5 +1,6 @@ 'use strict'; +const { setInterval } = require('node:timers'); const { Collection } = require('@discordjs/collection'); const APIRequest = require('./APIRequest'); const routeBuilder = require('./APIRouter'); diff --git a/src/rest/RequestHandler.js b/src/rest/RequestHandler.js index 5ffb5897c150..355e0ea9a49c 100644 --- a/src/rest/RequestHandler.js +++ b/src/rest/RequestHandler.js @@ -1,5 +1,6 @@ 'use strict'; +const { setTimeout } = require('node:timers'); const { setTimeout: sleep } = require('node:timers/promises'); const { AsyncQueue } = require('@sapphire/async-queue'); const DiscordAPIError = require('./DiscordAPIError'); diff --git a/src/sharding/Shard.js b/src/sharding/Shard.js index f58a194a2860..67d9d03365b8 100644 --- a/src/sharding/Shard.js +++ b/src/sharding/Shard.js @@ -2,6 +2,8 @@ const EventEmitter = require('node:events'); const path = require('node:path'); +const process = require('node:process'); +const { setTimeout } = require('node:timers'); const { setTimeout: sleep } = require('node:timers/promises'); const { Error } = require('../errors'); const Util = require('../util/Util'); diff --git a/src/sharding/ShardClientUtil.js b/src/sharding/ShardClientUtil.js index cfa312038ff5..81cba4263ea1 100644 --- a/src/sharding/ShardClientUtil.js +++ b/src/sharding/ShardClientUtil.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { Error } = require('../errors'); const { Events } = require('../util/Constants'); const Util = require('../util/Util'); diff --git a/src/sharding/ShardingManager.js b/src/sharding/ShardingManager.js index 1e62aac33152..5ddf5ab0b683 100644 --- a/src/sharding/ShardingManager.js +++ b/src/sharding/ShardingManager.js @@ -3,6 +3,7 @@ const EventEmitter = require('node:events'); const fs = require('node:fs'); const path = require('node:path'); +const process = require('node:process'); const { setTimeout: sleep } = require('node:timers/promises'); const { Collection } = require('@discordjs/collection'); const Shard = require('./Shard'); diff --git a/src/structures/Channel.js b/src/structures/Channel.js index fc4508b34374..cec50c7bf162 100644 --- a/src/structures/Channel.js +++ b/src/structures/Channel.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Base = require('./Base'); let CategoryChannel; let DMChannel; diff --git a/src/structures/Emoji.js b/src/structures/Emoji.js index 3c60c70a088c..be7ae17fa903 100644 --- a/src/structures/Emoji.js +++ b/src/structures/Emoji.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Base = require('./Base'); const SnowflakeUtil = require('../util/SnowflakeUtil'); diff --git a/src/structures/Guild.js b/src/structures/Guild.js index 66c0e460b328..4d0db2b0fb0f 100644 --- a/src/structures/Guild.js +++ b/src/structures/Guild.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { Collection } = require('@discordjs/collection'); const AnonymousGuild = require('./AnonymousGuild'); const GuildAuditLogs = require('./GuildAuditLogs'); diff --git a/src/structures/GuildMember.js b/src/structures/GuildMember.js index 58f1f463f98e..3837c139fbb2 100644 --- a/src/structures/GuildMember.js +++ b/src/structures/GuildMember.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Base = require('./Base'); const VoiceState = require('./VoiceState'); const TextBasedChannel = require('./interfaces/TextBasedChannel'); diff --git a/src/structures/GuildTemplate.js b/src/structures/GuildTemplate.js index c1040eb34463..08f327dfd8b5 100644 --- a/src/structures/GuildTemplate.js +++ b/src/structures/GuildTemplate.js @@ -1,5 +1,6 @@ 'use strict'; +const { setTimeout } = require('node:timers'); const Base = require('./Base'); const { Events } = require('../util/Constants'); const DataResolver = require('../util/DataResolver'); diff --git a/src/structures/Message.js b/src/structures/Message.js index 59dac9894db0..d02f3fc30453 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { Collection } = require('@discordjs/collection'); const Base = require('./Base'); const BaseMessageComponent = require('./BaseMessageComponent'); diff --git a/src/structures/MessageEmbed.js b/src/structures/MessageEmbed.js index 3823334309df..5cc2685fcd96 100644 --- a/src/structures/MessageEmbed.js +++ b/src/structures/MessageEmbed.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { RangeError } = require('../errors'); const Util = require('../util/Util'); diff --git a/src/structures/MessagePayload.js b/src/structures/MessagePayload.js index e0742a36d002..339b8f9abf69 100644 --- a/src/structures/MessagePayload.js +++ b/src/structures/MessagePayload.js @@ -1,5 +1,6 @@ 'use strict'; +const { Buffer } = require('node:buffer'); const BaseMessageComponent = require('./BaseMessageComponent'); const MessageEmbed = require('./MessageEmbed'); const { RangeError } = require('../errors'); diff --git a/src/structures/Role.js b/src/structures/Role.js index 00e67a8e3c3f..f0ee3a869792 100644 --- a/src/structures/Role.js +++ b/src/structures/Role.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Base = require('./Base'); const { Error } = require('../errors'); const Permissions = require('../util/Permissions'); diff --git a/src/structures/StageInstance.js b/src/structures/StageInstance.js index 2b2b8fb7c90d..040d1e04df66 100644 --- a/src/structures/StageInstance.js +++ b/src/structures/StageInstance.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Base = require('./Base'); const { PrivacyLevels } = require('../util/Constants'); const SnowflakeUtil = require('../util/SnowflakeUtil'); diff --git a/src/structures/Sticker.js b/src/structures/Sticker.js index e73fc03a1bdc..a3347375957d 100644 --- a/src/structures/Sticker.js +++ b/src/structures/Sticker.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Base = require('./Base'); const { StickerFormatTypes, StickerTypes } = require('../util/Constants'); const SnowflakeUtil = require('../util/SnowflakeUtil'); diff --git a/src/structures/VoiceChannel.js b/src/structures/VoiceChannel.js index 7327c4879925..d35377152e6c 100644 --- a/src/structures/VoiceChannel.js +++ b/src/structures/VoiceChannel.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const BaseGuildVoiceChannel = require('./BaseGuildVoiceChannel'); const Permissions = require('../util/Permissions'); diff --git a/src/structures/Webhook.js b/src/structures/Webhook.js index 123411278c44..022270a875cd 100644 --- a/src/structures/Webhook.js +++ b/src/structures/Webhook.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const MessagePayload = require('./MessagePayload'); const { Error } = require('../errors'); const { WebhookTypes } = require('../util/Constants'); diff --git a/src/structures/interfaces/Collector.js b/src/structures/interfaces/Collector.js index 6d84e1f23e78..c0793fd03cf6 100644 --- a/src/structures/interfaces/Collector.js +++ b/src/structures/interfaces/Collector.js @@ -1,6 +1,7 @@ 'use strict'; const EventEmitter = require('node:events'); +const { setTimeout } = require('node:timers'); const { Collection } = require('@discordjs/collection'); const { TypeError } = require('../../errors'); const Util = require('../../util/Util'); diff --git a/src/util/Constants.js b/src/util/Constants.js index 59f8381fca3e..11c455ec1a31 100644 --- a/src/util/Constants.js +++ b/src/util/Constants.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const Package = (exports.Package = require('../../package.json')); const { Error, RangeError, TypeError } = require('../errors'); diff --git a/src/util/DataResolver.js b/src/util/DataResolver.js index d00df6c388de..d7d9eb7acc88 100644 --- a/src/util/DataResolver.js +++ b/src/util/DataResolver.js @@ -1,5 +1,6 @@ 'use strict'; +const { Buffer } = require('node:buffer'); const fs = require('node:fs'); const path = require('node:path'); const stream = require('node:stream'); diff --git a/src/util/LimitedCollection.js b/src/util/LimitedCollection.js index 17b270242bf4..8ebda0e34bf8 100644 --- a/src/util/LimitedCollection.js +++ b/src/util/LimitedCollection.js @@ -1,5 +1,6 @@ 'use strict'; +const { setInterval } = require('node:timers'); const { Collection } = require('@discordjs/collection'); const { _cleanupSymbol } = require('./Constants.js'); const Sweepers = require('./Sweepers.js'); diff --git a/src/util/Options.js b/src/util/Options.js index 2ee1f0910af9..aae51739a7d2 100644 --- a/src/util/Options.js +++ b/src/util/Options.js @@ -1,5 +1,7 @@ 'use strict'; +const process = require('node:process'); + /** * Rate limit data * @typedef {Object} RateLimitData diff --git a/src/util/Sweepers.js b/src/util/Sweepers.js index 4f0c1891edbc..ea3bf7032db4 100644 --- a/src/util/Sweepers.js +++ b/src/util/Sweepers.js @@ -1,5 +1,6 @@ 'use strict'; +const { setInterval } = require('node:timers'); const { Events, ThreadChannelTypes, SweeperKeys } = require('./Constants'); const { TypeError } = require('../errors/DJSError.js'); diff --git a/src/util/Util.js b/src/util/Util.js index f7d5487f51e3..7901f7781ad8 100644 --- a/src/util/Util.js +++ b/src/util/Util.js @@ -1,6 +1,7 @@ 'use strict'; const { parse } = require('node:path'); +const process = require('node:process'); const { Collection } = require('@discordjs/collection'); const fetch = require('node-fetch'); const { Colors, Endpoints } = require('./Constants'); diff --git a/test/sendtest.js b/test/sendtest.js index 3f7f712a7488..621083eb90ae 100644 --- a/test/sendtest.js +++ b/test/sendtest.js @@ -2,6 +2,8 @@ const fs = require('node:fs'); const path = require('node:path'); +const process = require('node:process'); +const { setTimeout: sleep } = require('node:timers/promises'); const util = require('node:util'); const fetch = require('node-fetch'); const { owner, token } = require('./auth.js'); @@ -12,7 +14,6 @@ const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_ const buffer = l => fetch(l).then(res => res.buffer()); const read = util.promisify(fs.readFile); const readStream = fs.createReadStream; -const wait = util.promisify(setTimeout); const linkA = 'https://lolisafe.moe/iiDMtAXA.png'; const linkB = 'https://lolisafe.moe/9hSpedPh.png'; @@ -97,7 +98,7 @@ client.on('messageCreate', async message => { for (const [i, test] of tests.entries()) { await message.channel.send(`**#${i}**\n\`\`\`js\n${test.toString()}\`\`\``); await test(message).catch(e => message.channel.send(`Error!\n\`\`\`\n${e}\`\`\``)); - await wait(1_000); + await sleep(1_000); } /* eslint-enable no-await-in-loop */ } else if (match) { diff --git a/test/shard.js b/test/shard.js index c0e8e272568e..25751d940159 100644 --- a/test/shard.js +++ b/test/shard.js @@ -1,5 +1,7 @@ 'use strict'; +const process = require('node:process'); +const { setTimeout } = require('node:timers'); const { token } = require('./auth.json'); const { Client, Intents } = require('../src'); diff --git a/test/sharder.js b/test/sharder.js index 9c1755038d27..a99da1b48cd1 100644 --- a/test/sharder.js +++ b/test/sharder.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { token } = require('./auth'); const Discord = require('../src'); diff --git a/test/tester1000.js b/test/tester1000.js index ac63f5ff6c00..cf9a3661883e 100644 --- a/test/tester1000.js +++ b/test/tester1000.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { token, prefix, owner } = require('./auth.js'); const { Client, Intents } = require('../src'); diff --git a/test/tester2000.js b/test/tester2000.js index 896161ad22de..ac4e14801d4d 100644 --- a/test/tester2000.js +++ b/test/tester2000.js @@ -1,5 +1,6 @@ 'use strict'; +const process = require('node:process'); const { token, prefix, owner } = require('./auth.js'); const { Client, Options, Intents, Formatters } = require('../src'); diff --git a/test/webhooktest.js b/test/webhooktest.js index f42285a79a54..55d09bd713ed 100644 --- a/test/webhooktest.js +++ b/test/webhooktest.js @@ -2,6 +2,7 @@ const fs = require('node:fs'); const path = require('node:path'); +const { setTimeout: sleep } = require('node:timers/promises'); const util = require('node:util'); const fetch = require('node-fetch'); const { owner, token, webhookChannel, webhookToken } = require('./auth.js'); @@ -12,7 +13,6 @@ const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_ const buffer = l => fetch(l).then(res => res.buffer()); const read = util.promisify(fs.readFile); const readStream = fs.createReadStream; -const wait = util.promisify(setTimeout); const linkA = 'https://lolisafe.moe/iiDMtAXA.png'; const linkB = 'https://lolisafe.moe/9hSpedPh.png'; @@ -107,7 +107,7 @@ client.on('messageCreate', async message => { for (const [i, test] of tests.entries()) { await message.channel.send(`**#${i}-Hook: ${type}**\n\`\`\`js\n${test.toString()}\`\`\``); await test(message, hook).catch(e => message.channel.send(`Error!\n\`\`\`\n${e}\`\`\``)); - await wait(1_000); + await sleep(1_000); } } /* eslint-enable no-await-in-loop */