refactor: Deprecate Formatter class (#8373)

This commit is contained in:
Jiralite
2022-07-27 12:05:31 +01:00
committed by GitHub
parent b6bba9901b
commit 7fd9ed8f13
2 changed files with 257 additions and 54 deletions

View File

@@ -1,5 +1,6 @@
'use strict'; 'use strict';
const { deprecate } = require('node:util');
const { const {
blockQuote, blockQuote,
bold, bold,
@@ -20,160 +21,337 @@ const {
userMention, userMention,
} = require('@discordjs/builders'); } = require('@discordjs/builders');
/**
* Wraps the content inside a code block with an optional language.
* @method codeBlock
* @param {string} contentOrLanguage The language to use or content if a second parameter isn't provided
* @param {string} [content] The content to wrap
* @returns {string}
*/
/**
* Wraps the content inside \`backticks\`, which formats it as inline code.
* @method inlineCode
* @param {string} content The content to wrap
* @returns {string}
*/
/**
* Formats the content into italic text.
* @method italic
* @param {string} content The content to wrap
* @returns {string}
*/
/**
* Formats the content into bold text.
* @method bold
* @param {string} content The content to wrap
* @returns {string}
*/
/**
* Formats the content into underscored text.
* @method underscore
* @param {string} content The content to wrap
* @returns {string}
*/
/**
* Formats the content into strike-through text.
* @method strikethrough
* @param {string} content The content to wrap
* @returns {string}
*/
/**
* Formats the content into a quote.
* <info>This needs to be at the start of the line for Discord to format it.</info>
* @method quote
* @param {string} content The content to wrap
* @returns {string}
*/
/**
* Formats the content into a block quote.
* <info>This needs to be at the start of the line for Discord to format it.</info>
* @method blockQuote
* @param {string} content The content to wrap
* @returns {string}
*/
/**
* Wraps the URL into `<>`, which stops it from embedding.
* @method hideLinkEmbed
* @param {string} content The content to wrap
* @returns {string}
*/
/**
* Formats the content and the URL into a masked URL with an optional title.
* @method hyperlink
* @param {string} content The content to display
* @param {string} url The URL the content links to
* @param {string} [title] The title shown when hovering on the masked link
* @returns {string}
*/
/**
* Formats the content into spoiler text.
* @method spoiler
* @param {string} content The content to spoiler
* @returns {string}
*/
/**
* Formats a user id into a user mention.
* @method userMention
* @param {Snowflake} userId The user id to format
* @returns {string}
*/
/**
* Formats a channel id into a channel mention.
* @method channelMention
* @param {Snowflake} channelId The channel id to format
* @returns {string}
*/
/**
* Formats a role id into a role mention.
* @method roleMention
* @param {Snowflake} roleId The role id to format
* @returns {string}
*/
/**
* Formats an emoji id into a fully qualified emoji identifier.
* @method formatEmoji
* @param {Snowflake} emojiId The emoji id to format
* @param {boolean} [animated=false] Whether the emoji is animated
* @returns {string}
*/
/**
* A message formatting timestamp style, as defined in
* [here](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles).
* * `t` Short time format, consisting of hours and minutes, e.g. 16:20.
* * `T` Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30.
* * `d` Short date format, consisting of day, month, and year, e.g. 20/04/2021.
* * `D` Long date format, consisting of day, month, and year, e.g. 20 April 2021.
* * `f` Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20.
* * `F` Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20.
* * `R` Relative time format, consisting of a relative duration format, e.g. 2 months ago.
* @typedef {string} TimestampStylesString
*/
/**
* Formats a date into a short date-time string.
* @method time
* @param {number|Date} [date] The date to format
* @param {TimestampStylesString} [style] The style to use
* @returns {string}
*/
/** /**
* Contains various Discord-specific functions for formatting messages. * Contains various Discord-specific functions for formatting messages.
* @deprecated This class is redundant as all methods of the class can be imported from discord.js directly.
*/ */
class Formatters extends null { class Formatters extends null {
/** /**
* Formats the content into a block quote. This needs to be at the start of the line for Discord to format it. * Formats the content into a block quote.
* <info>This needs to be at the start of the line for Discord to format it.</info>
* @method blockQuote * @method blockQuote
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to wrap. * @param {string} content The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static blockQuote = blockQuote; static blockQuote = deprecate(
blockQuote,
'Formatters.blockQuote() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats the content into bold text. * Formats the content into bold text.
* @method bold * @method bold
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to wrap. * @param {string} content The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static bold = bold; static bold = deprecate(
bold,
'Formatters.bold() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats a channel id into a channel mention. * Formats a channel id into a channel mention.
* @method channelMention * @method channelMention
* @memberof Formatters * @memberof Formatters
* @param {string} channelId The channel id to format. * @param {Snowflake} channelId The channel id to format
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static channelMention = channelMention; static channelMention = deprecate(
channelMention,
'Formatters.channelMention() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Wraps the content inside a code block with an optional language. * Wraps the content inside a code block with an optional language.
* @method codeBlock * @method codeBlock
* @memberof Formatters * @memberof Formatters
* @param {string} contentOrLanguage The language to use, content if a second parameter isn't provided. * @param {string} contentOrLanguage The language to use or content if a second parameter isn't provided
* @param {string} [content] The content to wrap. * @param {string} [content] The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static codeBlock = codeBlock; static codeBlock = deprecate(
codeBlock,
'Formatters.codeBlock() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats an emoji id into a fully qualified emoji identifier * Formats an emoji id into a fully qualified emoji identifier.
* @method formatEmoji * @method formatEmoji
* @memberof Formatters * @memberof Formatters
* @memberof Formatters * @param {string} emojiId The emoji id to format
* @param {string} emojiId The emoji id to format. * @param {boolean} [animated=false] Whether the emoji is animated
* @param {boolean} [animated] Whether the emoji is animated or not. Defaults to `false`
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static formatEmoji = formatEmoji; static formatEmoji = deprecate(
formatEmoji,
'Formatters.formatEmoji() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Wraps the URL into `<>`, which stops it from embedding. * Wraps the URL into `<>`, which stops it from embedding.
* @method hideLinkEmbed * @method hideLinkEmbed
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to wrap. * @param {string} content The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static hideLinkEmbed = hideLinkEmbed; static hideLinkEmbed = deprecate(
hideLinkEmbed,
'Formatters.hideLinkEmbed() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats the content and the URL into a masked URL with an optional title. * Formats the content and the URL into a masked URL with an optional title.
* @method hyperlink * @method hyperlink
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to display. * @param {string} content The content to display
* @param {string} url The URL the content links to. * @param {string} url The URL the content links to
* @param {string} [title] The title shown when hovering on the masked link. * @param {string} [title] The title shown when hovering on the masked link
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static hyperlink = hyperlink; static hyperlink = deprecate(
hyperlink,
'Formatters.hyperlink() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Wraps the content inside \`backticks\`, which formats it as inline code. * Wraps the content inside \`backticks\`, which formats it as inline code.
* @method inlineCode * @method inlineCode
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to wrap. * @param {string} content The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static inlineCode = inlineCode; static inlineCode = deprecate(
inlineCode,
'Formatters.inlineCode() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats the content into italic text. * Formats the content into italic text.
* @method italic * @method italic
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to wrap. * @param {string} content The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static italic = italic; static italic = deprecate(
italic,
'Formatters.italic() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats the content into a quote. This needs to be at the start of the line for Discord to format it. * Formats the content into a quote. This needs to be at the start of the line for Discord to format it.
* @method quote * @method quote
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to wrap. * @param {string} content The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static quote = quote; static quote = deprecate(
quote,
'Formatters.quote() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats a role id into a role mention. * Formats a role id into a role mention.
* @method roleMention * @method roleMention
* @memberof Formatters * @memberof Formatters
* @param {string} roleId The role id to format. * @param {Snowflake} roleId The role id to format
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static roleMention = roleMention; static roleMention = deprecate(
roleMention,
'Formatters.roleMention() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats the content into spoiler text. * Formats the content into spoiler text.
* @method spoiler * @method spoiler
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to spoiler. * @param {string} content The content to spoiler
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static spoiler = spoiler; static spoiler = deprecate(
spoiler,
'Formatters.spoiler() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats the content into strike-through text. * Formats the content into strike-through text.
* @method strikethrough * @method strikethrough
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to wrap. * @param {string} content The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static strikethrough = strikethrough; static strikethrough = deprecate(
strikethrough,
'Formatters.strikethrough() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats a date into a short date-time string. * Formats a date into a short date-time string.
* @method time * @method time
* @memberof Formatters * @memberof Formatters
* @param {number|Date} [date] The date to format. * @param {number|Date} [date] The date to format
* @param {TimestampStylesString} [style] The style to use. * @param {TimestampStylesString} [style] The style to use
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static time = time; static time = deprecate(
time,
/** 'Formatters.time() is deprecated. Import this method directly from discord.js instead.',
* A message formatting timestamp style, as defined in );
* [here](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles).
* * `t` Short time format, consisting of hours and minutes, e.g. 16:20.
* * `T` Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30.
* * `d` Short date format, consisting of day, month, and year, e.g. 20/04/2021.
* * `D` Long date format, consisting of day, month, and year, e.g. 20 April 2021.
* * `f` Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20.
* * `F` Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20.
* * `R` Relative time format, consisting of a relative duration format, e.g. 2 months ago.
* @typedef {string} TimestampStylesString
*/
/** /**
* The message formatting timestamp * The message formatting timestamp
* [styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord. * [styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord.
* @type {Object<string, TimestampStylesString>} * @type {Object<string, TimestampStylesString>}
* @memberof Formatters * @memberof Formatters
* @deprecated Import this property directly from discord.js instead.
*/ */
static TimestampStyles = TimestampStyles; static TimestampStyles = TimestampStyles;
@@ -181,19 +359,27 @@ class Formatters extends null {
* Formats the content into underscored text. * Formats the content into underscored text.
* @method underscore * @method underscore
* @memberof Formatters * @memberof Formatters
* @param {string} content The content to wrap. * @param {string} content The content to wrap
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static underscore = underscore; static underscore = deprecate(
underscore,
'Formatters.underscore() is deprecated. Import this method directly from discord.js instead.',
);
/** /**
* Formats a user id into a user mention. * Formats a user id into a user mention.
* @method userMention * @method userMention
* @memberof Formatters * @memberof Formatters
* @param {string} userId The user id to format. * @param {Snowflake} userId The user id to format
* @returns {string} * @returns {string}
* @deprecated Import this method directly from discord.js instead.
*/ */
static userMention = userMention; static userMention = deprecate(
userMention,
'Formatters.userMention() is deprecated. Import this method directly from discord.js instead.',
);
} }
module.exports = Formatters; module.exports = Formatters;

View File

@@ -2699,24 +2699,41 @@ export function createComponentBuilder<T extends keyof MappedComponentBuilderTyp
export function createComponentBuilder<C extends ComponentBuilder>(data: C): C; export function createComponentBuilder<C extends ComponentBuilder>(data: C): C;
export function createComponentBuilder(data: APIMessageComponent | ComponentBuilder): ComponentBuilder; export function createComponentBuilder(data: APIMessageComponent | ComponentBuilder): ComponentBuilder;
/** @deprecated This class is redundant as all methods of the class can be imported from discord.js directly. */
export class Formatters extends null { export class Formatters extends null {
/** @deprecated Import this method directly from discord.js instead. */
public static blockQuote: typeof blockQuote; public static blockQuote: typeof blockQuote;
/** @deprecated Import this method directly from discord.js instead. */
public static bold: typeof bold; public static bold: typeof bold;
/** @deprecated Import this method directly from discord.js instead. */
public static channelMention: typeof channelMention; public static channelMention: typeof channelMention;
/** @deprecated Import this method directly from discord.js instead. */
public static codeBlock: typeof codeBlock; public static codeBlock: typeof codeBlock;
/** @deprecated Import this method directly from discord.js instead. */
public static formatEmoji: typeof formatEmoji; public static formatEmoji: typeof formatEmoji;
/** @deprecated Import this method directly from discord.js instead. */
public static hideLinkEmbed: typeof hideLinkEmbed; public static hideLinkEmbed: typeof hideLinkEmbed;
/** @deprecated Import this method directly from discord.js instead. */
public static hyperlink: typeof hyperlink; public static hyperlink: typeof hyperlink;
/** @deprecated Import this method directly from discord.js instead. */
public static inlineCode: typeof inlineCode; public static inlineCode: typeof inlineCode;
/** @deprecated Import this method directly from discord.js instead. */
public static italic: typeof italic; public static italic: typeof italic;
/** @deprecated Import this method directly from discord.js instead. */
public static quote: typeof quote; public static quote: typeof quote;
/** @deprecated Import this method directly from discord.js instead. */
public static roleMention: typeof roleMention; public static roleMention: typeof roleMention;
/** @deprecated Import this method directly from discord.js instead. */
public static spoiler: typeof spoiler; public static spoiler: typeof spoiler;
/** @deprecated Import this method directly from discord.js instead. */
public static strikethrough: typeof strikethrough; public static strikethrough: typeof strikethrough;
/** @deprecated Import this method directly from discord.js instead. */
public static time: typeof time; public static time: typeof time;
/** @deprecated Import this property directly from discord.js instead. */
public static TimestampStyles: typeof TimestampStyles; public static TimestampStyles: typeof TimestampStyles;
public static TimestampStylesString: TimestampStylesString; /** @deprecated Import this method directly from discord.js instead. */
public static underscore: typeof underscore; public static underscore: typeof underscore;
/** @deprecated Import this method directly from discord.js instead. */
public static userMention: typeof userMention; public static userMention: typeof userMention;
} }