From f60d3d65fea5a568de93cb86dac4a94da6e8d633 Mon Sep 17 00:00:00 2001 From: Almeida Date: Tue, 9 Dec 2025 18:40:34 +0000 Subject: [PATCH] refactor!: move `embedLength` function to util package (#11327) BREAKING CHANGE: Builders no longer exports a `embedLength` function. Import it from `@discordjs/util` instead. Co-authored-by: Danial Raza Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> --- .../builders/__tests__/messages/embed.test.ts | 3 ++- packages/builders/src/index.ts | 1 - .../builders/src/messages/embed/Assertions.ts | 2 +- packages/discord.js/src/structures/Embed.js | 2 +- packages/util/__tests__/embedLength.test.ts | 20 +++++++++++++++++++ .../src/functions/embedLength.ts} | 2 +- packages/util/src/functions/index.ts | 3 ++- 7 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 packages/util/__tests__/embedLength.test.ts rename packages/{builders/src/util/componentUtil.ts => util/src/functions/embedLength.ts} (91%) diff --git a/packages/builders/__tests__/messages/embed.test.ts b/packages/builders/__tests__/messages/embed.test.ts index 5b04b51dd..1aa4793ed 100644 --- a/packages/builders/__tests__/messages/embed.test.ts +++ b/packages/builders/__tests__/messages/embed.test.ts @@ -1,5 +1,6 @@ +import { embedLength } from '@discordjs/util'; import { describe, test, expect } from 'vitest'; -import { EmbedBuilder, embedLength } from '../../src/index.js'; +import { EmbedBuilder } from '../../src/index.js'; const alpha = 'abcdefghijklmnopqrstuvwxyz'; diff --git a/packages/builders/src/index.ts b/packages/builders/src/index.ts index 30dfe6ba4..deeee34ab 100644 --- a/packages/builders/src/index.ts +++ b/packages/builders/src/index.ts @@ -89,7 +89,6 @@ export * from './messages/Attachment.js'; export * from './messages/Message.js'; export * from './messages/MessageReference.js'; -export * from './util/componentUtil.js'; export * from './util/normalizeArray.js'; export * from './util/resolveBuilder.js'; export { disableValidators, enableValidators, isValidationEnabled } from './util/validation.js'; diff --git a/packages/builders/src/messages/embed/Assertions.ts b/packages/builders/src/messages/embed/Assertions.ts index 96b003ac4..dbf05f091 100644 --- a/packages/builders/src/messages/embed/Assertions.ts +++ b/packages/builders/src/messages/embed/Assertions.ts @@ -1,5 +1,5 @@ +import { embedLength } from '@discordjs/util'; import { z } from 'zod'; -import { embedLength } from '../../util/componentUtil.js'; const namePredicate = z.string().max(256); diff --git a/packages/discord.js/src/structures/Embed.js b/packages/discord.js/src/structures/Embed.js index 165febd5e..7707e8c93 100644 --- a/packages/discord.js/src/structures/Embed.js +++ b/packages/discord.js/src/structures/Embed.js @@ -1,6 +1,6 @@ 'use strict'; -const { embedLength } = require('@discordjs/builders'); +const { embedLength } = require('@discordjs/util'); const isEqual = require('fast-deep-equal'); /** diff --git a/packages/util/__tests__/embedLength.test.ts b/packages/util/__tests__/embedLength.test.ts new file mode 100644 index 000000000..5e0d84aa7 --- /dev/null +++ b/packages/util/__tests__/embedLength.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, test } from 'vitest'; +import { embedLength } from '../src/functions/embedLength.js'; + +describe('embedLength', () => { + test('GIVEN an embed with specific amount of characters THEN returns amount of characters', () => { + const embed = { + title: 'yeet', + description: 'yeet', + fields: [{ name: 'yeet', value: 'yeet' }], + author: { name: 'yeet' }, + footer: { text: 'yeet' }, + }; + + expect(embedLength(embed)).toEqual('yeet'.length * 6); + }); + + test('GIVEN an embed with zero characters THEN returns amount of characters', () => { + expect(embedLength({})).toEqual(0); + }); +}); diff --git a/packages/builders/src/util/componentUtil.ts b/packages/util/src/functions/embedLength.ts similarity index 91% rename from packages/builders/src/util/componentUtil.ts rename to packages/util/src/functions/embedLength.ts index f2439fb99..3a741e661 100644 --- a/packages/builders/src/util/componentUtil.ts +++ b/packages/util/src/functions/embedLength.ts @@ -1,7 +1,7 @@ import type { APIEmbed } from 'discord-api-types/v10'; /** - * Calculates the length of the embed. + * Calculates the length of an embed. * * @param data - The embed data to check */ diff --git a/packages/util/src/functions/index.ts b/packages/util/src/functions/index.ts index 6010ae554..276461176 100644 --- a/packages/util/src/functions/index.ts +++ b/packages/util/src/functions/index.ts @@ -1,5 +1,6 @@ +export * from './calculateShardId.js'; +export * from './embedLength.js'; export * from './lazy.js'; export * from './range.js'; -export * from './calculateShardId.js'; export * from './runtime.js'; export * from './userAgentAppendix.js';