@raspberryvarg/bot-kit 1.0.5 → 1.0.6

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 (92) hide show
  1. package/dist/app/appLogger.d.ts +18 -0
  2. package/dist/app/appLogger.d.ts.map +1 -0
  3. package/dist/app/appLogger.js +9 -0
  4. package/dist/app/appLogger.js.map +1 -0
  5. package/dist/app/bootstrapApp.d.ts +10 -0
  6. package/dist/app/bootstrapApp.d.ts.map +1 -0
  7. package/dist/app/bootstrapApp.js +118 -0
  8. package/dist/app/bootstrapApp.js.map +1 -0
  9. package/dist/app/config.d.ts +32 -0
  10. package/dist/app/config.d.ts.map +1 -0
  11. package/dist/app/config.js +9 -0
  12. package/dist/app/config.js.map +1 -0
  13. package/dist/app/defaultAppLogger.d.ts +4 -0
  14. package/dist/app/defaultAppLogger.d.ts.map +1 -0
  15. package/dist/app/defaultAppLogger.js +48 -0
  16. package/dist/app/defaultAppLogger.js.map +1 -0
  17. package/dist/app/index.d.ts +3 -0
  18. package/dist/app/index.d.ts.map +1 -0
  19. package/dist/app/index.js +2 -0
  20. package/dist/app/index.js.map +1 -0
  21. package/dist/core/bootstrap.d.ts +7 -2
  22. package/dist/core/bootstrap.d.ts.map +1 -1
  23. package/dist/core/bootstrap.js +17 -10
  24. package/dist/core/bootstrap.js.map +1 -1
  25. package/dist/core/config.d.ts +25 -37
  26. package/dist/core/config.d.ts.map +1 -1
  27. package/dist/core/config.js +13 -58
  28. package/dist/core/config.js.map +1 -1
  29. package/dist/core/index.d.ts +0 -2
  30. package/dist/core/index.d.ts.map +1 -1
  31. package/dist/core/index.js +0 -2
  32. package/dist/core/index.js.map +1 -1
  33. package/dist/di/container.d.ts +38 -0
  34. package/dist/di/container.d.ts.map +1 -0
  35. package/dist/di/container.js +88 -0
  36. package/dist/di/container.js.map +1 -0
  37. package/dist/di/index.d.ts +3 -0
  38. package/dist/di/index.d.ts.map +1 -0
  39. package/dist/di/index.js +3 -0
  40. package/dist/di/index.js.map +1 -0
  41. package/dist/di/logger.d.ts +2 -0
  42. package/dist/di/logger.d.ts.map +1 -0
  43. package/dist/di/logger.js +3 -0
  44. package/dist/di/logger.js.map +1 -0
  45. package/dist/di/token.d.ts.map +1 -0
  46. package/dist/di/token.js.map +1 -0
  47. package/dist/discord/load.d.ts.map +1 -1
  48. package/dist/discord/load.js +19 -26
  49. package/dist/discord/load.js.map +1 -1
  50. package/dist/discord/logger.d.ts +2 -0
  51. package/dist/discord/logger.d.ts.map +1 -0
  52. package/dist/discord/logger.js +3 -0
  53. package/dist/discord/logger.js.map +1 -0
  54. package/dist/discord/registry.d.ts.map +1 -1
  55. package/dist/discord/registry.js +1 -0
  56. package/dist/discord/registry.js.map +1 -1
  57. package/dist/discord/router.d.ts +2 -1
  58. package/dist/discord/router.d.ts.map +1 -1
  59. package/dist/discord/router.js +16 -16
  60. package/dist/discord/router.js.map +1 -1
  61. package/dist/index.d.ts +3 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +3 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/internal/internalLogger.d.ts +7 -8
  66. package/dist/internal/internalLogger.d.ts.map +1 -1
  67. package/dist/internal/internalLogger.js +5 -10
  68. package/dist/internal/internalLogger.js.map +1 -1
  69. package/dist/modules/index.d.ts +2 -0
  70. package/dist/modules/index.d.ts.map +1 -0
  71. package/dist/modules/index.js +2 -0
  72. package/dist/modules/index.js.map +1 -0
  73. package/dist/modules/module.d.ts +43 -0
  74. package/dist/modules/module.d.ts.map +1 -0
  75. package/dist/modules/module.js +7 -0
  76. package/dist/modules/module.js.map +1 -0
  77. package/dist/util/serializableOr.d.ts +2 -2
  78. package/dist/util/serializableOr.d.ts.map +1 -1
  79. package/dist/util/serializableOr.js.map +1 -1
  80. package/dist/util/topologicalSort.d.ts +2 -0
  81. package/dist/util/topologicalSort.d.ts.map +1 -0
  82. package/dist/util/topologicalSort.js +40 -0
  83. package/dist/util/topologicalSort.js.map +1 -0
  84. package/package.json +1 -1
  85. package/dist/core/container.d.ts +0 -17
  86. package/dist/core/container.d.ts.map +0 -1
  87. package/dist/core/container.js +0 -55
  88. package/dist/core/container.js.map +0 -1
  89. package/dist/core/token.d.ts.map +0 -1
  90. package/dist/core/token.js.map +0 -1
  91. /package/dist/{core → di}/token.d.ts +0 -0
  92. /package/dist/{core → di}/token.js +0 -0
@@ -0,0 +1,18 @@
1
+ export type LoggerMeta = Record<string, any>;
2
+ export interface AppLogger {
3
+ debug?: (message: string, meta?: LoggerMeta) => void;
4
+ info?: (message: string, meta?: LoggerMeta) => void;
5
+ verbose?: (message: string, meta?: LoggerMeta) => void;
6
+ warn: (message: string, meta?: LoggerMeta) => void;
7
+ error: (message: string, error?: unknown, meta?: Record<string, any>) => void;
8
+ }
9
+ export declare const LogLevel: {
10
+ readonly none: 0;
11
+ readonly error: 1;
12
+ readonly warn: 2;
13
+ readonly info: 3;
14
+ readonly debug: 4;
15
+ readonly verbose: 5;
16
+ };
17
+ export type LogLevelString = keyof typeof LogLevel;
18
+ //# sourceMappingURL=appLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appLogger.d.ts","sourceRoot":"","sources":["../../src/app/appLogger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE7C,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACvD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACnD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CAC/E;AAED,eAAO,MAAM,QAAQ;aACnB,IAAI,EAAE,CAAC;aACP,KAAK,EAAE,CAAC;aACR,IAAI,EAAE,CAAC;aACP,IAAI,EAAE,CAAC;aACP,KAAK,EAAE,CAAC;aACR,OAAO,EAAE,CAAC;CACF,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const LogLevel = {
2
+ none: 0,
3
+ error: 1,
4
+ warn: 2,
5
+ info: 3,
6
+ debug: 4,
7
+ verbose: 5,
8
+ };
9
+ //# sourceMappingURL=appLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appLogger.js","sourceRoot":"","sources":["../../src/app/appLogger.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Container } from '../di/container.js';
2
+ import type { AppConfig } from './config.js';
3
+ type ShutdownFn = () => Promise<void>;
4
+ export interface BootstrapAppResult {
5
+ container: Container;
6
+ shutdown: ShutdownFn;
7
+ }
8
+ export declare function bootstrapApp(config: AppConfig): Promise<BootstrapAppResult>;
9
+ export {};
10
+ //# sourceMappingURL=bootstrapApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapApp.d.ts","sourceRoot":"","sources":["../../src/app/bootstrapApp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,oBAAoB,CAAC;AAKnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAY7C,KAAK,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkGjF"}
@@ -0,0 +1,118 @@
1
+ import { Container, setGlobalContainer } from '../di/container.js';
2
+ import { coreLog } from '../internal/coreLog.js';
3
+ import { topologicalSort } from '../util/topologicalSort.js';
4
+ const moduleLoaderLogger = coreLog.namespaced('modules').namespaced('loader');
5
+ const hmr = globalThis;
6
+ export async function bootstrapApp(config) {
7
+ const container = (config.supportHotReloading && hmr.hmr__globalContainer) || new Container();
8
+ setGlobalContainer(container);
9
+ if (config.supportHotReloading) {
10
+ hmr.hmr__globalContainer = container;
11
+ }
12
+ if (config.supportHotReloading && hmr.hmr__previousShutdown) {
13
+ const { shutdown, shutdownWithExit } = hmr.hmr__previousShutdown;
14
+ await shutdown();
15
+ if (shutdownWithExit) {
16
+ process.off('SIGINT', shutdownWithExit);
17
+ process.off('SIGTERM', shutdownWithExit);
18
+ }
19
+ hmr.hmr__previousShutdown = undefined;
20
+ }
21
+ const previousModules = config.supportHotReloading && hmr.hmr__previousModules ? hmr.hmr__previousModules : new Map();
22
+ const filteredModules = config.modules.filter((m) => m.enabled == null || m.enabled());
23
+ const sortedModules = sortModules(filteredModules);
24
+ const newModules = new Map(sortedModules.map((module) => [module.name, module]));
25
+ const executeAll = async (modules, method) => {
26
+ let errored = false;
27
+ for (let i = 0; i < modules.length; i++) {
28
+ const module = modules[i];
29
+ const logPrefix = `(Module ➔ ${method} ${i + 1}/${modules.length}) ${module.name} \t-`;
30
+ if (module[method] == null) {
31
+ moduleLoaderLogger.verbose(`${logPrefix} Skipping: Not provided`);
32
+ continue;
33
+ }
34
+ if (previousModules.has(module.name)) {
35
+ moduleLoaderLogger.verbose(`${logPrefix} Skipping: Keep-alive`);
36
+ continue;
37
+ }
38
+ try {
39
+ moduleLoaderLogger.verbose(`${logPrefix} Executing...`);
40
+ await module[method](container);
41
+ moduleLoaderLogger.verbose(`${logPrefix} Done.`);
42
+ }
43
+ catch (error) {
44
+ moduleLoaderLogger.error(`${logPrefix} Error during execution`, error);
45
+ errored = true;
46
+ }
47
+ }
48
+ return !errored;
49
+ };
50
+ if (previousModules.size) {
51
+ const toKill = popPrevModulesToKill(previousModules, newModules);
52
+ if (toKill.length)
53
+ await executeAll(toKill.toReversed(), 'shutdown');
54
+ }
55
+ if (!(await executeAll(sortedModules, 'register'))) {
56
+ throw new Error('Failed to register one or more modules.');
57
+ }
58
+ if (!(await executeAll(sortedModules, 'boot'))) {
59
+ throw new Error('Failed to boot one or more modules.');
60
+ }
61
+ for (const module of sortedModules) {
62
+ previousModules.set(module.name, module);
63
+ }
64
+ const shutdown = async () => {
65
+ await executeAll(sortedModules.toReversed(), 'shutdown');
66
+ moduleLoaderLogger.info('Module shutdown complete.');
67
+ };
68
+ let shutdownWithExit;
69
+ if (config.handleProcessSignals) {
70
+ shutdownWithExit = async () => {
71
+ await shutdown();
72
+ process.exit(0);
73
+ };
74
+ process.on('SIGINT', shutdownWithExit);
75
+ process.on('SIGTERM', shutdownWithExit);
76
+ }
77
+ if (config.supportHotReloading) {
78
+ hmr.hmr__previousShutdown = {
79
+ shutdown,
80
+ shutdownWithExit,
81
+ };
82
+ }
83
+ return {
84
+ container,
85
+ shutdown,
86
+ };
87
+ }
88
+ function sortModules(modules) {
89
+ return topologicalSort(modules, (module) => module.name, (module) => {
90
+ const dependsOn = module.dependsOn;
91
+ if (!dependsOn?.length) {
92
+ return [];
93
+ }
94
+ const resolved = [];
95
+ for (let i = 0; i < dependsOn.length; i++) {
96
+ const dependency = dependsOn[i];
97
+ if (dependency == null) {
98
+ throw new Error(`Dependency for module '${module.name}' at index ${i} is undefined. Is there a ` +
99
+ `circular dependency?`);
100
+ }
101
+ resolved.push(dependency.name);
102
+ }
103
+ return resolved;
104
+ });
105
+ }
106
+ function popPrevModulesToKill(previousModules, nextModules) {
107
+ const modulesToKill = [];
108
+ for (const [name, prev] of previousModules) {
109
+ const next = nextModules.get(name);
110
+ const survive = next && prev.hmr?.surviveSoftReload && next.hmr?.surviveSoftReload;
111
+ if (!survive) {
112
+ previousModules.delete(name);
113
+ modulesToKill.push(prev);
114
+ }
115
+ }
116
+ return modulesToKill;
117
+ }
118
+ //# sourceMappingURL=bootstrapApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapApp.js","sourceRoot":"","sources":["../../src/app/bootstrapApp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { FeatureModule } from '../modules/module.js';
2
+ import type { AppLogger, LogLevelString } from './appLogger.js';
3
+ export interface AppConfig {
4
+ /**
5
+ * The level of logs to pass through to {@link logger}.
6
+ */
7
+ logLevel: LogLevelString;
8
+ /**
9
+ * Logger to use for framework logs.
10
+ */
11
+ logger: AppLogger;
12
+ /**
13
+ * Support Bun's --hot reloading (globalThis persistence of objects such as the router).
14
+ */
15
+ supportHotReloading: boolean;
16
+ /**
17
+ * All modules to load and manage lifecycles.
18
+ */
19
+ modules: readonly FeatureModule[];
20
+ /**
21
+ * Shut down modules when SIGINT or SIGTERM is received.
22
+ */
23
+ handleProcessSignals: boolean;
24
+ }
25
+ export declare const appConfigDefaults: {
26
+ readonly logLevel: "debug" | "error" | "info" | "none" | "verbose" | "warn";
27
+ readonly logger: AppLogger;
28
+ readonly supportHotReloading: boolean;
29
+ readonly modules: AppConfig['modules'];
30
+ readonly handleProcessSignals: true;
31
+ };
32
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/app/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAElC;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,iBAAiB;;;;sBAIb,SAAS,CAAC,SAAS,CAAC;;CAEE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { defaultAppLogger, getEnvLogLevel } from './defaultAppLogger.js';
2
+ export const appConfigDefaults = {
3
+ logLevel: getEnvLogLevel() ?? (process.env.NODE_ENV === 'production' ? 'warn' : 'debug'),
4
+ logger: defaultAppLogger,
5
+ supportHotReloading: process.env.NODE_ENV === 'development',
6
+ modules: [],
7
+ handleProcessSignals: true,
8
+ };
9
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/app/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAgCzE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACxF,MAAM,EAAE,gBAAgB;IACxB,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;IAC3D,OAAO,EAAE,EAA0B;IACnC,oBAAoB,EAAE,IAAI;CACW,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type LogLevelString, type AppLogger } from './appLogger.js';
2
+ export declare const defaultAppLogger: AppLogger;
3
+ export declare function getEnvLogLevel(): LogLevelString | undefined;
4
+ //# sourceMappingURL=defaultAppLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultAppLogger.d.ts","sourceRoot":"","sources":["../../src/app/defaultAppLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE/E,eAAO,MAAM,gBAAgB,EAAE,SAgB9B,CAAC;AAmBF,wBAAgB,cAAc,IAAI,cAAc,GAAG,SAAS,CAkB3D"}
@@ -0,0 +1,48 @@
1
+ import { LogLevel } from './appLogger.js';
2
+ export const defaultAppLogger = {
3
+ warn: (msg, meta) => {
4
+ console.warn(`${prefix('Warn', c.yellow)} ${formatMsg(msg)}`, meta ?? '');
5
+ },
6
+ info: (msg, meta) => {
7
+ console.info(`${prefix('Info', c.cyan)} ${formatMsg(msg)}`, meta ?? '');
8
+ },
9
+ error: (msg, error, meta) => {
10
+ console.error(`${prefix('Error', c.red)} ${formatMsg(msg)}`, meta ?? '', error ?? '');
11
+ },
12
+ debug: (msg, meta) => {
13
+ console.debug(`${prefix('Debug', c.gray)} ${c.gray}${formatMsg(msg)}`, meta ?? '');
14
+ },
15
+ verbose: (msg, meta) => {
16
+ console.debug(`${prefix('Verbose', c.gray)} ${c.gray}${formatMsg(msg)}`, meta ?? '');
17
+ },
18
+ };
19
+ const useColor = process.env.FORCE_COLOR ? true : !process.env.NO_COLOR && process.stdout.isTTY;
20
+ const c = {
21
+ reset: useColor ? '\x1b[0m' : '',
22
+ bold: useColor ? '\x1b[1m' : '',
23
+ red: useColor ? '\x1b[31m' : '',
24
+ yellow: useColor ? '\x1b[33m' : '',
25
+ cyan: useColor ? '\x1b[36m' : '',
26
+ gray: useColor ? '\x1b[90m' : '',
27
+ };
28
+ function prefix(tag, colorCode) {
29
+ return `${c.bold}${colorCode}[BotKit ${tag}]${c.reset}`;
30
+ }
31
+ function formatMsg(msg) {
32
+ return !useColor ? msg : msg.replace(/`([^`]+)`/g, `${c.cyan}${c.bold}$1${c.reset}`);
33
+ }
34
+ export function getEnvLogLevel() {
35
+ const rawEnv = process.env.BOT_KIT_LOG_LEVEL;
36
+ if (!rawEnv)
37
+ return undefined;
38
+ const normalized = rawEnv.toLowerCase().trim();
39
+ if (normalized in LogLevel) {
40
+ // oxlint-disable-next-line typescript/no-unsafe-type-assertion Checked for key.
41
+ return normalized;
42
+ }
43
+ console.warn(`[BotKit Warning]: Invalid BOT_KIT_LOG_LEVEL provided ("${rawEnv}"). ` +
44
+ `Expected one of: ${Object.keys(LogLevel).join(', ')}. ` +
45
+ `Falling back to default log level.`);
46
+ return undefined;
47
+ }
48
+ //# sourceMappingURL=defaultAppLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultAppLogger.js","sourceRoot":"","sources":["../../src/app/defaultAppLogger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './appLogger.js';
2
+ export { AppConfig } from './config.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './appLogger.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1,3 +1,8 @@
1
- import { type BotKitConfigPartial } from './config.js';
2
- export declare function bootstrap(configPartial: BotKitConfigPartial): Promise<void>;
1
+ import { Client } from 'discord.js';
2
+ import { type BootstrapAppResult } from '../app/bootstrapApp.js';
3
+ import { type BootstrapConfigPartial } from './config.js';
4
+ export interface BootstrapResult extends BootstrapAppResult {
5
+ client: Client;
6
+ }
7
+ export declare function bootstrap(configPartial: BootstrapConfigPartial): Promise<BootstrapResult>;
3
8
  //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"AASA,OAAO,EAAqB,KAAK,mBAAmB,EAAa,MAAM,aAAa,CAAC;AASrF,wBAAsB,SAAS,CAAC,aAAa,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BjF"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAElD,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM/E,OAAO,EAAqB,KAAK,sBAAsB,EAAa,MAAM,aAAa,CAAC;AAOxF,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,SAAS,CAAC,aAAa,EAAE,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuC/F"}
@@ -1,22 +1,23 @@
1
1
  import crypto from 'crypto';
2
2
  import { Client, REST, Routes } from 'discord.js';
3
+ import { bootstrapApp } from '../app/bootstrapApp.js';
3
4
  import { loadAllInteractions } from '../discord/load.js';
4
5
  import { gatherCommandsToJson } from '../discord/registry.js';
5
6
  import { initializeRouter } from '../discord/router.js';
6
7
  import { coreLog } from '../internal/coreLog.js';
7
8
  import { configure } from './config.js';
8
- const isDev = process.env.NODE_ENV === 'development';
9
9
  const hmr = globalThis;
10
10
  export async function bootstrap(configPartial) {
11
11
  const config = configure(configPartial);
12
+ const bootstrapAppResult = await bootstrapApp(config);
12
13
  let client;
13
- if (!isDev) {
14
+ if (!config.supportHotReloading) {
14
15
  client = new Client(config.clientOptions);
15
16
  }
16
17
  else {
17
- if (hmr.discordClient) {
18
+ if (hmr.hmr__discordClient) {
18
19
  coreLog.info('🔥 HMR: Reusing existing client.');
19
- client = hmr.discordClient;
20
+ client = hmr.hmr__discordClient;
20
21
  }
21
22
  else {
22
23
  client = new Client(config.clientOptions);
@@ -24,16 +25,22 @@ export async function bootstrap(configPartial) {
24
25
  }
25
26
  await loadAllInteractions(config, client);
26
27
  await deployCommandsIfNecessary(config);
27
- if (isDev && hmr.discordClientLoggedIn) {
28
+ const result = {
29
+ ...bootstrapAppResult,
30
+ client,
31
+ };
32
+ if (config.supportHotReloading && hmr.hmr__discordClientLoggedIn) {
28
33
  coreLog.info('🔥 HMR: Skipping Discord client login.');
29
- return;
34
+ return result;
30
35
  }
31
36
  await client.login(config.clientToken);
32
- if (isDev) {
33
- hmr.discordClientLoggedIn = true;
37
+ if (config.supportHotReloading) {
38
+ hmr.hmr__discordClientLoggedIn = true;
34
39
  }
35
- initializeRouter(client);
36
40
  coreLog.info('Client successfully logged in.');
41
+ initializeRouter(config, client);
42
+ coreLog.verbose('Command router initialized.');
43
+ return result;
37
44
  }
38
45
  async function deployCommandsIfNecessary(config) {
39
46
  const { commandSync } = config;
@@ -60,7 +67,7 @@ async function deployCommandsIfNecessary(config) {
60
67
  ? [commandSync.testGuildIds]
61
68
  : commandSync.testGuildIds,
62
69
  });
63
- commandSync.onSynced?.(currentHash);
70
+ await commandSync.onSynced?.(currentHash);
64
71
  }
65
72
  async function deployCommands(config, commands, options) {
66
73
  const Rest = new REST({ version: '10' }).setToken(config.clientToken);
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,25 @@
1
+ import { type AppConfig } from '../app/config.js';
1
2
  import type { ClientOptions, Interaction } from 'discord.js';
3
+ /**
4
+ * Configuration with keys with defaults marked as optional.
5
+ */
6
+ export type BootstrapConfigPartial = Omit<BotKitConfig, keyof typeof globalConfigDefaults> & Partial<Pick<BotKitConfig, keyof typeof globalConfigDefaults>>;
7
+ /**
8
+ * Middleware that runs before an interaction is routed. The final action is routing a command to
9
+ * its defined command handler.
10
+ *
11
+ * @param interaction The received interaction.
12
+ * @param next The next middleware in the chain.
13
+ */
2
14
  export type InteractionMiddleware = (interaction: Interaction, next: () => Promise<void>) => void | Promise<void>;
3
- export interface BotKitConfig {
4
- /**
5
- * The level of logs to pass through to {@link logger}.
6
- */
7
- logLevel: LogLevelString;
8
- /**
9
- * Logger to use for framework logs.
10
- */
11
- logger: BotKitLogger;
12
- /**
13
- * Support Bun's --hot reloading (globalThis persistence of objects such as the router).
14
- */
15
- supportHotReloading: boolean;
15
+ /**
16
+ * Full configuration for BotKit.
17
+ */
18
+ export interface BotKitConfig extends AppConfig {
16
19
  clientOptions: ClientOptions;
17
20
  clientToken: string;
18
21
  clientApplicationId: string;
19
- paths?: readonly string[];
22
+ paths: readonly string[];
20
23
  commandSync: {
21
24
  shouldSync: (newHash: string) => boolean | Promise<boolean>;
22
25
  onSynced?: (newHash: string) => void | Promise<void>;
@@ -28,31 +31,16 @@ export interface BotKitConfig {
28
31
  });
29
32
  interactionMiddleware: readonly InteractionMiddleware[];
30
33
  }
31
- export type BotKitLoggerMeta = Record<string, any>;
32
- export interface BotKitLogger {
33
- debug?: (message: string, meta?: BotKitLoggerMeta) => void;
34
- info?: (message: string, meta?: BotKitLoggerMeta) => void;
35
- verbose?: (message: string, meta?: BotKitLoggerMeta) => void;
36
- warn: (message: string, meta?: BotKitLoggerMeta) => void;
37
- error: (message: string, error?: unknown, meta?: Record<string, any>) => void;
38
- }
39
- export declare const LogLevel: {
40
- readonly none: 0;
41
- readonly error: 1;
42
- readonly warn: 2;
43
- readonly info: 3;
44
- readonly debug: 4;
45
- readonly verbose: 5;
46
- };
47
- export type LogLevelString = keyof typeof LogLevel;
48
- declare const globalConfig: {
34
+ declare const globalConfigDefaults: {
35
+ paths: BotKitConfig['paths'];
36
+ interactionMiddleware: BotKitConfig['interactionMiddleware'];
49
37
  logLevel: "debug" | "error" | "info" | "none" | "verbose" | "warn";
50
- logger: BotKitLogger;
51
- supportHotReloading: false;
52
- interactionMiddleware: readonly InteractionMiddleware[];
38
+ logger: import("../index.js").AppLogger;
39
+ supportHotReloading: boolean;
40
+ modules: AppConfig['modules'];
41
+ handleProcessSignals: true;
53
42
  };
54
- export declare function configure(options: BotKitConfigPartial): BotKitConfig;
55
- export type BotKitConfigPartial = Omit<BotKitConfig, keyof typeof globalConfig> & Partial<Pick<BotKitConfig, keyof typeof globalConfig>>;
43
+ export declare function configure(options: BootstrapConfigPartial): BotKitConfig;
56
44
  export declare function getConfig(): Readonly<BotKitConfig>;
57
45
  export {};
58
46
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,qBAAqB,GAAG,CAClC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAE5B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE1B,WAAW,EAAE;QACX,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACtD,GAAG,CACA;QACE,MAAM,EAAE,QAAQ,CAAC;KAClB,GACD;QACE,MAAM,EAAE,aAAa,CAAC;QACtB,YAAY,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;KAC1C,CACJ,CAAC;IAEF,qBAAqB,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACzD;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3D,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CAC/E;AAuCD,eAAO,MAAM,QAAQ;aACnB,IAAI,EAAE,CAAC;aACP,KAAK,EAAE,CAAC;aACR,IAAI,EAAE,CAAC;aACP,IAAI,EAAE,CAAC;aACP,KAAK,EAAE,CAAC;aACR,OAAO,EAAE,CAAC;CACF,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,QAAQ,CAAC;AAqBnD,QAAA,MAAM,YAAY;;;;2BAIa,SAAS,qBAAqB,EAAE;CAC9B,CAAC;AAElC,wBAAgB,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAEpE;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,OAAO,YAAY,CAAC,GAC7E,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,OAAO,YAAY,CAAC,CAAC,CAAC;AAEzD,wBAAgB,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC,CAElD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,OAAO,oBAAoB,CAAC,GACxF,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,OAAO,oBAAoB,CAAC,CAAC,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAE5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzB,WAAW,EAAE;QACX,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACtD,GAAG,CACA;QACE,MAAM,EAAE,QAAQ,CAAC;KAClB,GACD;QACE,MAAM,EAAE,aAAa,CAAC;QACtB,YAAY,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;KAC1C,CACJ,CAAC;IAEF,qBAAqB,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACzD;AAED,QAAA,MAAM,oBAAoB;WAEX,YAAY,CAAC,OAAO,CAAC;2BACL,YAAY,CAAC,uBAAuB,CAAC;;;;;;CACnC,CAAC;AAIlC,wBAAgB,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,YAAY,CAMvE;AAED,wBAAgB,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC,CAKlD"}
@@ -1,66 +1,21 @@
1
- const useColor = process.env.FORCE_COLOR ? true : !process.env.NO_COLOR && process.stdout.isTTY;
2
- const c = {
3
- reset: useColor ? '\x1b[0m' : '',
4
- bold: useColor ? '\x1b[1m' : '',
5
- red: useColor ? '\x1b[31m' : '',
6
- yellow: useColor ? '\x1b[33m' : '',
7
- cyan: useColor ? '\x1b[36m' : '',
8
- gray: useColor ? '\x1b[90m' : '',
9
- };
10
- function prefix(tag, colorCode) {
11
- return `${c.bold}${colorCode}[BotKit ${tag}]${c.reset}`;
12
- }
13
- function formatMsg(msg) {
14
- return !useColor ? msg : msg.replace(/`([^`]+)`/g, `${c.cyan}${c.bold}$1${c.reset}`);
15
- }
16
- const defaultLogger = {
17
- warn: (msg, meta) => {
18
- console.warn(`${prefix('Warn', c.yellow)} ${formatMsg(msg)}`, meta ?? '');
19
- },
20
- info: (msg, meta) => {
21
- console.info(`${prefix('Info', c.cyan)} ${formatMsg(msg)}`, meta ?? '');
22
- },
23
- error: (msg, error, meta) => {
24
- console.error(`${prefix('Error', c.red)} ${formatMsg(msg)}`, meta ?? '', error ?? '');
25
- },
26
- debug: (msg, meta) => {
27
- console.debug(`${prefix('Debug', c.gray)} ${c.gray}${formatMsg(msg)}`, meta ?? '');
28
- },
29
- verbose: (msg, meta) => {
30
- console.debug(`${prefix('Verbose', c.gray)} ${c.gray}${formatMsg(msg)}`, meta ?? '');
31
- },
32
- };
33
- export const LogLevel = {
34
- none: 0,
35
- error: 1,
36
- warn: 2,
37
- info: 3,
38
- debug: 4,
39
- verbose: 5,
40
- };
41
- function getEnvLogLevel() {
42
- const rawEnv = process.env.BOT_KIT_LOG_LEVEL;
43
- if (!rawEnv)
44
- return undefined;
45
- const normalized = rawEnv.toLowerCase().trim();
46
- if (normalized in LogLevel) {
47
- return normalized;
48
- }
49
- console.warn(`[BotKit Warning]: Invalid BOT_KIT_LOG_LEVEL provided ("${rawEnv}"). ` +
50
- `Expected one of: ${Object.keys(LogLevel).join(', ')}. ` +
51
- `Falling back to default log level.`);
52
- return undefined;
53
- }
54
- const globalConfig = {
55
- logLevel: getEnvLogLevel() ?? (process.env.NODE_ENV === 'production' ? 'warn' : 'info'),
56
- logger: defaultLogger,
57
- supportHotReloading: false,
1
+ import { appConfigDefaults } from '../app/config.js';
2
+ const globalConfigDefaults = {
3
+ ...appConfigDefaults,
4
+ paths: [],
58
5
  interactionMiddleware: [],
59
6
  };
7
+ let globalConfig;
60
8
  export function configure(options) {
61
- return Object.assign(globalConfig, options);
9
+ if (globalConfig != null) {
10
+ throw new Error('BotKit has already been configured.');
11
+ }
12
+ globalConfig = { ...globalConfigDefaults, ...options };
13
+ return globalConfig;
62
14
  }
63
15
  export function getConfig() {
16
+ if (globalConfig == null) {
17
+ throw new Error('BotKit has not been configured.');
18
+ }
64
19
  return globalConfig;
65
20
  }
66
21
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAgDrE,MAAM,oBAAoB,GAAG;IAC3B,GAAG,iBAAiB;IACpB,KAAK,EAAE,EAA2B;IAClC,qBAAqB,EAAE,EAA2C;CACnC,CAAC;AAElC,IAAI,YAAsC,CAAC;AAE3C,MAAM,UAAU,SAAS,CAAC,OAA+B;IACvD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,YAAY,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;IACvD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,5 +1,3 @@
1
1
  export * from './config.js';
2
- export * from './token.js';
3
2
  export { bootstrap } from './bootstrap.js';
4
- export { inject, container } from './container.js';
5
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,5 +1,3 @@
1
1
  export * from './config.js';
2
- export * from './token.js';
3
2
  export { bootstrap } from './bootstrap.js';
4
- export { inject, container } from './container.js';
5
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}