lunibee 0.1.7 → 0.2.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.
Files changed (78) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +225 -223
  3. package/dist/builders/commands.d.ts +6 -4
  4. package/dist/builders/components.d.ts +23 -0
  5. package/dist/builders/index.d.ts +2 -2
  6. package/dist/builders/index.js +120 -24
  7. package/dist/builders/index.js.map +9 -8
  8. package/dist/collection/index.d.ts +68 -1
  9. package/dist/collection/index.js +335 -1
  10. package/dist/collection/index.js.map +4 -4
  11. package/dist/core/collector.d.ts +13 -0
  12. package/dist/core/events.d.ts +112 -2
  13. package/dist/core/index.d.ts +30 -93
  14. package/dist/core/index.js +3386 -957
  15. package/dist/core/index.js.map +48 -24
  16. package/dist/core/permissions.d.ts +48 -0
  17. package/dist/formatters/index.js.map +1 -1
  18. package/dist/handlers/index.js.map +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +3806 -1193
  21. package/dist/index.js.map +64 -43
  22. package/dist/managers/advanced.d.ts +116 -0
  23. package/dist/managers/base.d.ts +13 -2
  24. package/dist/managers/emoji.d.ts +1 -1
  25. package/dist/managers/guild-resources.d.ts +109 -0
  26. package/dist/managers/guild.d.ts +33 -2
  27. package/dist/managers/index.d.ts +44 -6
  28. package/dist/managers/index.js +1186 -150
  29. package/dist/managers/index.js.map +27 -21
  30. package/dist/managers/message.d.ts +10 -1
  31. package/dist/rest/decoder.d.ts +23 -0
  32. package/dist/rest/errors.d.ts +53 -0
  33. package/dist/rest/index.d.ts +21 -17
  34. package/dist/rest/index.js +526 -264
  35. package/dist/rest/index.js.map +14 -8
  36. package/dist/rest/limiter.d.ts +42 -0
  37. package/dist/rest/redis.d.ts +18 -1
  38. package/dist/rest/route.d.ts +31 -0
  39. package/dist/rest/routes.d.ts +22 -0
  40. package/dist/rest/scheduler.d.ts +42 -0
  41. package/dist/rest/store.d.ts +29 -0
  42. package/dist/rest/transport.d.ts +40 -0
  43. package/dist/sharding/bus.d.ts +31 -0
  44. package/dist/sharding/cluster.d.ts +10 -0
  45. package/dist/sharding/index.d.ts +39 -2
  46. package/dist/sharding/index.js +1105 -404
  47. package/dist/sharding/index.js.map +18 -8
  48. package/dist/structures/base.d.ts +10 -0
  49. package/dist/structures/channels.d.ts +56 -0
  50. package/dist/structures/index.d.ts +1 -0
  51. package/dist/structures/index.js +305 -311
  52. package/dist/structures/index.js.map +18 -14
  53. package/dist/structures/interactions.d.ts +38 -52
  54. package/dist/structures/options.d.ts +55 -0
  55. package/dist/structures/resources.d.ts +3 -3
  56. package/dist/types/gateway-events.d.ts +132 -0
  57. package/dist/types/gateway.d.ts +197 -0
  58. package/dist/types/index.d.ts +53 -260
  59. package/dist/types/index.js +44 -2
  60. package/dist/types/index.js.map +5 -4
  61. package/dist/utils/index.js.map +1 -1
  62. package/dist/voice/index.d.ts +32 -1
  63. package/dist/voice/index.js +73 -7
  64. package/dist/voice/index.js.map +3 -3
  65. package/dist/ws/close-codes.d.ts +23 -0
  66. package/dist/ws/decoder.d.ts +58 -0
  67. package/dist/ws/heartbeat.d.ts +87 -0
  68. package/dist/ws/index.d.ts +18 -65
  69. package/dist/ws/index.js +911 -385
  70. package/dist/ws/index.js.map +15 -5
  71. package/dist/ws/opcodes.d.ts +14 -0
  72. package/dist/ws/protocol.d.ts +110 -0
  73. package/dist/ws/reconnect.d.ts +108 -0
  74. package/dist/ws/send-budget.d.ts +17 -0
  75. package/dist/ws/session.d.ts +100 -0
  76. package/dist/ws/state.d.ts +27 -0
  77. package/dist/ws/transport.d.ts +80 -0
  78. package/package.json +21 -20
@@ -52,8 +52,11 @@ export declare const Permission: {
52
52
  readonly createEvents: bigint;
53
53
  readonly useExternalSounds: bigint;
54
54
  readonly sendVoiceMessages: bigint;
55
+ readonly setVoiceChannelStatus: bigint;
55
56
  readonly sendPolls: bigint;
56
57
  readonly useExternalApps: bigint;
58
+ readonly pinMessages: bigint;
59
+ readonly bypassSlowmode: bigint;
57
60
  };
58
61
  /** Canonical PascalCase permission constants. */
59
62
  export declare const Permissions: {
@@ -104,8 +107,11 @@ export declare const Permissions: {
104
107
  readonly CreateEvents: bigint;
105
108
  readonly UseExternalSounds: bigint;
106
109
  readonly SendVoiceMessages: bigint;
110
+ readonly SetVoiceChannelStatus: bigint;
107
111
  readonly SendPolls: bigint;
108
112
  readonly UseExternalApps: bigint;
113
+ readonly PinMessages: bigint;
114
+ readonly BypassSlowmode: bigint;
109
115
  };
110
116
  /**
111
117
  * Permission flag bits with **bigint** values matching Discord's permission bit
@@ -163,8 +169,11 @@ export declare const PermissionFlagsBits: {
163
169
  readonly CreateEvents: bigint;
164
170
  readonly UseExternalSounds: bigint;
165
171
  readonly SendVoiceMessages: bigint;
172
+ readonly SetVoiceChannelStatus: bigint;
166
173
  readonly SendPolls: bigint;
167
174
  readonly UseExternalApps: bigint;
175
+ readonly PinMessages: bigint;
176
+ readonly BypassSlowmode: bigint;
168
177
  };
169
178
  /** Union of {@link PermissionFlagsBits} values (all bigint). */
170
179
  export type PermissionFlagsBits = (typeof PermissionFlagsBits)[keyof typeof PermissionFlagsBits];
@@ -230,6 +239,8 @@ export declare class PermissionSet {
230
239
  has(...permissions: PermissionResolvable[]): boolean;
231
240
  /** Checks whether any supplied permission is present (OR). @param permissions Permission names or raw bits. @returns True when at least one requested permission is present. */
232
241
  any(...permissions: PermissionResolvable[]): boolean;
242
+ /** Returns the known permission names from `permissions` that this set lacks. @param permissions Permission names or raw bits. */
243
+ missing(...permissions: PermissionResolvable[]): PermissionName[];
233
244
  /** Returns a new set with permissions added. @param permissions Permission names or raw bits. @returns A new permission set. */
234
245
  add(...permissions: PermissionResolvable[]): PermissionSet;
235
246
  /** Returns a new set with permissions removed. @param permissions Permission names or raw bits. @returns A new permission set. */
@@ -292,8 +303,11 @@ export declare class PermissionsBitField extends PermissionSet {
292
303
  readonly CreateEvents: bigint;
293
304
  readonly UseExternalSounds: bigint;
294
305
  readonly SendVoiceMessages: bigint;
306
+ readonly SetVoiceChannelStatus: bigint;
295
307
  readonly SendPolls: bigint;
296
308
  readonly UseExternalApps: bigint;
309
+ readonly PinMessages: bigint;
310
+ readonly BypassSlowmode: bigint;
297
311
  };
298
312
  /** Permission flags constants. */
299
313
  static readonly All: {
@@ -344,9 +358,43 @@ export declare class PermissionsBitField extends PermissionSet {
344
358
  readonly createEvents: bigint;
345
359
  readonly useExternalSounds: bigint;
346
360
  readonly sendVoiceMessages: bigint;
361
+ readonly setVoiceChannelStatus: bigint;
347
362
  readonly sendPolls: bigint;
348
363
  readonly useExternalApps: bigint;
364
+ readonly pinMessages: bigint;
365
+ readonly bypassSlowmode: bigint;
349
366
  };
350
367
  /** Creates a permissions bitfield. @param value Initial permission bitfield or array of permissions. */
351
368
  constructor(value?: PermissionResolvable);
352
369
  }
370
+ /** A role as needed for permission resolution. */
371
+ export interface PermissionRole {
372
+ id: string;
373
+ permissions: PermissionResolvable;
374
+ }
375
+ /** A channel permission overwrite (Discord's `permission_overwrites` entry). */
376
+ export interface PermissionOverwrite {
377
+ id: string;
378
+ type: PermissionOverwriteType | number;
379
+ allow: PermissionResolvable;
380
+ deny: PermissionResolvable;
381
+ }
382
+ /** Everything needed to resolve a member's permissions. */
383
+ export interface PermissionContext {
384
+ guildId: string;
385
+ /** Guild owner ID; the owner has every permission. */
386
+ ownerId?: string;
387
+ memberId: string;
388
+ memberRoleIds: readonly string[];
389
+ /** Guild roles, including `@everyone` (whose ID is the guild ID). */
390
+ roles: readonly PermissionRole[];
391
+ /** Channel overwrites; omit for guild-level permissions. */
392
+ overwrites?: readonly PermissionOverwrite[];
393
+ }
394
+ /**
395
+ * Resolves a member's effective permissions the way Discord does: base
396
+ * permissions from `@everyone` and the member's roles (owner and
397
+ * administrator get everything), then the channel's `@everyone` overwrite,
398
+ * the combined role overwrites, and finally the member overwrite.
399
+ */
400
+ export declare function computePermissions(context: PermissionContext): PermissionSet;
@@ -2,7 +2,7 @@
2
2
  "version": 3,
3
3
  "sources": ["../../packages/formatters/src/index.ts"],
4
4
  "sourcesContent": [
5
- "// ─── Mentions ──────────────────────────────────────────────────────────────────\r\n\r\n/** Creates a user mention from a Discord snowflake. */\r\nexport function userMention(id: string): string {\r\n return `<@${validateSnowflake(id, \"User ID\")}>`;\r\n}\r\n\r\n/** Creates a channel mention from a Discord snowflake. */\r\nexport function channelMention(id: string): string {\r\n return `<#${validateSnowflake(id, \"Channel ID\")}>`;\r\n}\r\n\r\n/** Creates a role mention from a Discord snowflake. */\r\nexport function roleMention(id: string): string {\r\n return `<@&${validateSnowflake(id, \"Role ID\")}>`;\r\n}\r\n\r\n// ─── Timestamps ────────────────────────────────────────────────────────────────\r\n\r\n/** Discord timestamp style formats. */\r\nexport type TimestampStyle = \"t\" | \"T\" | \"d\" | \"D\" | \"f\" | \"F\" | \"R\";\r\n\r\n/** Creates a Discord timestamp tag.\r\n * @param unixSeconds Unix timestamp in seconds.\r\n * @param style Optional display style: t=short time, T=long time, d=short date, D=long date, f=short datetime, F=long datetime, R=relative.\r\n */\r\nexport function timestamp(\r\n unixSeconds: number,\r\n style?: TimestampStyle | string,\r\n): string {\r\n if (!Number.isFinite(unixSeconds))\r\n throw new TypeError(\"Timestamp must be a finite Unix timestamp.\");\r\n if (style !== undefined && !/^[tTdDfFR]$/.test(style))\r\n throw new RangeError(\"Invalid Discord timestamp style.\");\r\n return `<t:${Math.floor(unixSeconds)}${style ? `:${style}` : \"\"}>`;\r\n}\r\n\r\n// ─── Markdown ─────────────────────────────────────────────────────────────────\r\n\r\n/** Wraps text in Discord bold markdown. */\r\nexport function bold(text: string): string {\r\n return `**${text}**`;\r\n}\r\n\r\n/** Wraps text in Discord italic markdown. */\r\nexport function italic(text: string): string {\r\n return `_${text}_`;\r\n}\r\n\r\n/** Wraps text in Discord underline markdown. */\r\nexport function underline(text: string): string {\r\n return `__${text}__`;\r\n}\r\n\r\n/** Wraps text in Discord strikethrough markdown. */\r\nexport function strikethrough(text: string): string {\r\n return `~~${text}~~`;\r\n}\r\n\r\n/** Wraps text in a Discord spoiler tag (shown masked until clicked). */\r\nexport function spoiler(text: string): string {\r\n return `||${text}||`;\r\n}\r\n\r\n/** Alias for spoiler — hides text until revealed. */\r\nexport function masked(text: string): string {\r\n return spoiler(text);\r\n}\r\n\r\n/** Wraps text in Discord inline code. */\r\nexport function inlineCode(text: string): string {\r\n return `\\`${text}\\``;\r\n}\r\n\r\n/** Wraps text in a Discord fenced code block.\r\n * @param text Code content.\r\n * @param language Optional language identifier for syntax highlighting.\r\n */\r\nexport function codeBlock(text: string, language = \"\"): string {\r\n return `\\`\\`\\`${language}\\n${text}\\n\\`\\`\\``;\r\n}\r\n\r\n/** Creates a Discord masked hyperlink: [label](url).\r\n * @param label Display text.\r\n * @param url Destination URL.\r\n * @param title Optional hover title.\r\n */\r\nexport function link(label: string, url: string, title?: string): string {\r\n const titlePart = title ? ` \"${title}\"` : \"\";\r\n return `[${label}](${url}${titlePart})`;\r\n}\r\n\r\n/** Wraps each line of text in a Discord block quote (> prefix). */\r\nexport function blockQuote(text: string): string {\r\n return text\r\n .split(\"\\n\")\r\n .map((line) => `> ${line}`)\r\n .join(\"\\n\");\r\n}\r\n\r\n/** Creates a Discord heading at the given level (1–3). */\r\nexport function heading(text: string, level: 1 | 2 | 3 = 1): string {\r\n return `${\"#\".repeat(level)} ${text}`;\r\n}\r\n\r\n/** Wraps text in Discord's subtext markdown (-# prefix). */\r\nexport function subtext(text: string): string {\r\n return `-# ${text}`;\r\n}\r\n\r\n/** Creates a numbered ordered list from items. */\r\nexport function orderedList(...items: string[]): string {\r\n return items.map((item, i) => `${i + 1}. ${item}`).join(\"\\n\");\r\n}\r\n\r\n/** Creates an unordered bullet list from items. */\r\nexport function bulletList(...items: string[]): string {\r\n return items.map((item) => `- ${item}`).join(\"\\n\");\r\n}\r\n\r\n// ─── Utilities ─────────────────────────────────────────────────────────────────\r\n\r\n/** Escapes Discord markdown control characters in a string. */\r\nexport function escapeMarkdown(value: string): string {\r\n return value.replace(/[\\\\*_`~|>]/g, \"\\\\$&\");\r\n}\r\n\r\nfunction validateSnowflake(id: string, field: string): string {\r\n const len = id.length;\r\n if (len < 1 || len > 20) {\r\n throw new TypeError(`${field} must be a valid Discord snowflake.`);\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const code = id.charCodeAt(i);\r\n if (code < 48 || code > 57) {\r\n throw new TypeError(`${field} must be a valid Discord snowflake.`);\r\n }\r\n }\r\n return id;\r\n}\r\n"
5
+ "// ─── Mentions ──────────────────────────────────────────────────────────────────\n\n/** Creates a user mention from a Discord snowflake. */\nexport function userMention(id: string): string {\n return `<@${validateSnowflake(id, \"User ID\")}>`;\n}\n\n/** Creates a channel mention from a Discord snowflake. */\nexport function channelMention(id: string): string {\n return `<#${validateSnowflake(id, \"Channel ID\")}>`;\n}\n\n/** Creates a role mention from a Discord snowflake. */\nexport function roleMention(id: string): string {\n return `<@&${validateSnowflake(id, \"Role ID\")}>`;\n}\n\n// ─── Timestamps ────────────────────────────────────────────────────────────────\n\n/** Discord timestamp style formats. */\nexport type TimestampStyle = \"t\" | \"T\" | \"d\" | \"D\" | \"f\" | \"F\" | \"R\";\n\n/** Creates a Discord timestamp tag.\n * @param unixSeconds Unix timestamp in seconds.\n * @param style Optional display style: t=short time, T=long time, d=short date, D=long date, f=short datetime, F=long datetime, R=relative.\n */\nexport function timestamp(\n unixSeconds: number,\n style?: TimestampStyle | string,\n): string {\n if (!Number.isFinite(unixSeconds))\n throw new TypeError(\"Timestamp must be a finite Unix timestamp.\");\n if (style !== undefined && !/^[tTdDfFR]$/.test(style))\n throw new RangeError(\"Invalid Discord timestamp style.\");\n return `<t:${Math.floor(unixSeconds)}${style ? `:${style}` : \"\"}>`;\n}\n\n// ─── Markdown ─────────────────────────────────────────────────────────────────\n\n/** Wraps text in Discord bold markdown. */\nexport function bold(text: string): string {\n return `**${text}**`;\n}\n\n/** Wraps text in Discord italic markdown. */\nexport function italic(text: string): string {\n return `_${text}_`;\n}\n\n/** Wraps text in Discord underline markdown. */\nexport function underline(text: string): string {\n return `__${text}__`;\n}\n\n/** Wraps text in Discord strikethrough markdown. */\nexport function strikethrough(text: string): string {\n return `~~${text}~~`;\n}\n\n/** Wraps text in a Discord spoiler tag (shown masked until clicked). */\nexport function spoiler(text: string): string {\n return `||${text}||`;\n}\n\n/** Alias for spoiler — hides text until revealed. */\nexport function masked(text: string): string {\n return spoiler(text);\n}\n\n/** Wraps text in Discord inline code. */\nexport function inlineCode(text: string): string {\n return `\\`${text}\\``;\n}\n\n/** Wraps text in a Discord fenced code block.\n * @param text Code content.\n * @param language Optional language identifier for syntax highlighting.\n */\nexport function codeBlock(text: string, language = \"\"): string {\n return `\\`\\`\\`${language}\\n${text}\\n\\`\\`\\``;\n}\n\n/** Creates a Discord masked hyperlink: [label](url).\n * @param label Display text.\n * @param url Destination URL.\n * @param title Optional hover title.\n */\nexport function link(label: string, url: string, title?: string): string {\n const titlePart = title ? ` \"${title}\"` : \"\";\n return `[${label}](${url}${titlePart})`;\n}\n\n/** Wraps each line of text in a Discord block quote (> prefix). */\nexport function blockQuote(text: string): string {\n return text\n .split(\"\\n\")\n .map((line) => `> ${line}`)\n .join(\"\\n\");\n}\n\n/** Creates a Discord heading at the given level (1–3). */\nexport function heading(text: string, level: 1 | 2 | 3 = 1): string {\n return `${\"#\".repeat(level)} ${text}`;\n}\n\n/** Wraps text in Discord's subtext markdown (-# prefix). */\nexport function subtext(text: string): string {\n return `-# ${text}`;\n}\n\n/** Creates a numbered ordered list from items. */\nexport function orderedList(...items: string[]): string {\n return items.map((item, i) => `${i + 1}. ${item}`).join(\"\\n\");\n}\n\n/** Creates an unordered bullet list from items. */\nexport function bulletList(...items: string[]): string {\n return items.map((item) => `- ${item}`).join(\"\\n\");\n}\n\n// ─── Utilities ─────────────────────────────────────────────────────────────────\n\n/** Escapes Discord markdown control characters in a string. */\nexport function escapeMarkdown(value: string): string {\n return value.replace(/[\\\\*_`~|>]/g, \"\\\\$&\");\n}\n\nfunction validateSnowflake(id: string, field: string): string {\n const len = id.length;\n if (len < 1 || len > 20) {\n throw new TypeError(`${field} must be a valid Discord snowflake.`);\n }\n for (let i = 0; i < len; i++) {\n const code = id.charCodeAt(i);\n if (code < 48 || code > 57) {\n throw new TypeError(`${field} must be a valid Discord snowflake.`);\n }\n }\n return id;\n}\n"
6
6
  ],
7
7
  "mappings": ";;AAGO,SAAS,WAAW,CAAC,IAAoB;AAAA,EAC5C,OAAO,KAAK,kBAAkB,IAAI,SAAS;AAAA;AAIxC,SAAS,cAAc,CAAC,IAAoB;AAAA,EAC/C,OAAO,KAAK,kBAAkB,IAAI,YAAY;AAAA;AAI3C,SAAS,WAAW,CAAC,IAAoB;AAAA,EAC5C,OAAO,MAAM,kBAAkB,IAAI,SAAS;AAAA;AAYzC,SAAS,SAAS,CACrB,aACA,OACM;AAAA,EACN,IAAI,CAAC,OAAO,SAAS,WAAW;AAAA,IAC5B,MAAM,IAAI,UAAU,4CAA4C;AAAA,EACpE,IAAI,UAAU,aAAa,CAAC,cAAc,KAAK,KAAK;AAAA,IAChD,MAAM,IAAI,WAAW,kCAAkC;AAAA,EAC3D,OAAO,MAAM,KAAK,MAAM,WAAW,IAAI,QAAQ,IAAI,UAAU;AAAA;AAM1D,SAAS,IAAI,CAAC,MAAsB;AAAA,EACvC,OAAO,KAAK;AAAA;AAIT,SAAS,MAAM,CAAC,MAAsB;AAAA,EACzC,OAAO,IAAI;AAAA;AAIR,SAAS,SAAS,CAAC,MAAsB;AAAA,EAC5C,OAAO,KAAK;AAAA;AAIT,SAAS,aAAa,CAAC,MAAsB;AAAA,EAChD,OAAO,KAAK;AAAA;AAIT,SAAS,OAAO,CAAC,MAAsB;AAAA,EAC1C,OAAO,KAAK;AAAA;AAIT,SAAS,MAAM,CAAC,MAAsB;AAAA,EACzC,OAAO,QAAQ,IAAI;AAAA;AAIhB,SAAS,UAAU,CAAC,MAAsB;AAAA,EAC7C,OAAO,KAAK;AAAA;AAOT,SAAS,SAAS,CAAC,MAAc,WAAW,IAAY;AAAA,EAC3D,OAAO,SAAS;AAAA,EAAa;AAAA;AAAA;AAQ1B,SAAS,IAAI,CAAC,OAAe,KAAa,OAAwB;AAAA,EACrE,MAAM,YAAY,QAAQ,KAAK,WAAW;AAAA,EAC1C,OAAO,IAAI,UAAU,MAAM;AAAA;AAIxB,SAAS,UAAU,CAAC,MAAsB;AAAA,EAC7C,OAAO,KACF,MAAM;AAAA,CAAI,EACV,IAAI,CAAC,SAAS,KAAK,MAAM,EACzB,KAAK;AAAA,CAAI;AAAA;AAIX,SAAS,OAAO,CAAC,MAAc,QAAmB,GAAW;AAAA,EAChE,OAAO,GAAG,IAAI,OAAO,KAAK,KAAK;AAAA;AAI5B,SAAS,OAAO,CAAC,MAAsB;AAAA,EAC1C,OAAO,MAAM;AAAA;AAIV,SAAS,WAAW,IAAI,OAAyB;AAAA,EACpD,OAAO,MAAM,IAAI,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK;AAAA,CAAI;AAAA;AAIzD,SAAS,UAAU,IAAI,OAAyB;AAAA,EACnD,OAAO,MAAM,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,CAAI;AAAA;AAM9C,SAAS,cAAc,CAAC,OAAuB;AAAA,EAClD,OAAO,MAAM,QAAQ,eAAe,MAAM;AAAA;AAG9C,SAAS,iBAAiB,CAAC,IAAY,OAAuB;AAAA,EAC1D,MAAM,MAAM,GAAG;AAAA,EACf,IAAI,MAAM,KAAK,MAAM,IAAI;AAAA,IACrB,MAAM,IAAI,UAAU,GAAG,0CAA0C;AAAA,EACrE;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,KAAK,KAAK;AAAA,IAC1B,MAAM,OAAO,GAAG,WAAW,CAAC;AAAA,IAC5B,IAAI,OAAO,MAAM,OAAO,IAAI;AAAA,MACxB,MAAM,IAAI,UAAU,GAAG,0CAA0C;AAAA,IACrE;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;",
8
8
  "debugId": "5BA83CBED742A82864756E2164756E21",
@@ -2,7 +2,7 @@
2
2
  "version": 3,
3
3
  "sources": ["../../packages/handlers/src/index.ts"],
4
4
  "sourcesContent": [
5
- "/** A typed handler registry for Lunibee events. */\r\nexport class HandlerRegistry<\r\n Events extends { [K in keyof Events]: unknown[] },\r\n> {\r\n /** Registered event handlers. */\r\n readonly #handlers = new Map<\r\n keyof Events,\r\n Set<(...args: any[]) => unknown>\r\n >();\r\n /** Registers a handler for an event. @param event Event key. @param handler Handler callback. @returns This registry. */\r\n public on<K extends keyof Events>(\r\n event: K,\r\n handler: (...args: Events[K]) => unknown,\r\n ): this {\r\n let handlers = this.#handlers.get(event);\r\n if (!handlers) {\r\n handlers = new Set();\r\n this.#handlers.set(event, handlers);\r\n }\r\n handlers.add(handler);\r\n return this;\r\n }\r\n /** Registers a one-shot handler. @param event Event key. @param handler Handler callback. @returns This registry. */\r\n public once<K extends keyof Events>(\r\n event: K,\r\n handler: (...args: Events[K]) => unknown,\r\n ): this {\r\n const wrapped = (...args: Events[K]) => {\r\n this.off(event, wrapped);\r\n return handler(...args);\r\n };\r\n return this.on(event, wrapped);\r\n }\r\n /** Removes a handler. @param event Event key. @param handler Handler callback. @returns This registry. */\r\n public off<K extends keyof Events>(\r\n event: K,\r\n handler: (...args: Events[K]) => unknown,\r\n ): this {\r\n this.#handlers.get(event)?.delete(handler);\r\n return this;\r\n }\r\n /** Dispatches an event to registered handlers. @param event Event key. @param args Event arguments. @returns A promise fulfilled after handlers complete. */\r\n public async dispatch<K extends keyof Events>(\r\n event: K,\r\n ...args: Events[K]\r\n ): Promise<void> {\r\n for (const handler of this.#handlers.get(event) ?? [])\r\n await handler(...args);\r\n }\r\n /** Emits an event using the conventional emitter name. @param event Event key. @param args Event arguments. @returns A promise fulfilled after handlers complete. */\r\n public emit<K extends keyof Events>(\r\n event: K,\r\n ...args: Events[K]\r\n ): Promise<void> {\r\n return this.dispatch(event, ...args);\r\n }\r\n}\r\n"
5
+ "/** A typed handler registry for Lunibee events. */\nexport class HandlerRegistry<\n Events extends { [K in keyof Events]: unknown[] },\n> {\n /** Registered event handlers. */\n readonly #handlers = new Map<\n keyof Events,\n Set<(...args: any[]) => unknown>\n >();\n /** Registers a handler for an event. @param event Event key. @param handler Handler callback. @returns This registry. */\n public on<K extends keyof Events>(\n event: K,\n handler: (...args: Events[K]) => unknown,\n ): this {\n let handlers = this.#handlers.get(event);\n if (!handlers) {\n handlers = new Set();\n this.#handlers.set(event, handlers);\n }\n handlers.add(handler);\n return this;\n }\n /** Registers a one-shot handler. @param event Event key. @param handler Handler callback. @returns This registry. */\n public once<K extends keyof Events>(\n event: K,\n handler: (...args: Events[K]) => unknown,\n ): this {\n const wrapped = (...args: Events[K]) => {\n this.off(event, wrapped);\n return handler(...args);\n };\n return this.on(event, wrapped);\n }\n /** Removes a handler. @param event Event key. @param handler Handler callback. @returns This registry. */\n public off<K extends keyof Events>(\n event: K,\n handler: (...args: Events[K]) => unknown,\n ): this {\n this.#handlers.get(event)?.delete(handler);\n return this;\n }\n /** Dispatches an event to registered handlers. @param event Event key. @param args Event arguments. @returns A promise fulfilled after handlers complete. */\n public async dispatch<K extends keyof Events>(\n event: K,\n ...args: Events[K]\n ): Promise<void> {\n for (const handler of this.#handlers.get(event) ?? [])\n await handler(...args);\n }\n /** Emits an event using the conventional emitter name. @param event Event key. @param args Event arguments. @returns A promise fulfilled after handlers complete. */\n public emit<K extends keyof Events>(\n event: K,\n ...args: Events[K]\n ): Promise<void> {\n return this.dispatch(event, ...args);\n }\n}\n"
6
6
  ],
7
7
  "mappings": ";;AACO,MAAM,gBAEX;AAAA,EAEW,YAAY,IAAI;AAAA,EAKlB,EAA0B,CAC7B,OACA,SACI;AAAA,IACJ,IAAI,WAAW,KAAK,UAAU,IAAI,KAAK;AAAA,IACvC,IAAI,CAAC,UAAU;AAAA,MACX,WAAW,IAAI;AAAA,MACf,KAAK,UAAU,IAAI,OAAO,QAAQ;AAAA,IACtC;AAAA,IACA,SAAS,IAAI,OAAO;AAAA,IACpB,OAAO;AAAA;AAAA,EAGJ,IAA4B,CAC/B,OACA,SACI;AAAA,IACJ,MAAM,UAAU,IAAI,SAAoB;AAAA,MACpC,KAAK,IAAI,OAAO,OAAO;AAAA,MACvB,OAAO,QAAQ,GAAG,IAAI;AAAA;AAAA,IAE1B,OAAO,KAAK,GAAG,OAAO,OAAO;AAAA;AAAA,EAG1B,GAA2B,CAC9B,OACA,SACI;AAAA,IACJ,KAAK,UAAU,IAAI,KAAK,GAAG,OAAO,OAAO;AAAA,IACzC,OAAO;AAAA;AAAA,OAGE,SAAgC,CACzC,UACG,MACU;AAAA,IACb,WAAW,WAAW,KAAK,UAAU,IAAI,KAAK,KAAK,CAAC;AAAA,MAChD,MAAM,QAAQ,GAAG,IAAI;AAAA;AAAA,EAGtB,IAA4B,CAC/B,UACG,MACU;AAAA,IACb,OAAO,KAAK,SAAS,OAAO,GAAG,IAAI;AAAA;AAE3C;",
8
8
  "debugId": "C1392DF8895F311564756E2164756E21",
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export * from "@lunibee/utils";
10
10
  export * from "@lunibee/voice";
11
11
  export * from "@lunibee/ws";
12
12
  export type { Snowflake, GatewayIntentResolvable, GatewayProperties, GatewayPresenceActivity, GatewayPresence, ClientOptions, RESTOptions, UserData, ClientUser, GatewayPayload, APIError, APIEmbedFooter, APIEmbedMedia, APIEmbedProvider, APIEmbedAuthor, APIEmbedField, APIEmbed, APISelectMenuOption, APIPartialEmoji, APIButtonComponent, APISelectMenuComponent, APITextInputComponent, APIMessageActionRowComponent, APIActionRowComponent, APIMessageComponent, APIAttachment, APIStickerItem, APISticker, APIMessageReference, APIMessageReaction, APIMessage, APIChannel, APIThreadMetadata, APIForumTag, APIThreadMember, APIRole, APIEmoji, APIGuild, APIGuildMember, APIVoiceState, APIVoiceServerUpdate, APIActivity, APIPresenceUpdate, APITypingStart, APIInviteCreate, APIInviteDelete, APIWebhooksUpdate, APIWebhook, APIAutoModerationAction, APIAutoModerationRule, APIAutoModerationActionExecution, APIGuildScheduledEventEntityMetadata, APIGuildScheduledEvent, APIStageInstance, APIApplicationCommandOption, APIApplicationCommand, ApplicationCommandData, APIReadyEvent, APIMessageReactionEvent, APIMessageReactionRemoveEmojiEvent, APIMessageDeleteEvent, APIMessageDeleteBulkEvent, APIChannelDeleteEvent, APIGuildDeleteEvent, APIThreadEvent, APIThreadListSync, APIThreadMembersUpdate, APIGuildRoleEvent, APIGuildRoleDeleteEvent, APIGuildBanEvent, APIGuildEmojisUpdateEvent, APIGuildStickersUpdateEvent, APIChannelPinsUpdate, APIGuildMembersChunk, APIGuildScheduledEventUserEvent, APIMessagePollVoteEvent, } from "@lunibee/types";
13
- export { GatewayIntentBits, IntentBits, Intents, resolveGatewayIntents, MessageFlags, ChannelType, ApplicationCommandOptionType, ApplicationCommandType, StickerFormatType, StickerType, VerificationLevel, PremiumTier, } from "@lunibee/types";
13
+ export { GatewayIntentBits, IntentBits, Intents, IntentsBitField, resolveGatewayIntents, MessageFlags, ChannelType, ApplicationCommandOptionType, ApplicationCommandType, StickerFormatType, StickerType, VerificationLevel, PremiumTier, } from "@lunibee/types";
14
14
  export * from "@lunibee/builders";
15
15
  export { CommandInteraction, ComponentInteraction, ModalSubmitInteraction, AutocompleteInteraction, Interaction, GuildMember, Role, TextChannel, Message, Embed, Webhook, AuditLog, AuditLogEntry, } from "@lunibee/structures";
16
16
  export { EmbedBuilder, SlashCommandBuilder, ButtonBuilder, ButtonStyle, StringSelectBuilder, EntitySelectBuilder, ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder, AttachmentBuilder, } from "@lunibee/builders";