baff.js 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/LICENSE +7 -0
- package/README.md +244 -3
- package/dist/cjs/builders/EmbedBuilder.d.ts +51 -0
- package/dist/cjs/builders/EmbedBuilder.js +150 -0
- package/dist/cjs/builders/SlashCommandBuilder.d.ts +69 -0
- package/dist/cjs/builders/SlashCommandBuilder.js +185 -0
- package/dist/cjs/builders/components/ActionRowBuilder.d.ts +14 -0
- package/dist/cjs/builders/components/ActionRowBuilder.js +45 -0
- package/dist/cjs/builders/components/ButtonBuilder.d.ts +19 -0
- package/dist/cjs/builders/components/ButtonBuilder.js +69 -0
- package/dist/cjs/builders/components/LayoutBuilders.d.ts +63 -0
- package/dist/cjs/builders/components/LayoutBuilders.js +179 -0
- package/dist/cjs/builders/components/ModalBuilder.d.ts +36 -0
- package/dist/cjs/builders/components/ModalBuilder.js +118 -0
- package/dist/cjs/builders/components/SelectMenuBuilder.d.ts +80 -0
- package/dist/cjs/builders/components/SelectMenuBuilder.js +192 -0
- package/dist/cjs/builders/components/shared.d.ts +16 -0
- package/dist/cjs/builders/components/shared.js +32 -0
- package/dist/cjs/builders/messagePayload.d.ts +35 -0
- package/dist/cjs/builders/messagePayload.js +88 -0
- package/dist/cjs/builders/validate.d.ts +12 -0
- package/dist/cjs/builders/validate.js +54 -0
- package/dist/cjs/client/Client.d.ts +63 -0
- package/dist/cjs/client/Client.js +152 -0
- package/dist/cjs/client/dispatch.d.ts +2 -0
- package/dist/cjs/client/dispatch.js +224 -0
- package/dist/cjs/client/events.d.ts +129 -0
- package/dist/cjs/client/events.js +2 -0
- package/dist/cjs/collectors/Collector.d.ts +37 -0
- package/dist/cjs/collectors/Collector.js +84 -0
- package/dist/cjs/collectors/InteractionCollector.d.ts +21 -0
- package/dist/cjs/collectors/InteractionCollector.js +44 -0
- package/dist/cjs/collectors/MessageCollector.d.ts +14 -0
- package/dist/cjs/collectors/MessageCollector.js +23 -0
- package/dist/cjs/errors/BaffError.d.ts +26 -0
- package/dist/cjs/errors/BaffError.js +39 -0
- package/dist/cjs/gateway/Gateway.d.ts +53 -0
- package/dist/cjs/gateway/Gateway.js +128 -0
- package/dist/cjs/http/handler.d.ts +11 -0
- package/dist/cjs/http/handler.js +72 -0
- package/dist/cjs/http/verify.d.ts +11 -0
- package/dist/cjs/http/verify.js +28 -0
- package/dist/cjs/index.d.ts +51 -0
- package/dist/cjs/index.js +185 -0
- package/dist/cjs/managers/CachedManager.d.ts +16 -0
- package/dist/cjs/managers/CachedManager.js +18 -0
- package/dist/cjs/managers/ChannelManager.d.ts +23 -0
- package/dist/cjs/managers/ChannelManager.js +85 -0
- package/dist/cjs/managers/CommandManager.d.ts +32 -0
- package/dist/cjs/managers/CommandManager.js +72 -0
- package/dist/cjs/managers/EventManager.d.ts +15 -0
- package/dist/cjs/managers/EventManager.js +36 -0
- package/dist/cjs/managers/ExpressionManagers.d.ts +36 -0
- package/dist/cjs/managers/ExpressionManagers.js +73 -0
- package/dist/cjs/managers/InviteManager.d.ts +17 -0
- package/dist/cjs/managers/InviteManager.js +26 -0
- package/dist/cjs/managers/MemberManager.d.ts +31 -0
- package/dist/cjs/managers/MemberManager.js +62 -0
- package/dist/cjs/managers/MessageManager.d.ts +32 -0
- package/dist/cjs/managers/MessageManager.js +79 -0
- package/dist/cjs/managers/RoleManager.d.ts +22 -0
- package/dist/cjs/managers/RoleManager.js +73 -0
- package/dist/cjs/managers/ServerChannelManager.d.ts +20 -0
- package/dist/cjs/managers/ServerChannelManager.js +30 -0
- package/dist/cjs/managers/ServerManager.d.ts +12 -0
- package/dist/cjs/managers/ServerManager.js +62 -0
- package/dist/cjs/managers/ThreadManager.d.ts +12 -0
- package/dist/cjs/managers/ThreadManager.js +20 -0
- package/dist/cjs/managers/UserManager.d.ts +11 -0
- package/dist/cjs/managers/UserManager.js +38 -0
- package/dist/cjs/managers/VoiceManager.d.ts +8 -0
- package/dist/cjs/managers/VoiceManager.js +17 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/rest/REST.d.ts +58 -0
- package/dist/cjs/rest/REST.js +193 -0
- package/dist/cjs/rest/Routes.d.ts +54 -0
- package/dist/cjs/rest/Routes.js +58 -0
- package/dist/cjs/rest/files.d.ts +19 -0
- package/dist/cjs/rest/files.js +37 -0
- package/dist/cjs/structures/Base.d.ts +13 -0
- package/dist/cjs/structures/Base.js +30 -0
- package/dist/cjs/structures/Message.d.ts +91 -0
- package/dist/cjs/structures/Message.js +200 -0
- package/dist/cjs/structures/Role.d.ts +34 -0
- package/dist/cjs/structures/Role.js +84 -0
- package/dist/cjs/structures/ScheduledEvent.d.ts +37 -0
- package/dist/cjs/structures/ScheduledEvent.js +73 -0
- package/dist/cjs/structures/Server.d.ts +68 -0
- package/dist/cjs/structures/Server.js +124 -0
- package/dist/cjs/structures/ServerAssets.d.ts +48 -0
- package/dist/cjs/structures/ServerAssets.js +104 -0
- package/dist/cjs/structures/ServerMember.d.ts +47 -0
- package/dist/cjs/structures/ServerMember.js +138 -0
- package/dist/cjs/structures/User.d.ts +35 -0
- package/dist/cjs/structures/User.js +87 -0
- package/dist/cjs/structures/Webhook.d.ts +30 -0
- package/dist/cjs/structures/Webhook.js +68 -0
- package/dist/cjs/structures/channels/BaseChannel.d.ts +49 -0
- package/dist/cjs/structures/channels/BaseChannel.js +81 -0
- package/dist/cjs/structures/channels/DMChannel.d.ts +9 -0
- package/dist/cjs/structures/channels/DMChannel.js +21 -0
- package/dist/cjs/structures/channels/ServerChannels.d.ts +57 -0
- package/dist/cjs/structures/channels/ServerChannels.js +138 -0
- package/dist/cjs/structures/channels/TextBasedChannel.d.ts +25 -0
- package/dist/cjs/structures/channels/TextBasedChannel.js +53 -0
- package/dist/cjs/structures/interactions/BaseInteraction.d.ts +74 -0
- package/dist/cjs/structures/interactions/BaseInteraction.js +221 -0
- package/dist/cjs/structures/interactions/CommandInteraction.d.ts +44 -0
- package/dist/cjs/structures/interactions/CommandInteraction.js +109 -0
- package/dist/cjs/structures/interactions/ComponentInteraction.d.ts +44 -0
- package/dist/cjs/structures/interactions/ComponentInteraction.js +64 -0
- package/dist/cjs/structures/interactions/ModalSubmitInteraction.d.ts +29 -0
- package/dist/cjs/structures/interactions/ModalSubmitInteraction.js +42 -0
- package/dist/cjs/structures/interactions/createInteraction.d.ts +4 -0
- package/dist/cjs/structures/interactions/createInteraction.js +34 -0
- package/dist/cjs/types.d.ts +369 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/util/Collection.d.ts +32 -0
- package/dist/cjs/util/Collection.js +145 -0
- package/dist/cjs/util/Permissions.d.ts +87 -0
- package/dist/cjs/util/Permissions.js +113 -0
- package/dist/cjs/util/Snowflake.d.ts +20 -0
- package/dist/cjs/util/Snowflake.js +40 -0
- package/dist/cjs/util/TypedEmitter.d.ts +17 -0
- package/dist/cjs/util/TypedEmitter.js +5 -0
- package/dist/cjs/util/constants.d.ts +78 -0
- package/dist/cjs/util/constants.js +81 -0
- package/dist/cjs/util/emoji.d.ts +8 -0
- package/dist/cjs/util/emoji.js +10 -0
- package/dist/cjs/util/formatters.d.ts +29 -0
- package/dist/cjs/util/formatters.js +55 -0
- package/dist/esm/builders/EmbedBuilder.d.ts +51 -0
- package/dist/esm/builders/EmbedBuilder.js +145 -0
- package/dist/esm/builders/SlashCommandBuilder.d.ts +69 -0
- package/dist/esm/builders/SlashCommandBuilder.js +170 -0
- package/dist/esm/builders/components/ActionRowBuilder.d.ts +14 -0
- package/dist/esm/builders/components/ActionRowBuilder.js +41 -0
- package/dist/esm/builders/components/ButtonBuilder.d.ts +19 -0
- package/dist/esm/builders/components/ButtonBuilder.js +65 -0
- package/dist/esm/builders/components/LayoutBuilders.d.ts +63 -0
- package/dist/esm/builders/components/LayoutBuilders.js +169 -0
- package/dist/esm/builders/components/ModalBuilder.d.ts +36 -0
- package/dist/esm/builders/components/ModalBuilder.js +113 -0
- package/dist/esm/builders/components/SelectMenuBuilder.d.ts +80 -0
- package/dist/esm/builders/components/SelectMenuBuilder.js +183 -0
- package/dist/esm/builders/components/shared.d.ts +16 -0
- package/dist/esm/builders/components/shared.js +26 -0
- package/dist/esm/builders/messagePayload.d.ts +35 -0
- package/dist/esm/builders/messagePayload.js +83 -0
- package/dist/esm/builders/validate.d.ts +12 -0
- package/dist/esm/builders/validate.js +46 -0
- package/dist/esm/client/Client.d.ts +63 -0
- package/dist/esm/client/Client.js +147 -0
- package/dist/esm/client/dispatch.d.ts +2 -0
- package/dist/esm/client/dispatch.js +221 -0
- package/dist/esm/client/events.d.ts +129 -0
- package/dist/esm/client/events.js +1 -0
- package/dist/esm/collectors/Collector.d.ts +37 -0
- package/dist/esm/collectors/Collector.js +78 -0
- package/dist/esm/collectors/InteractionCollector.d.ts +21 -0
- package/dist/esm/collectors/InteractionCollector.js +40 -0
- package/dist/esm/collectors/MessageCollector.d.ts +14 -0
- package/dist/esm/collectors/MessageCollector.js +19 -0
- package/dist/esm/errors/BaffError.d.ts +26 -0
- package/dist/esm/errors/BaffError.js +33 -0
- package/dist/esm/gateway/Gateway.d.ts +53 -0
- package/dist/esm/gateway/Gateway.js +124 -0
- package/dist/esm/http/handler.d.ts +11 -0
- package/dist/esm/http/handler.js +68 -0
- package/dist/esm/http/verify.d.ts +11 -0
- package/dist/esm/http/verify.js +22 -0
- package/dist/esm/index.d.ts +51 -0
- package/dist/esm/index.js +49 -0
- package/dist/esm/managers/CachedManager.d.ts +16 -0
- package/dist/esm/managers/CachedManager.js +14 -0
- package/dist/esm/managers/ChannelManager.d.ts +23 -0
- package/dist/esm/managers/ChannelManager.js +81 -0
- package/dist/esm/managers/CommandManager.d.ts +32 -0
- package/dist/esm/managers/CommandManager.js +67 -0
- package/dist/esm/managers/EventManager.d.ts +15 -0
- package/dist/esm/managers/EventManager.js +32 -0
- package/dist/esm/managers/ExpressionManagers.d.ts +36 -0
- package/dist/esm/managers/ExpressionManagers.js +68 -0
- package/dist/esm/managers/InviteManager.d.ts +17 -0
- package/dist/esm/managers/InviteManager.js +22 -0
- package/dist/esm/managers/MemberManager.d.ts +31 -0
- package/dist/esm/managers/MemberManager.js +58 -0
- package/dist/esm/managers/MessageManager.d.ts +32 -0
- package/dist/esm/managers/MessageManager.js +75 -0
- package/dist/esm/managers/RoleManager.d.ts +22 -0
- package/dist/esm/managers/RoleManager.js +69 -0
- package/dist/esm/managers/ServerChannelManager.d.ts +20 -0
- package/dist/esm/managers/ServerChannelManager.js +26 -0
- package/dist/esm/managers/ServerManager.d.ts +12 -0
- package/dist/esm/managers/ServerManager.js +58 -0
- package/dist/esm/managers/ThreadManager.d.ts +12 -0
- package/dist/esm/managers/ThreadManager.js +16 -0
- package/dist/esm/managers/UserManager.d.ts +11 -0
- package/dist/esm/managers/UserManager.js +34 -0
- package/dist/esm/managers/VoiceManager.d.ts +8 -0
- package/dist/esm/managers/VoiceManager.js +13 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/rest/REST.d.ts +58 -0
- package/dist/esm/rest/REST.js +188 -0
- package/dist/esm/rest/Routes.d.ts +54 -0
- package/dist/esm/rest/Routes.js +55 -0
- package/dist/esm/rest/files.d.ts +19 -0
- package/dist/esm/rest/files.js +31 -0
- package/dist/esm/structures/Base.d.ts +13 -0
- package/dist/esm/structures/Base.js +25 -0
- package/dist/esm/structures/Message.d.ts +91 -0
- package/dist/esm/structures/Message.js +194 -0
- package/dist/esm/structures/Role.d.ts +34 -0
- package/dist/esm/structures/Role.js +79 -0
- package/dist/esm/structures/ScheduledEvent.d.ts +37 -0
- package/dist/esm/structures/ScheduledEvent.js +68 -0
- package/dist/esm/structures/Server.d.ts +68 -0
- package/dist/esm/structures/Server.js +120 -0
- package/dist/esm/structures/ServerAssets.d.ts +48 -0
- package/dist/esm/structures/ServerAssets.js +98 -0
- package/dist/esm/structures/ServerMember.d.ts +47 -0
- package/dist/esm/structures/ServerMember.js +133 -0
- package/dist/esm/structures/User.d.ts +35 -0
- package/dist/esm/structures/User.js +82 -0
- package/dist/esm/structures/Webhook.d.ts +30 -0
- package/dist/esm/structures/Webhook.js +63 -0
- package/dist/esm/structures/channels/BaseChannel.d.ts +49 -0
- package/dist/esm/structures/channels/BaseChannel.js +77 -0
- package/dist/esm/structures/channels/DMChannel.d.ts +9 -0
- package/dist/esm/structures/channels/DMChannel.js +17 -0
- package/dist/esm/structures/channels/ServerChannels.d.ts +57 -0
- package/dist/esm/structures/channels/ServerChannels.js +129 -0
- package/dist/esm/structures/channels/TextBasedChannel.d.ts +25 -0
- package/dist/esm/structures/channels/TextBasedChannel.js +49 -0
- package/dist/esm/structures/interactions/BaseInteraction.d.ts +74 -0
- package/dist/esm/structures/interactions/BaseInteraction.js +217 -0
- package/dist/esm/structures/interactions/CommandInteraction.d.ts +44 -0
- package/dist/esm/structures/interactions/CommandInteraction.js +104 -0
- package/dist/esm/structures/interactions/ComponentInteraction.d.ts +44 -0
- package/dist/esm/structures/interactions/ComponentInteraction.js +53 -0
- package/dist/esm/structures/interactions/ModalSubmitInteraction.d.ts +29 -0
- package/dist/esm/structures/interactions/ModalSubmitInteraction.js +37 -0
- package/dist/esm/structures/interactions/createInteraction.d.ts +4 -0
- package/dist/esm/structures/interactions/createInteraction.js +31 -0
- package/dist/esm/types.d.ts +369 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/util/Collection.d.ts +32 -0
- package/dist/esm/util/Collection.js +141 -0
- package/dist/esm/util/Permissions.d.ts +87 -0
- package/dist/esm/util/Permissions.js +109 -0
- package/dist/esm/util/Snowflake.d.ts +20 -0
- package/dist/esm/util/Snowflake.js +37 -0
- package/dist/esm/util/TypedEmitter.d.ts +17 -0
- package/dist/esm/util/TypedEmitter.js +2 -0
- package/dist/esm/util/constants.d.ts +78 -0
- package/dist/esm/util/constants.js +78 -0
- package/dist/esm/util/emoji.d.ts +8 -0
- package/dist/esm/util/emoji.js +7 -0
- package/dist/esm/util/formatters.d.ts +29 -0
- package/dist/esm/util/formatters.js +34 -0
- package/package.json +58 -6
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { BaffError } from '../errors/BaffError.js';
|
|
2
|
+
export const PermissionFlagsBits = {
|
|
3
|
+
Administrator: 1n << 0n,
|
|
4
|
+
ManageServer: 1n << 1n,
|
|
5
|
+
ManageRoles: 1n << 2n,
|
|
6
|
+
ManageChannels: 1n << 3n,
|
|
7
|
+
KickMembers: 1n << 4n,
|
|
8
|
+
BanMembers: 1n << 5n,
|
|
9
|
+
CreateInvite: 1n << 6n,
|
|
10
|
+
SendMessages: 1n << 7n,
|
|
11
|
+
ManageMessages: 1n << 8n,
|
|
12
|
+
AttachFiles: 1n << 9n,
|
|
13
|
+
AddReactions: 1n << 10n,
|
|
14
|
+
ManageExpressions: 1n << 11n,
|
|
15
|
+
MentionEveryone: 1n << 12n,
|
|
16
|
+
ViewChannel: 1n << 13n,
|
|
17
|
+
ManageWebhooks: 1n << 14n,
|
|
18
|
+
Connect: 1n << 15n,
|
|
19
|
+
Speak: 1n << 16n,
|
|
20
|
+
Video: 1n << 17n,
|
|
21
|
+
BaffleUpload: 1n << 18n,
|
|
22
|
+
BaffleWithdraw: 1n << 19n,
|
|
23
|
+
ManageBaffles: 1n << 20n,
|
|
24
|
+
ModerateMembers: 1n << 21n,
|
|
25
|
+
ViewAuditLog: 1n << 22n,
|
|
26
|
+
UseSoundboard: 1n << 23n,
|
|
27
|
+
ManageThreads: 1n << 24n,
|
|
28
|
+
ManageStage: 1n << 25n,
|
|
29
|
+
ChangeNickname: 1n << 26n,
|
|
30
|
+
ManageNicknames: 1n << 27n,
|
|
31
|
+
ManageEvents: 1n << 28n,
|
|
32
|
+
SetVoiceChannelStatus: 1n << 29n,
|
|
33
|
+
RequestToSpeak: 1n << 30n
|
|
34
|
+
};
|
|
35
|
+
const ALL = Object.values(PermissionFlagsBits).reduce((acc, bit) => acc | bit, 0n);
|
|
36
|
+
export class PermissionsBitField {
|
|
37
|
+
static Flags = PermissionFlagsBits;
|
|
38
|
+
static All = new PermissionsBitField(ALL);
|
|
39
|
+
bitfield;
|
|
40
|
+
constructor(bits = 0n) {
|
|
41
|
+
this.bitfield = PermissionsBitField.resolve(bits);
|
|
42
|
+
}
|
|
43
|
+
static fromBits(bits) {
|
|
44
|
+
return new PermissionsBitField(BigInt(bits));
|
|
45
|
+
}
|
|
46
|
+
static resolve(bits) {
|
|
47
|
+
if (bits instanceof PermissionsBitField)
|
|
48
|
+
return bits.bitfield;
|
|
49
|
+
if (typeof bits === 'bigint')
|
|
50
|
+
return bits;
|
|
51
|
+
if (typeof bits === 'number')
|
|
52
|
+
return BigInt(bits);
|
|
53
|
+
if (Array.isArray(bits))
|
|
54
|
+
return bits.reduce((acc, bit) => acc | PermissionsBitField.resolve(bit), 0n);
|
|
55
|
+
if (typeof bits === 'string') {
|
|
56
|
+
if (/^\d+$/.test(bits))
|
|
57
|
+
return BigInt(bits);
|
|
58
|
+
const flag = PermissionFlagsBits[bits];
|
|
59
|
+
if (flag === undefined)
|
|
60
|
+
throw new BaffError('INVALID_PERMISSION', `Unknown permission "${bits}".`);
|
|
61
|
+
return flag;
|
|
62
|
+
}
|
|
63
|
+
throw new BaffError('INVALID_PERMISSION', `Cannot read ${String(bits)} as a permission.`);
|
|
64
|
+
}
|
|
65
|
+
has(permission, checkAdmin = true) {
|
|
66
|
+
if (checkAdmin && (this.bitfield & PermissionFlagsBits.Administrator) !== 0n)
|
|
67
|
+
return true;
|
|
68
|
+
const bit = PermissionsBitField.resolve(permission);
|
|
69
|
+
return (this.bitfield & bit) === bit;
|
|
70
|
+
}
|
|
71
|
+
any(permission, checkAdmin = true) {
|
|
72
|
+
if (checkAdmin && (this.bitfield & PermissionFlagsBits.Administrator) !== 0n)
|
|
73
|
+
return true;
|
|
74
|
+
return (this.bitfield & PermissionsBitField.resolve(permission)) !== 0n;
|
|
75
|
+
}
|
|
76
|
+
missing(permission, checkAdmin = true) {
|
|
77
|
+
return PermissionsBitField.names(PermissionsBitField.resolve(permission)).filter((name) => !this.has(name, checkAdmin));
|
|
78
|
+
}
|
|
79
|
+
add(...permissions) {
|
|
80
|
+
return new PermissionsBitField(permissions.reduce((acc, p) => acc | PermissionsBitField.resolve(p), this.bitfield));
|
|
81
|
+
}
|
|
82
|
+
remove(...permissions) {
|
|
83
|
+
return new PermissionsBitField(permissions.reduce((acc, p) => acc & ~PermissionsBitField.resolve(p), this.bitfield));
|
|
84
|
+
}
|
|
85
|
+
equals(other) {
|
|
86
|
+
return this.bitfield === PermissionsBitField.resolve(other);
|
|
87
|
+
}
|
|
88
|
+
toArray() {
|
|
89
|
+
return PermissionsBitField.names(this.bitfield);
|
|
90
|
+
}
|
|
91
|
+
serialize(checkAdmin = true) {
|
|
92
|
+
const out = {};
|
|
93
|
+
for (const name of Object.keys(PermissionFlagsBits))
|
|
94
|
+
out[name] = this.has(name, checkAdmin);
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
toJSON() {
|
|
98
|
+
return this.bitfield.toString();
|
|
99
|
+
}
|
|
100
|
+
toString() {
|
|
101
|
+
return this.bitfield.toString();
|
|
102
|
+
}
|
|
103
|
+
valueOf() {
|
|
104
|
+
return this.bitfield;
|
|
105
|
+
}
|
|
106
|
+
static names(bits) {
|
|
107
|
+
return Object.keys(PermissionFlagsBits).filter((name) => (bits & PermissionFlagsBits[name]) !== 0n);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface DeconstructedSnowflake {
|
|
2
|
+
timestamp: number;
|
|
3
|
+
date: Date;
|
|
4
|
+
workerId: number;
|
|
5
|
+
sequence: number;
|
|
6
|
+
binary: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SnowflakeParts {
|
|
9
|
+
timestamp?: number | Date;
|
|
10
|
+
workerId?: number;
|
|
11
|
+
sequence?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const Snowflake: {
|
|
14
|
+
EPOCH: number;
|
|
15
|
+
deconstruct(id: string | bigint): DeconstructedSnowflake;
|
|
16
|
+
timestampOf(id: string | bigint): number;
|
|
17
|
+
generate({ timestamp, workerId, sequence }?: SnowflakeParts): string;
|
|
18
|
+
compare(a: string, b: string): -1 | 0 | 1;
|
|
19
|
+
isValid(value: unknown): value is string;
|
|
20
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const EPOCH = 1767225600000n;
|
|
2
|
+
const WORKER_BITS = 10n;
|
|
3
|
+
const SEQUENCE_BITS = 12n;
|
|
4
|
+
const WORKER_MASK = (1n << WORKER_BITS) - 1n;
|
|
5
|
+
const SEQUENCE_MASK = (1n << SEQUENCE_BITS) - 1n;
|
|
6
|
+
export const Snowflake = {
|
|
7
|
+
EPOCH: Number(EPOCH),
|
|
8
|
+
deconstruct(id) {
|
|
9
|
+
const value = BigInt(id);
|
|
10
|
+
const timestamp = Number((value >> (WORKER_BITS + SEQUENCE_BITS)) + EPOCH);
|
|
11
|
+
return {
|
|
12
|
+
timestamp,
|
|
13
|
+
date: new Date(timestamp),
|
|
14
|
+
workerId: Number((value >> SEQUENCE_BITS) & WORKER_MASK),
|
|
15
|
+
sequence: Number(value & SEQUENCE_MASK),
|
|
16
|
+
binary: value.toString(2).padStart(64, '0')
|
|
17
|
+
};
|
|
18
|
+
},
|
|
19
|
+
timestampOf(id) {
|
|
20
|
+
return Snowflake.deconstruct(id).timestamp;
|
|
21
|
+
},
|
|
22
|
+
generate({ timestamp = Date.now(), workerId = 0, sequence = 0 } = {}) {
|
|
23
|
+
const ms = BigInt(timestamp instanceof Date ? timestamp.getTime() : timestamp);
|
|
24
|
+
if (ms < EPOCH)
|
|
25
|
+
throw new RangeError('Timestamp is before the baff.gg epoch (2026-01-01T00:00:00Z).');
|
|
26
|
+
const id = ((ms - EPOCH) << (WORKER_BITS + SEQUENCE_BITS)) | ((BigInt(workerId) & WORKER_MASK) << SEQUENCE_BITS) | (BigInt(sequence) & SEQUENCE_MASK);
|
|
27
|
+
return id.toString();
|
|
28
|
+
},
|
|
29
|
+
compare(a, b) {
|
|
30
|
+
const x = BigInt(a);
|
|
31
|
+
const y = BigInt(b);
|
|
32
|
+
return x < y ? -1 : x > y ? 1 : 0;
|
|
33
|
+
},
|
|
34
|
+
isValid(value) {
|
|
35
|
+
return typeof value === 'string' && /^\d{1,19}$/.test(value) && BigInt(value) < 1n << 63n;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type EventMap = {
|
|
2
|
+
[event: string]: unknown[];
|
|
3
|
+
};
|
|
4
|
+
export interface TypedEmitterShape<E extends EventMap> {
|
|
5
|
+
on<K extends keyof E & string>(event: K, listener: (...args: E[K]) => void): this;
|
|
6
|
+
once<K extends keyof E & string>(event: K, listener: (...args: E[K]) => void): this;
|
|
7
|
+
off<K extends keyof E & string>(event: K, listener: (...args: E[K]) => void): this;
|
|
8
|
+
addListener<K extends keyof E & string>(event: K, listener: (...args: E[K]) => void): this;
|
|
9
|
+
removeListener<K extends keyof E & string>(event: K, listener: (...args: E[K]) => void): this;
|
|
10
|
+
removeAllListeners(event?: keyof E & string): this;
|
|
11
|
+
emit<K extends keyof E & string>(event: K, ...args: E[K]): boolean;
|
|
12
|
+
listenerCount(event: keyof E & string): number;
|
|
13
|
+
setMaxListeners(n: number): this;
|
|
14
|
+
}
|
|
15
|
+
export declare const TypedEmitter: new <E extends EventMap>(options?: {
|
|
16
|
+
captureRejections?: boolean;
|
|
17
|
+
}) => TypedEmitterShape<E>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export declare const Colors: {
|
|
2
|
+
readonly Default: 0;
|
|
3
|
+
readonly White: 16777215;
|
|
4
|
+
readonly Ink: 270365;
|
|
5
|
+
readonly Baff: 3065014;
|
|
6
|
+
readonly Green: 3066993;
|
|
7
|
+
readonly Red: 15158332;
|
|
8
|
+
readonly Orange: 15105570;
|
|
9
|
+
readonly Yellow: 15844367;
|
|
10
|
+
readonly Blue: 3447003;
|
|
11
|
+
readonly Pink: 15277667;
|
|
12
|
+
readonly Grey: 9807270;
|
|
13
|
+
readonly DarkGrey: 5533306;
|
|
14
|
+
};
|
|
15
|
+
export declare const MessageFlags: {
|
|
16
|
+
readonly Ephemeral: number;
|
|
17
|
+
readonly IsComponentsV2: number;
|
|
18
|
+
};
|
|
19
|
+
export declare const ComponentType: {
|
|
20
|
+
readonly ActionRow: 1;
|
|
21
|
+
readonly Button: 2;
|
|
22
|
+
readonly StringSelect: 3;
|
|
23
|
+
readonly TextInput: 4;
|
|
24
|
+
readonly UserSelect: 5;
|
|
25
|
+
readonly RoleSelect: 6;
|
|
26
|
+
readonly MentionableSelect: 7;
|
|
27
|
+
readonly ChannelSelect: 8;
|
|
28
|
+
readonly Section: 9;
|
|
29
|
+
readonly TextDisplay: 10;
|
|
30
|
+
readonly Thumbnail: 11;
|
|
31
|
+
readonly MediaGallery: 12;
|
|
32
|
+
readonly Separator: 14;
|
|
33
|
+
readonly Container: 17;
|
|
34
|
+
};
|
|
35
|
+
export declare const ButtonStyle: {
|
|
36
|
+
readonly Primary: 1;
|
|
37
|
+
readonly Secondary: 2;
|
|
38
|
+
readonly Success: 3;
|
|
39
|
+
readonly Danger: 4;
|
|
40
|
+
readonly Link: 5;
|
|
41
|
+
};
|
|
42
|
+
export declare const TextInputStyle: {
|
|
43
|
+
readonly Short: 1;
|
|
44
|
+
readonly Paragraph: 2;
|
|
45
|
+
};
|
|
46
|
+
export declare const SeparatorSpacing: {
|
|
47
|
+
readonly Small: 1;
|
|
48
|
+
readonly Large: 2;
|
|
49
|
+
};
|
|
50
|
+
export declare const ChannelType: {
|
|
51
|
+
readonly Text: "text";
|
|
52
|
+
readonly Announcement: "announcement";
|
|
53
|
+
readonly Forum: "forum";
|
|
54
|
+
readonly Voice: "voice";
|
|
55
|
+
readonly Stage: "stage";
|
|
56
|
+
readonly Category: "category";
|
|
57
|
+
readonly Thread: "thread";
|
|
58
|
+
};
|
|
59
|
+
export declare const ApplicationCommandOptionType: {
|
|
60
|
+
readonly Subcommand: "subcommand";
|
|
61
|
+
readonly SubcommandGroup: "subcommand_group";
|
|
62
|
+
readonly String: "string";
|
|
63
|
+
readonly Integer: "integer";
|
|
64
|
+
readonly Number: "number";
|
|
65
|
+
readonly Boolean: "boolean";
|
|
66
|
+
readonly User: "user";
|
|
67
|
+
readonly Channel: "channel";
|
|
68
|
+
readonly Role: "role";
|
|
69
|
+
};
|
|
70
|
+
export declare const PresenceStatus: {
|
|
71
|
+
readonly Online: "online";
|
|
72
|
+
readonly Idle: "idle";
|
|
73
|
+
readonly DoNotDisturb: "dnd";
|
|
74
|
+
readonly Invisible: "invisible";
|
|
75
|
+
};
|
|
76
|
+
export declare const DEFAULT_API_URL = "https://baff.gg/api";
|
|
77
|
+
export declare const DEFAULT_GATEWAY_URL = "wss://baff.gg/api/gateway";
|
|
78
|
+
export declare const VERSION = "0.1.0";
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export const Colors = {
|
|
2
|
+
Default: 0x000000,
|
|
3
|
+
White: 0xffffff,
|
|
4
|
+
Ink: 0x04201d,
|
|
5
|
+
Baff: 0x2ec4b6,
|
|
6
|
+
Green: 0x2ecc71,
|
|
7
|
+
Red: 0xe74c3c,
|
|
8
|
+
Orange: 0xe67e22,
|
|
9
|
+
Yellow: 0xf1c40f,
|
|
10
|
+
Blue: 0x3498db,
|
|
11
|
+
Pink: 0xe91e63,
|
|
12
|
+
Grey: 0x95a5a6,
|
|
13
|
+
DarkGrey: 0x546e7a
|
|
14
|
+
};
|
|
15
|
+
export const MessageFlags = {
|
|
16
|
+
Ephemeral: 1 << 6,
|
|
17
|
+
IsComponentsV2: 1 << 15
|
|
18
|
+
};
|
|
19
|
+
export const ComponentType = {
|
|
20
|
+
ActionRow: 1,
|
|
21
|
+
Button: 2,
|
|
22
|
+
StringSelect: 3,
|
|
23
|
+
TextInput: 4,
|
|
24
|
+
UserSelect: 5,
|
|
25
|
+
RoleSelect: 6,
|
|
26
|
+
MentionableSelect: 7,
|
|
27
|
+
ChannelSelect: 8,
|
|
28
|
+
Section: 9,
|
|
29
|
+
TextDisplay: 10,
|
|
30
|
+
Thumbnail: 11,
|
|
31
|
+
MediaGallery: 12,
|
|
32
|
+
Separator: 14,
|
|
33
|
+
Container: 17
|
|
34
|
+
};
|
|
35
|
+
export const ButtonStyle = {
|
|
36
|
+
Primary: 1,
|
|
37
|
+
Secondary: 2,
|
|
38
|
+
Success: 3,
|
|
39
|
+
Danger: 4,
|
|
40
|
+
Link: 5
|
|
41
|
+
};
|
|
42
|
+
export const TextInputStyle = {
|
|
43
|
+
Short: 1,
|
|
44
|
+
Paragraph: 2
|
|
45
|
+
};
|
|
46
|
+
export const SeparatorSpacing = {
|
|
47
|
+
Small: 1,
|
|
48
|
+
Large: 2
|
|
49
|
+
};
|
|
50
|
+
export const ChannelType = {
|
|
51
|
+
Text: 'text',
|
|
52
|
+
Announcement: 'announcement',
|
|
53
|
+
Forum: 'forum',
|
|
54
|
+
Voice: 'voice',
|
|
55
|
+
Stage: 'stage',
|
|
56
|
+
Category: 'category',
|
|
57
|
+
Thread: 'thread'
|
|
58
|
+
};
|
|
59
|
+
export const ApplicationCommandOptionType = {
|
|
60
|
+
Subcommand: 'subcommand',
|
|
61
|
+
SubcommandGroup: 'subcommand_group',
|
|
62
|
+
String: 'string',
|
|
63
|
+
Integer: 'integer',
|
|
64
|
+
Number: 'number',
|
|
65
|
+
Boolean: 'boolean',
|
|
66
|
+
User: 'user',
|
|
67
|
+
Channel: 'channel',
|
|
68
|
+
Role: 'role'
|
|
69
|
+
};
|
|
70
|
+
export const PresenceStatus = {
|
|
71
|
+
Online: 'online',
|
|
72
|
+
Idle: 'idle',
|
|
73
|
+
DoNotDisturb: 'dnd',
|
|
74
|
+
Invisible: 'invisible'
|
|
75
|
+
};
|
|
76
|
+
export const DEFAULT_API_URL = 'https://baff.gg/api';
|
|
77
|
+
export const DEFAULT_GATEWAY_URL = 'wss://baff.gg/api/gateway';
|
|
78
|
+
export const VERSION = '0.1.0';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const CUSTOM = /^<(a?):(\w{2,32}):(\d+)>$/;
|
|
2
|
+
export function resolveEmoji(emoji) {
|
|
3
|
+
if (typeof emoji === 'object')
|
|
4
|
+
return 'identifier' in emoji ? emoji.identifier : `${emoji.animated ? 'a:' : ''}${emoji.name}:${emoji.id}`;
|
|
5
|
+
const match = CUSTOM.exec(emoji.trim());
|
|
6
|
+
return match ? `${match[1] ? 'a:' : ''}${match[2]}:${match[3]}` : emoji;
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const userMention: (id: string) => `<@${string}>`;
|
|
2
|
+
export declare const roleMention: (id: string) => `<@&${string}>`;
|
|
3
|
+
export declare const channelMention: (id: string) => `<#${string}>`;
|
|
4
|
+
export declare const everyoneMention = "@everyone";
|
|
5
|
+
export declare const hereMention = "@here";
|
|
6
|
+
export declare const formatEmoji: (id: string, name: string, animated?: boolean) => string;
|
|
7
|
+
export declare const bold: (text: string) => string;
|
|
8
|
+
export declare const italic: (text: string) => string;
|
|
9
|
+
export declare const underline: (text: string) => string;
|
|
10
|
+
export declare const strikethrough: (text: string) => string;
|
|
11
|
+
export declare const spoiler: (text: string) => string;
|
|
12
|
+
export declare const inlineCode: (text: string) => string;
|
|
13
|
+
export declare const codeBlock: (content: string, language?: string) => string;
|
|
14
|
+
export declare const quote: (text: string) => string;
|
|
15
|
+
export declare const blockQuote: (text: string) => string;
|
|
16
|
+
export declare const heading: (text: string, level?: 1 | 2 | 3) => string;
|
|
17
|
+
export declare const subtext: (text: string) => string;
|
|
18
|
+
export declare const hyperlink: (text: string, url: string) => string;
|
|
19
|
+
export declare const hideLinkEmbed: (url: string) => string;
|
|
20
|
+
export interface EscapeOptions {
|
|
21
|
+
codeBlock?: boolean;
|
|
22
|
+
inlineCode?: boolean;
|
|
23
|
+
bold?: boolean;
|
|
24
|
+
italic?: boolean;
|
|
25
|
+
underline?: boolean;
|
|
26
|
+
strikethrough?: boolean;
|
|
27
|
+
spoiler?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function escapeMarkdown(text: string, options?: EscapeOptions): string;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const userMention = (id) => `<@${id}>`;
|
|
2
|
+
export const roleMention = (id) => `<@&${id}>`;
|
|
3
|
+
export const channelMention = (id) => `<#${id}>`;
|
|
4
|
+
export const everyoneMention = '@everyone';
|
|
5
|
+
export const hereMention = '@here';
|
|
6
|
+
export const formatEmoji = (id, name, animated = false) => `<${animated ? 'a' : ''}:${name}:${id}>`;
|
|
7
|
+
export const bold = (text) => `**${text}**`;
|
|
8
|
+
export const italic = (text) => `*${text}*`;
|
|
9
|
+
export const underline = (text) => `__${text}__`;
|
|
10
|
+
export const strikethrough = (text) => `~~${text}~~`;
|
|
11
|
+
export const spoiler = (text) => `||${text}||`;
|
|
12
|
+
export const inlineCode = (text) => `\`${text}\``;
|
|
13
|
+
export const codeBlock = (content, language = '') => `\`\`\`${language}\n${content}\n\`\`\``;
|
|
14
|
+
export const quote = (text) => `> ${text}`;
|
|
15
|
+
export const blockQuote = (text) => `>>> ${text}`;
|
|
16
|
+
export const heading = (text, level = 1) => `${'#'.repeat(level)} ${text}`;
|
|
17
|
+
export const subtext = (text) => `-# ${text}`;
|
|
18
|
+
export const hyperlink = (text, url) => `[${text}](${url})`;
|
|
19
|
+
export const hideLinkEmbed = (url) => `<${url}>`;
|
|
20
|
+
export function escapeMarkdown(text, options = {}) {
|
|
21
|
+
const on = (key) => options[key] !== false;
|
|
22
|
+
let chars = '\\';
|
|
23
|
+
if (on('italic') || on('bold'))
|
|
24
|
+
chars += '*';
|
|
25
|
+
if (on('italic') || on('underline'))
|
|
26
|
+
chars += '_';
|
|
27
|
+
if (on('strikethrough'))
|
|
28
|
+
chars += '~';
|
|
29
|
+
if (on('inlineCode') || on('codeBlock'))
|
|
30
|
+
chars += '`';
|
|
31
|
+
if (on('spoiler'))
|
|
32
|
+
chars += '|';
|
|
33
|
+
return text.replace(new RegExp(`[${chars.replace(/[\]\\^-]/g, '\\$&')}]`, 'g'), '\\$&');
|
|
34
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,58 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "baff.js",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The library for building bots on baff.gg: gateway client, REST, slash commands, components and embeds, with no runtime dependencies.",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/cjs/index.js",
|
|
8
|
+
"module": "./dist/esm/index.js",
|
|
9
|
+
"types": "./dist/esm/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": {
|
|
13
|
+
"types": "./dist/esm/index.d.ts",
|
|
14
|
+
"default": "./dist/esm/index.js"
|
|
15
|
+
},
|
|
16
|
+
"require": {
|
|
17
|
+
"types": "./dist/cjs/index.d.ts",
|
|
18
|
+
"default": "./dist/cjs/index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
22
|
+
},
|
|
23
|
+
"sideEffects": false,
|
|
24
|
+
"files": [
|
|
25
|
+
"dist",
|
|
26
|
+
"README.md",
|
|
27
|
+
"LICENSE",
|
|
28
|
+
"CHANGELOG.md"
|
|
29
|
+
],
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=20"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://docs.baff.gg",
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://support.baff.gg/requests/new?topic=bug"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"baff.gg",
|
|
39
|
+
"baff",
|
|
40
|
+
"bot",
|
|
41
|
+
"chat",
|
|
42
|
+
"gateway",
|
|
43
|
+
"slash-commands",
|
|
44
|
+
"api"
|
|
45
|
+
],
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "node scripts/clean.mjs dist && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node scripts/package-markers.mjs",
|
|
48
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
49
|
+
"test": "node scripts/clean.mjs .build-test && tsc -p tsconfig.test.json && node scripts/run-tests.mjs",
|
|
50
|
+
"check": "npm run typecheck && npm test",
|
|
51
|
+
"smoke": "node scripts/smoke.mjs",
|
|
52
|
+
"prepublishOnly": "npm run build && npm test && npm run smoke"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/node": "^22.10.0",
|
|
56
|
+
"typescript": "^5.7.0"
|
|
57
|
+
}
|
|
58
|
+
}
|