@raspberryvarg/bot-kit 1.0.1 → 1.0.3

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.
@@ -1,15 +1,17 @@
1
- interface Injectable {
2
- token: symbol | string;
3
- }
4
- type Token<T> = ((abstract new (...args: unknown[]) => T) & Injectable) | string | symbol;
5
- type Factory<T> = (container: Container) => T;
1
+ import type { Token } from './token.js';
2
+ type ImplFactory<T> = (container: Container) => T;
6
3
  declare class Container {
7
4
  private registry;
8
5
  private instances;
9
- register<T>(token: Token<T>, factory: Factory<T>): void;
6
+ register<T>(token: Token<T>, factory: ImplFactory<T>): void;
10
7
  resolve<T>(token: Token<T>): T;
11
8
  }
12
9
  export declare const container: Container;
10
+ /**
11
+ * Inject a registered dependency.
12
+ *
13
+ * @throws {Error} If the dependency is not registered.
14
+ */
13
15
  export declare function inject<T>(token: Token<T>): T;
14
16
  export {};
15
17
  //# sourceMappingURL=container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/core/container.ts"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;AAC1F,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,KAAK,CAAC,CAAC;AAE9C,cAAM,SAAS;IACb,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,SAAS,CAAsC;IAEvD,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAyB/C;IAED,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAoB7B;CACF;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC;AAEzC,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAE5C"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/core/container.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIxC,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,KAAK,CAAC,CAAC;AAElD,cAAM,SAAS;IACb,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,SAAS,CAAsC;IAEvD,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAyBnD;IAED,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAoB7B;CACF;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAE5C"}
@@ -44,6 +44,11 @@ class Container {
44
44
  }
45
45
  }
46
46
  export const container = new Container();
47
+ /**
48
+ * Inject a registered dependency.
49
+ *
50
+ * @throws {Error} If the dependency is not registered.
51
+ */
47
52
  export function inject(token) {
48
53
  return container.resolve(token);
49
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/core/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AASrD,MAAM,SAAS;IACL,QAAQ,GAAG,IAAI,GAAG,EAAoC,CAAC;IACvD,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEvD,QAAQ,CAAI,KAAe,EAAE,OAAmB;QAC9C,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM;YACN,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,OAAO,CAAC,8BAA8B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,OAAO,CAAC,8CAA8C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,kEAAkE,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,wDAAwD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAI,KAAe;QACxB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,oDAAoD;YACpD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAM,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpC,oDAAoD;QACpD,OAAO,QAAa,CAAC;IACvB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AAEzC,MAAM,UAAU,MAAM,CAAI,KAAe;IACvC,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/core/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAIrD,MAAM,SAAS;IACL,QAAQ,GAAG,IAAI,GAAG,EAAwC,CAAC;IAC3D,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEvD,QAAQ,CAAI,KAAe,EAAE,OAAuB;QAClD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM;YACN,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,OAAO,CAAC,8BAA8B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,OAAO,CAAC,8CAA8C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,kEAAkE,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,wDAAwD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAI,KAAe;QACxB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,oDAAoD;YACpD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAM,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpC,oDAAoD;QACpD,OAAO,QAAa,CAAC;IACvB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAI,KAAe;IACvC,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -1,4 +1,5 @@
1
- export { inject, container } from './container.js';
2
- export { bootstrap } from './bootstrap.js';
3
1
  export * from './config.js';
2
+ export * from './token.js';
3
+ export { bootstrap } from './bootstrap.js';
4
+ export { inject, container } from './container.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,4 +1,5 @@
1
- export { inject, container } from './container.js';
2
- export { bootstrap } from './bootstrap.js';
3
1
  export * from './config.js';
2
+ export * from './token.js';
3
+ export { bootstrap } from './bootstrap.js';
4
+ export { inject, container } from './container.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Any object that can be used as a dependency injection token.
3
+ */
4
+ export interface Injectable {
5
+ readonly token: symbol | string;
6
+ }
7
+ /**
8
+ * Type-safe injection token.
9
+ */
10
+ export interface InjectionToken<T> extends Injectable {
11
+ readonly __type?: T;
12
+ }
13
+ /**
14
+ * Injection token based on a constructor instance.
15
+ */
16
+ export type ConstructorInjectionToken<T> = (abstract new (...args: unknown[]) => T) & Injectable;
17
+ /**
18
+ * All valid tokens for dependency injection.
19
+ */
20
+ export type Token<T> = ConstructorInjectionToken<T> | InjectionToken<T> | string | symbol;
21
+ /**
22
+ * Creates a type-safe injection token.
23
+ */
24
+ export declare function createToken<T>(token: symbol | string): InjectionToken<T>;
25
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/core/token.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,UAAU;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CAAC,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1F;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAExE"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Creates a type-safe injection token.
3
+ */
4
+ export function createToken(token) {
5
+ return { token };
6
+ }
7
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/core/token.ts"],"names":[],"mappings":"AAwBA;;GAEG;AACH,MAAM,UAAU,WAAW,CAAI,KAAsB;IACnD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -1,29 +1,45 @@
1
- import type { SlashCommandBuilder, ContextMenuCommandBuilder, ChatInputCommandInteraction, ContextMenuCommandInteraction, AutocompleteInteraction } from 'discord.js';
1
+ import { type AutocompleteInteraction, type Awaitable, type ChatInputCommandInteraction, type ContextMenuCommandInteraction, type RESTPostAPIChatInputApplicationCommandsJSONBody, type RESTPostAPIContextMenuApplicationCommandsJSONBody } from 'discord.js';
2
+ import type { SerializableOr } from '../util/serializableOr.js';
2
3
  /**
3
- * Instantiated slash command handler definition.
4
+ * Valid data for slash commands.
5
+ */
6
+ export type SlashCommandData = SerializableOr<RESTPostAPIChatInputApplicationCommandsJSONBody>;
7
+ /**
8
+ * Valid data for context menu commands.
9
+ */
10
+ export type ContextMenuCommandData = SerializableOr<RESTPostAPIContextMenuApplicationCommandsJSONBody>;
11
+ /**
12
+ * Slash command handler definition.
4
13
  */
5
14
  export interface SlashCommandHandler {
6
15
  __router_isSlashCommandHandler: true;
7
- data: SlashCommandBuilder;
8
- execute: (interaction: ChatInputCommandInteraction) => Promise<void>;
9
- autocomplete?: (interaction: AutocompleteInteraction) => Promise<void>;
16
+ data: SlashCommandData;
17
+ execute: (interaction: ChatInputCommandInteraction) => Awaitable<void>;
18
+ autocomplete?: (interaction: AutocompleteInteraction) => Awaitable<void>;
10
19
  }
11
20
  /**
12
21
  * Creates a slash command handler definition.
13
22
  */
14
23
  export declare function defineSlashCommand(definition: Omit<SlashCommandHandler, '__router_isSlashCommandHandler'>): SlashCommandHandler;
24
+ /**
25
+ * Returns true if the value is a slash command handler created with {@link defineSlashCommand}.
26
+ */
15
27
  export declare function isSlashCommandHandler(value: unknown): value is SlashCommandHandler;
16
28
  /**
17
- * Instantiated context menu command handler definition.
29
+ * Context menu command handler definition.
18
30
  */
19
31
  export interface ContextMenuCommandHandler {
20
32
  __router_isContextMenuCommandHandler: true;
21
- data: ContextMenuCommandBuilder;
22
- execute: (interaction: ContextMenuCommandInteraction) => Promise<void>;
33
+ data: ContextMenuCommandData;
34
+ execute: (interaction: ContextMenuCommandInteraction) => Awaitable<void>;
23
35
  }
24
36
  /**
25
37
  * Creates a context menu command handler definition.
26
38
  */
27
39
  export declare function defineContextMenuCommand(definition: Omit<ContextMenuCommandHandler, '__router_isContextMenuCommandHandler'>): ContextMenuCommandHandler;
40
+ /**
41
+ * Returns true if the value is a context menu command handler created with
42
+ * {@link defineContextMenuCommand}.
43
+ */
28
44
  export declare function isContextMenuCommandHandler(value: unknown): value is ContextMenuCommandHandler;
29
45
  //# sourceMappingURL=command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/discord/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B,EAAE,IAAI,CAAC;IACrC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,CAAC,WAAW,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,gCAAgC,CAAC,GACtE,mBAAmB,CAKrB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,oCAAoC,EAAE,IAAI,CAAC;IAC3C,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,CAAC,WAAW,EAAE,6BAA6B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,IAAI,CAAC,yBAAyB,EAAE,sCAAsC,CAAC,GAClF,yBAAyB,CAK3B;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,yBAAyB,CAI9F"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/discord/command.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACd,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,+CAA+C,EACpD,KAAK,iDAAiD,EACvD,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,+CAA+C,CAAC,CAAC;AAE/F;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAChC,cAAc,CAAC,iDAAiD,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B,EAAE,IAAI,CAAC;IACrC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,CAAC,WAAW,EAAE,2BAA2B,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;IACvE,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,uBAAuB,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,gCAAgC,CAAC,GACtE,mBAAmB,CAKrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,oCAAoC,EAAE,IAAI,CAAC;IAC3C,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,CAAC,WAAW,EAAE,6BAA6B,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,IAAI,CAAC,yBAAyB,EAAE,sCAAsC,CAAC,GAClF,yBAAyB,CAK3B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,yBAAyB,CAI9F"}
@@ -7,6 +7,9 @@ export function defineSlashCommand(definition) {
7
7
  __router_isSlashCommandHandler: true,
8
8
  };
9
9
  }
10
+ /**
11
+ * Returns true if the value is a slash command handler created with {@link defineSlashCommand}.
12
+ */
10
13
  export function isSlashCommandHandler(value) {
11
14
  return value != null && typeof value === 'object' && '__router_isSlashCommandHandler' in value;
12
15
  }
@@ -19,6 +22,10 @@ export function defineContextMenuCommand(definition) {
19
22
  __router_isContextMenuCommandHandler: true,
20
23
  };
21
24
  }
25
+ /**
26
+ * Returns true if the value is a context menu command handler created with
27
+ * {@link defineContextMenuCommand}.
28
+ */
22
29
  export function isContextMenuCommandHandler(value) {
23
30
  return (value != null && typeof value === 'object' && '__router_isContextMenuCommandHandler' in value);
24
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/discord/command.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAuE;IAEvE,OAAO;QACL,GAAG,UAAU;QACb,8BAA8B,EAAE,IAAI;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,gCAAgC,IAAI,KAAK,CAAC;AACjG,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAmF;IAEnF,OAAO;QACL,GAAG,UAAU;QACb,oCAAoC,EAAE,IAAI;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,OAAO,CACL,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,sCAAsC,IAAI,KAAK,CAC9F,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/discord/command.ts"],"names":[],"mappings":"AAgCA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAuE;IAEvE,OAAO;QACL,GAAG,UAAU;QACb,8BAA8B,EAAE,IAAI;KACrC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,gCAAgC,IAAI,KAAK,CAAC;AACjG,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAmF;IAEnF,OAAO;QACL,GAAG,UAAU;QACb,oCAAoC,EAAE,IAAI;KAC3C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,OAAO,CACL,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,sCAAsC,IAAI,KAAK,CAC9F,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/discord/load.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAQzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAsC7E"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/discord/load.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AASzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBA0C7E"}
@@ -1,6 +1,7 @@
1
1
  import * as path from 'node:path';
2
2
  import * as bun from 'bun';
3
3
  import { coreLog } from '../internal/coreLog.js';
4
+ import { resolveSerializableOr } from '../util/serializableOr.js';
4
5
  import { isContextMenuCommandHandler, isSlashCommandHandler } from './command.js';
5
6
  import { isEventHandler } from './event.js';
6
7
  import * as registry from './registry.js';
@@ -12,10 +13,14 @@ export async function loadAllInteractions(config, client) {
12
13
  await Promise.allSettled(config.paths.map((p) => loadFolder(p, (module) => {
13
14
  for (const exported of Object.values(module)) {
14
15
  if (isSlashCommandHandler(exported)) {
15
- registry.slashCommands.set(exported.data.name, exported);
16
+ const data = resolveSerializableOr(exported.data);
17
+ exported.data = data;
18
+ registry.slashCommands.set(data.name, exported);
16
19
  }
17
20
  else if (isContextMenuCommandHandler(exported)) {
18
- registry.contextMenuCommands.set(exported.data.name, exported);
21
+ const data = resolveSerializableOr(exported.data);
22
+ exported.data = data;
23
+ registry.contextMenuCommands.set(data.name, exported);
19
24
  }
20
25
  else if (isEventHandler(exported)) {
21
26
  const { event, once, execute } = exported;
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/discord/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/discord/load.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Collection, type RESTPostAPIChatInputApplicationCommandsJSONBody, type RESTPostAPIContextMenuApplicationCommandsJSONBody } from 'discord.js';
2
- import type { ContextMenuCommandHandler, SlashCommandHandler } from './command.js';
2
+ import { type ContextMenuCommandHandler, type SlashCommandHandler } from './command.js';
3
3
  import type { EventHandler } from './event.js';
4
4
  export declare const slashCommands: Collection<string, SlashCommandHandler>;
5
5
  export declare const contextMenuCommands: Collection<string, ContextMenuCommandHandler>;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/discord/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,+CAA+C,EACpD,KAAK,iDAAiD,EACvD,MAAM,YAAY,CAAC;AAIpB,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqB/C,eAAO,MAAM,aAAa,yCAEqB,CAAC;AAEhD,eAAO,MAAM,mBAAmB,+CAEqB,CAAC;AAEtD,eAAO,MAAM,MAAM,2EACwE,CAAC;AAE5F,MAAM,MAAM,8BAA8B,GACtC,iDAAiD,GACjD,+CAA+C,CAAC;AAEpD,wBAAgB,oBAAoB,IAAI,aAAa,CAAC,8BAA8B,CAAC,CAKpF"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/discord/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,+CAA+C,EACpD,KAAK,iDAAiD,EACvD,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqB/C,eAAO,MAAM,aAAa,yCAEqB,CAAC;AAEhD,eAAO,MAAM,mBAAmB,+CAEqB,CAAC;AAEtD,eAAO,MAAM,MAAM,2EACwE,CAAC;AAE5F,MAAM,MAAM,8BAA8B,GACtC,iDAAiD,GACjD,+CAA+C,CAAC;AAEpD,wBAAgB,oBAAoB,IAAI,aAAa,CAAC,8BAA8B,CAAC,CAKpF"}
@@ -1,5 +1,6 @@
1
1
  import { Collection, } from 'discord.js';
2
2
  import { coreLog } from '../internal/coreLog.js';
3
+ import { resolveSerializableOr } from '../util/serializableOr.js';
3
4
  const isDev = process.env.NODE_ENV === 'development';
4
5
  const hmr = globalThis;
5
6
  if (isDev && !hmr.hotReloadCommandRegistry) {
@@ -19,6 +20,6 @@ export function gatherCommandsToJson() {
19
20
  return [
20
21
  ...slashCommands.map((handler) => handler.data),
21
22
  ...contextMenuCommands.map((handler) => handler.data),
22
- ].map((builder) => builder.toJSON());
23
+ ].map((serializableOr) => resolveSerializableOr(serializableOr));
23
24
  }
24
25
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/discord/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAGX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAKjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAErD,MAAM,GAAG,GAAG,UAMX,CAAC;AAEF,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACpD,GAAG,CAAC,wBAAwB,GAAG;QAC7B,aAAa,EAAE,IAAI,UAAU,EAAE;QAC/B,mBAAmB,EAAE,IAAI,UAAU,EAAE;QACrC,MAAM,EAAE,IAAI,UAAU,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,KAAK,IAAI,GAAG,CAAC,wBAAyB,CAAC,aAAa,CAAC;IACtD,IAAI,UAAU,EAA+B,CAAC;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,CAAC,KAAK,IAAI,GAAG,CAAC,wBAAyB,CAAC,mBAAmB,CAAC;IAC5D,IAAI,UAAU,EAAqC,CAAC;AAEtD,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,KAAK,IAAI,GAAG,CAAC,wBAAyB,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,EAAwB,CAAC;AAM5F,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/C,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KACtD,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/discord/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAGX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMlE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAErD,MAAM,GAAG,GAAG,UAMX,CAAC;AAEF,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACpD,GAAG,CAAC,wBAAwB,GAAG;QAC7B,aAAa,EAAE,IAAI,UAAU,EAAE;QAC/B,mBAAmB,EAAE,IAAI,UAAU,EAAE;QACrC,MAAM,EAAE,IAAI,UAAU,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,KAAK,IAAI,GAAG,CAAC,wBAAyB,CAAC,aAAa,CAAC;IACtD,IAAI,UAAU,EAA+B,CAAC;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,CAAC,KAAK,IAAI,GAAG,CAAC,wBAAyB,CAAC,mBAAmB,CAAC;IAC5D,IAAI,UAAU,EAAqC,CAAC;AAEtD,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,KAAK,IAAI,GAAG,CAAC,wBAAyB,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,EAAwB,CAAC;AAM5F,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/C,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KACtD,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;AACnE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export * from './core/index.js';
2
+ export { SerializableOr } from './util/serializableOr.js';
3
+ export { resolveSerializableOr } from './util/serializableOr.js';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './core/index.js';
2
+ export { resolveSerializableOr } from './util/serializableOr.js';
2
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Data that can be serialized to JSON (or already the target serialized value).
3
+ */
4
+ export type SerializableOr<T extends NonNullable<unknown>> = {
5
+ toJSON: () => T;
6
+ } | T;
7
+ /**
8
+ * Resolves a serializable to its target value, returning itself if already resolved.
9
+ */
10
+ export declare function resolveSerializableOr<T extends NonNullable<unknown>>(serializableOr: SerializableOr<T>): T;
11
+ //# sourceMappingURL=serializableOr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializableOr.d.ts","sourceRoot":"","sources":["../../src/util/serializableOr.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC;AAErF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,EAClE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAChC,CAAC,CAEH"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Resolves a serializable to its target value, returning itself if already resolved.
3
+ */
4
+ export function resolveSerializableOr(serializableOr) {
5
+ return 'toJSON' in serializableOr ? serializableOr.toJSON() : serializableOr;
6
+ }
7
+ //# sourceMappingURL=serializableOr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializableOr.js","sourceRoot":"","sources":["../../src/util/serializableOr.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAAiC;IAEjC,OAAO,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;AAC/E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raspberryvarg/bot-kit",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [],