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 <danialrazafb@gmail.com>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
This commit is contained in:
Almeida
2025-12-09 18:40:34 +00:00
committed by GitHub
parent 4db1092f8f
commit f60d3d65fe
7 changed files with 27 additions and 6 deletions

View File

@@ -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);
});
});

View File

@@ -0,0 +1,16 @@
import type { APIEmbed } from 'discord-api-types/v10';
/**
* Calculates the length of an embed.
*
* @param data - The embed data to check
*/
export function embedLength(data: APIEmbed) {
return (
(data.title?.length ?? 0) +
(data.description?.length ?? 0) +
(data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) +
(data.footer?.text.length ?? 0) +
(data.author?.name.length ?? 0)
);
}

View File

@@ -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';