feat: add @discordjs/util (#8591)

* 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>
This commit is contained in:
Suneet Tipirneni
2022-10-02 14:00:31 -04:00
committed by GitHub
parent 3f8656115b
commit b2ec865765
56 changed files with 1311 additions and 1326 deletions

View File

@@ -52,6 +52,7 @@
"@discordjs/builders": "workspace:^",
"@discordjs/collection": "workspace:^",
"@discordjs/rest": "workspace:^",
"@discordjs/util": "workspace:^",
"@sapphire/snowflake": "^3.2.2",
"@types/ws": "^8.5.3",
"discord-api-types": "^0.37.11",

View File

@@ -1,9 +1,9 @@
'use strict';
const { lazy } = require('@discordjs/util');
const { ApplicationCommandOptionType } = require('discord-api-types/v10');
const CommandInteraction = require('./CommandInteraction');
const CommandInteractionOptionResolver = require('./CommandInteractionOptionResolver');
const { lazy } = require('../util/Util');
const getMessage = lazy(() => require('./Message').Message);

View File

@@ -1,9 +1,9 @@
'use strict';
const { lazy } = require('@discordjs/util');
const BaseInteraction = require('./BaseInteraction');
const InteractionWebhook = require('./InteractionWebhook');
const InteractionResponses = require('./interfaces/InteractionResponses');
const { lazy } = require('../util/Util');
const getMessage = lazy(() => require('./Message').Message);

View File

@@ -2,12 +2,13 @@
const { Buffer } = require('node:buffer');
const { isJSONEncodable } = require('@discordjs/builders');
const { lazy } = require('@discordjs/util');
const { MessageFlags } = require('discord-api-types/v10');
const ActionRowBuilder = require('./ActionRowBuilder');
const { RangeError, ErrorCodes } = require('../errors');
const DataResolver = require('../util/DataResolver');
const MessageFlagsBitField = require('../util/MessageFlagsBitField');
const { basename, verifyString, lazy } = require('../util/Util');
const { basename, verifyString } = require('../util/Util');
const getBaseInteraction = lazy(() => require('./BaseInteraction'));

View File

@@ -1,10 +1,10 @@
'use strict';
const { lazy } = require('@discordjs/util');
const BaseInteraction = require('./BaseInteraction');
const InteractionWebhook = require('./InteractionWebhook');
const ModalSubmitFields = require('./ModalSubmitFields');
const InteractionResponses = require('./interfaces/InteractionResponses');
const { lazy } = require('../util/Util');
const getMessage = lazy(() => require('./Message').Message);

View File

@@ -1,12 +1,12 @@
'use strict';
const { makeURLSearchParams } = require('@discordjs/rest');
const { lazy } = require('@discordjs/util');
const { DiscordSnowflake } = require('@sapphire/snowflake');
const { Routes, WebhookType } = require('discord-api-types/v10');
const MessagePayload = require('./MessagePayload');
const { Error, ErrorCodes } = require('../errors');
const DataResolver = require('../util/DataResolver');
const { lazy } = require('../util/Util');
const getMessage = lazy(() => require('./Message').Message);

View File

@@ -1,7 +1,7 @@
'use strict';
const { lazy } = require('@discordjs/util');
const { ChannelType } = require('discord-api-types/v10');
const { lazy } = require('./Util');
const getCategoryChannel = lazy(() => require('../structures/CategoryChannel'));
const getDMChannel = lazy(() => require('../structures/DMChannel'));

View File

@@ -509,16 +509,6 @@ function cleanCodeBlockContent(text) {
return text.replaceAll('```', '`\u200b``');
}
/**
* Lazily evaluates a callback function
* @param {Function} cb The callback to lazily evaluate
* @returns {Function}
*/
function lazy(cb) {
let defaultValue;
return () => (defaultValue ??= cb());
}
/**
* Parses a webhook URL for the id and token.
* @param {string} url The URL to parse
@@ -562,7 +552,6 @@ module.exports = {
basename,
cleanContent,
cleanCodeBlockContent,
lazy,
parseWebhookURL,
};

View File

@@ -12,7 +12,6 @@ import {
hyperlink,
inlineCode,
italic,
JSONEncodable,
quote,
roleMention,
SelectMenuBuilder as BuilderSelectMenuComponent,
@@ -31,6 +30,7 @@ import {
ComponentBuilder,
type RestOrArray,
} from '@discordjs/builders';
import { Awaitable, JSONEncodable } from '@discordjs/util';
import { Collection } from '@discordjs/collection';
import { BaseImageURLOptions, ImageURLOptions, RawFile, REST, RESTOptions } from '@discordjs/rest';
import {
@@ -4144,8 +4144,6 @@ export interface AuditLogChange {
new?: APIAuditLogChange['new_value'];
}
export type Awaitable<T> = T | PromiseLike<T>;
export type AwaitMessageComponentOptions<T extends CollectedMessageInteraction> = Omit<
MessageComponentCollectorOptions<T>,
'max' | 'maxComponents' | 'maxUsers'
@@ -5835,3 +5833,4 @@ export type InternalDiscordGatewayAdapterCreator = (
export * from 'discord-api-types/v10';
export * from '@discordjs/builders';
export * from '@discordjs/rest';
export * from '@discordjs/util';