From 51583320d3b0f6452cd96bad1021f2a57e4cc6f6 Mon Sep 17 00:00:00 2001 From: Khafra <42794878+KhafraDev@users.noreply.github.com> Date: Wed, 23 Feb 2022 02:40:00 -0500 Subject: [PATCH] feat(discord.js): partial transition to undici (#7482) --- packages/discord.js/package.json | 2 +- packages/discord.js/src/util/DataResolver.js | 4 ++-- packages/discord.js/src/util/Util.js | 2 +- packages/discord.js/test/sendtest.js | 7 +++++-- packages/discord.js/test/webhooktest.js | 7 +++++-- yarn.lock | 9 ++++++++- 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/packages/discord.js/package.json b/packages/discord.js/package.json index 29eac30b1..4854e70bc 100644 --- a/packages/discord.js/package.json +++ b/packages/discord.js/package.json @@ -54,7 +54,7 @@ "@types/ws": "^8.2.2", "discord-api-types": "^0.27.0", "lodash.snakecase": "^4.1.1", - "node-fetch": "^2.6.7", + "undici": "^4.14.1", "ws": "^8.5.0" }, "devDependencies": { diff --git a/packages/discord.js/src/util/DataResolver.js b/packages/discord.js/src/util/DataResolver.js index 6c4840657..e3ab586f4 100644 --- a/packages/discord.js/src/util/DataResolver.js +++ b/packages/discord.js/src/util/DataResolver.js @@ -4,7 +4,7 @@ const { Buffer } = require('node:buffer'); const fs = require('node:fs/promises'); const path = require('node:path'); const stream = require('node:stream'); -const fetch = require('node-fetch'); +const { fetch } = require('undici'); const { Error: DiscordError, TypeError } = require('../errors'); const Invite = require('../structures/Invite'); @@ -118,7 +118,7 @@ class DataResolver extends null { if (typeof resource === 'string') { if (/^https?:\/\//.test(resource)) { const res = await fetch(resource); - return res.buffer(); + return Buffer.from(await res.arrayBuffer()); } const file = path.resolve(resource); diff --git a/packages/discord.js/src/util/Util.js b/packages/discord.js/src/util/Util.js index a801ab2bb..2ab39b468 100644 --- a/packages/discord.js/src/util/Util.js +++ b/packages/discord.js/src/util/Util.js @@ -3,7 +3,7 @@ const { parse } = require('node:path'); const { Collection } = require('@discordjs/collection'); const { ChannelType, RouteBases, Routes } = require('discord-api-types/v9'); -const fetch = require('node-fetch'); +const { fetch } = require('undici'); const Colors = require('./Colors'); const { Error: DiscordError, RangeError, TypeError } = require('../errors'); const isObject = d => typeof d === 'object' && d !== null; diff --git a/packages/discord.js/test/sendtest.js b/packages/discord.js/test/sendtest.js index b51c06202..caf8ca412 100644 --- a/packages/discord.js/test/sendtest.js +++ b/packages/discord.js/test/sendtest.js @@ -6,13 +6,16 @@ const process = require('node:process'); const { setTimeout: sleep } = require('node:timers/promises'); const util = require('node:util'); const { GatewayIntentBits } = require('discord-api-types/v9'); -const fetch = require('node-fetch'); +const { fetch } = require('undici'); const { owner, token } = require('./auth.js'); const { Client, MessageAttachment, Embed } = require('../src'); const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages] }); -const buffer = l => fetch(l).then(res => res.buffer()); +const buffer = l => + fetch(l) + .then(res => res.arrayBuffer()) + .then(Buffer.from); const read = util.promisify(fs.readFile); const readStream = fs.createReadStream; diff --git a/packages/discord.js/test/webhooktest.js b/packages/discord.js/test/webhooktest.js index a4af28c6c..a640ea1d6 100644 --- a/packages/discord.js/test/webhooktest.js +++ b/packages/discord.js/test/webhooktest.js @@ -5,13 +5,16 @@ const path = require('node:path'); const { setTimeout: sleep } = require('node:timers/promises'); const util = require('node:util'); const { GatewayIntentBits } = require('discord-api-types/v9'); -const fetch = require('node-fetch'); +const { fetch } = require('undici'); const { owner, token, webhookChannel, webhookToken } = require('./auth.js'); const { Client, MessageAttachment, Embed, WebhookClient } = require('../src'); const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages] }); -const buffer = l => fetch(l).then(res => res.buffer()); +const buffer = l => + fetch(l) + .then(res => res.arrayBuffer()) + .then(Buffer.from); const read = util.promisify(fs.readFile); const readStream = fs.createReadStream; diff --git a/yarn.lock b/yarn.lock index 5cd03c547..222cd3c8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4443,11 +4443,11 @@ __metadata: is-ci: ^3.0.1 jest: ^27.5.1 lodash.snakecase: ^4.1.1 - node-fetch: ^2.6.7 prettier: ^2.5.1 tsd: ^0.19.1 tslint: ^6.1.3 typescript: ^4.5.5 + undici: ^4.14.1 ws: ^8.5.0 languageName: unknown linkType: soft @@ -10700,6 +10700,13 @@ dts-critic@latest: languageName: node linkType: hard +"undici@npm:^4.14.1": + version: 4.14.1 + resolution: "undici@npm:4.14.1" + checksum: d64a7fa0e388a43819bb7860268f9f2c917bc14a3e6ab7956bdc73492016bfc58c8d5055eca8f5c3d402f275a1c87a92c2467d77ec34dbaca2c4a6e35e760e5a + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0"