mirror of
https://github.com/discordjs/discord.js.git
synced 2026-06-02 00:50:09 +00:00
* feat: add @discordjs/util * fix: builders test * refactor: make rest use lazy for ESM import * chore: make requested changes * Apply suggestions from code review Co-authored-by: Parbez <imranbarbhuiya.fsd@gmail.com> Co-authored-by: A. Román <kyradiscord@gmail.com> * chore: make requested changes and add tests * chore: regen lockfile * test: add type tests * chore: push missing files * chore: make requested changes * chore: update CI stuff * chore: fix lockfile * chore: make requested changes Co-authored-by: Parbez <imranbarbhuiya.fsd@gmail.com> Co-authored-by: A. Román <kyradiscord@gmail.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import type { JSONEncodable } from '@discordjs/util';
|
|
import type {
|
|
APIActionRowComponent,
|
|
APIActionRowComponentTypes,
|
|
APIBaseComponent,
|
|
ComponentType,
|
|
} from 'discord-api-types/v10';
|
|
|
|
export type AnyAPIActionRowComponent = APIActionRowComponent<APIActionRowComponentTypes> | APIActionRowComponentTypes;
|
|
|
|
/**
|
|
* Represents a discord component
|
|
*
|
|
* @typeParam DataType - The type of internal API data that is stored within the component
|
|
*/
|
|
export abstract class ComponentBuilder<
|
|
DataType extends Partial<APIBaseComponent<ComponentType>> = APIBaseComponent<ComponentType>,
|
|
> implements JSONEncodable<AnyAPIActionRowComponent>
|
|
{
|
|
/**
|
|
* The API data associated with this component
|
|
*/
|
|
public readonly data: Partial<DataType>;
|
|
|
|
/**
|
|
* Serializes this component to an API-compatible JSON object
|
|
*
|
|
* @remarks
|
|
* This method runs validations on the data before serializing it.
|
|
* As such, it may throw an error if the data is invalid.
|
|
*/
|
|
public abstract toJSON(): AnyAPIActionRowComponent;
|
|
|
|
public constructor(data: Partial<DataType>) {
|
|
this.data = data;
|
|
}
|
|
}
|