commandkit 1.2.0-rc.3 → 1.2.0-rc.4
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/README.md +4 -12
- package/dist/ActionRow-CmTHbo2t.js.map +1 -1
- package/dist/CommandKitEventsChannel-Bgw0XCOl.js.map +1 -1
- package/dist/CommandsRouter-tMAivEfv.js.map +1 -1
- package/dist/CompilerPlugin-CjoZAAR8.js.map +1 -1
- package/dist/{DefaultLogger-Cy55-uPl.d.ts → DefaultLogger-XCOl5nLd.d.ts} +19 -12
- package/dist/EventInterceptor-CQ4PBpBJ.js.map +1 -1
- package/dist/{EventWorkerContext-C7CG7hIP.d.ts → EventWorkerContext-BEezHh5-.d.ts} +2 -2
- package/dist/{EventWorkerContext-CSlD9rbx.js → EventWorkerContext-TZIKxVCu.js} +1 -1
- package/dist/{EventWorkerContext-CSlD9rbx.js.map → EventWorkerContext-TZIKxVCu.js.map} +1 -1
- package/dist/EventsRouter-C_J0M3uO.js.map +1 -1
- package/dist/ILogger-BW8GM-YZ.d.ts +64 -0
- package/dist/{Logger-iSjA-DWN.d.ts → Logger-DyfkPk7u.d.ts} +2 -2
- package/dist/{MessageCommandParser-B_BEQ3p8.js → MessageCommandParser-TPEPhjvx.js} +2 -2
- package/dist/{MessageCommandParser-B_BEQ3p8.js.map → MessageCommandParser-TPEPhjvx.js.map} +1 -1
- package/dist/PluginCommon-Di1xIa8d.js.map +1 -1
- package/dist/RuntimePlugin-CBgBLXTG.js.map +1 -1
- package/dist/analytics/analytics-engine.d.ts +2 -2
- package/dist/analytics/analytics-engine.js +6 -6
- package/dist/analytics/analytics-provider.d.ts +2 -2
- package/dist/analytics/constants.js +1 -1
- package/dist/analytics/utils.js +6 -6
- package/dist/{analytics-engine-nkyqvYAE.d.ts → analytics-engine-Iu_1uJop.d.ts} +83 -26
- package/dist/app/commands/AppCommandRunner.d.ts +2 -2
- package/dist/app/commands/AppCommandRunner.js +6 -6
- package/dist/app/commands/Context.d.ts +2 -2
- package/dist/app/commands/Context.js +6 -6
- package/dist/app/commands/MessageCommandParser.js +2 -2
- package/dist/app/events/EventWorkerContext.d.ts +3 -3
- package/dist/app/events/EventWorkerContext.js +1 -1
- package/dist/app/handlers/AppCommandHandler.d.ts +2 -2
- package/dist/app/handlers/AppCommandHandler.js +6 -6
- package/dist/app/handlers/AppEventsHandler.d.ts +2 -2
- package/dist/app/handlers/AppEventsHandler.js +6 -6
- package/dist/app/index.d.ts +3 -3
- package/dist/app/index.js +8 -8
- package/dist/app/interrupt/signals.d.ts +2 -2
- package/dist/app/interrupt/signals.js +5 -5
- package/dist/app/middlewares/permissions.d.ts +42 -0
- package/dist/app/middlewares/permissions.js +38 -0
- package/dist/app/register/CommandRegistrar.d.ts +2 -2
- package/dist/app/register/CommandRegistrar.js +6 -6
- package/dist/app-process-CjMovpoZ.js.map +1 -1
- package/dist/{build-BoGqWPIS.js → build-Yhb1VjD0.js} +2 -2
- package/dist/build-Yhb1VjD0.js.map +1 -0
- package/dist/cli/build.d.ts +2 -2
- package/dist/cli/build.js +7 -7
- package/dist/cli/common.d.ts +2 -2
- package/dist/cli/development.js +8 -8
- package/dist/cli/development.js.map +1 -1
- package/dist/cli/generators.js.map +1 -1
- package/dist/cli/information.js +1 -1
- package/dist/cli/information.js.map +1 -1
- package/dist/cli/init.js +7 -7
- package/dist/cli/production.js +7 -7
- package/dist/cli/production.js.map +1 -1
- package/dist/{commandkit-5VMG2thU.js → commandkit-c0sAaK0G.js} +349 -199
- package/dist/commandkit-c0sAaK0G.js.map +1 -0
- package/dist/commandkit.d.ts +2 -2
- package/dist/commandkit.js +6 -6
- package/dist/common-DNADUU3_.js.map +1 -1
- package/dist/common-vnMIelAE.js.map +1 -1
- package/dist/components/index.js +6 -6
- package/dist/components/v1/button/Button.js +6 -6
- package/dist/components/v1/button/ButtonKit.js +6 -6
- package/dist/components/v1/modal/Modal.js +6 -6
- package/dist/components/v1/modal/ModalKit.js +6 -6
- package/dist/components/v1/select-menu/ChannelSelectMenuKit.js +6 -6
- package/dist/components/v1/select-menu/MentionableSelectMenuKit.js +6 -6
- package/dist/components/v1/select-menu/RoleSelectMenuKit.js +6 -6
- package/dist/components/v1/select-menu/SelectMenu.js +6 -6
- package/dist/components/v1/select-menu/StringSelectMenuKit.js +6 -6
- package/dist/components/v1/select-menu/UserSelectMenuKit.js +6 -6
- package/dist/config/config.d.ts +3 -3
- package/dist/config/config.js +6 -6
- package/dist/config/default.d.ts +2 -2
- package/dist/config/default.js +6 -6
- package/dist/config/loader.d.ts +2 -2
- package/dist/config/loader.js +6 -6
- package/dist/config/types.d.ts +2 -2
- package/dist/config/utils.d.ts +2 -2
- package/dist/{config-C1msSu1G.d.ts → config-ClEaYnf1.d.ts} +2 -2
- package/dist/constants-4oxxvaJA.js.map +1 -1
- package/dist/constants-B5_Ta7PR.js.map +1 -1
- package/dist/{constants-CUND8XkG.js → constants-DxfYtA6t.js} +1 -1
- package/dist/{constants-CUND8XkG.js.map → constants-DxfYtA6t.js.map} +1 -1
- package/dist/container-z621KfH5.js.map +1 -1
- package/dist/context/async-context.d.ts +2 -2
- package/dist/context/async-context.js +6 -6
- package/dist/context/environment.d.ts +2 -2
- package/dist/context/environment.js +6 -6
- package/dist/dotprops-C_4L7RPD.js.map +1 -1
- package/dist/element-Bak9llw_.js.map +1 -1
- package/dist/env-_68PRRoA.js.map +1 -1
- package/dist/{error-codes-BzoEctmD.d.ts → error-codes-B4TyW4Ct.d.ts} +2 -2
- package/dist/{error-codes-C-ViHyu-.js → error-codes-Ds0bnPvT.js} +2 -2
- package/dist/error-codes-Ds0bnPvT.js.map +1 -0
- package/dist/events/CommandKitEventsChannel.d.ts +2 -2
- package/dist/{feature-flags-C44dggkN.js → feature-flags-Dxi9TI2e.js} +5 -5
- package/dist/{feature-flags-C44dggkN.js.map → feature-flags-Dxi9TI2e.js.map} +1 -1
- package/dist/file-DVZC0QXI.js.map +1 -1
- package/dist/flags/FlagProvider.d.ts +2 -2
- package/dist/flags/FlagProvider.js.map +1 -1
- package/dist/flags/feature-flags.d.ts +2 -2
- package/dist/flags/feature-flags.js +7 -7
- package/dist/flags/store.d.ts +2 -2
- package/dist/helpers-BUlN3lIz.js.map +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.js +19 -14
- package/dist/index.js.map +1 -0
- package/dist/{init-ZjceQTSt.js → init-CrFvqdxZ.js} +2 -2
- package/dist/{init-ZjceQTSt.js.map → init-CrFvqdxZ.js.map} +1 -1
- package/dist/kv/kv.js.map +1 -1
- package/dist/logger/DefaultLogger.d.ts +2 -2
- package/dist/logger/DefaultLogger.js +6 -6
- package/dist/logger/ILogger.d.ts +1 -1
- package/dist/logger/Logger.d.ts +2 -2
- package/dist/logger/Logger.js +6 -6
- package/dist/logger/NoopLogger.d.ts +41 -11
- package/dist/logger/NoopLogger.js +5 -25
- package/dist/logger/NoopLogger.js.map +1 -1
- package/dist/media-gallery-CIKypjbJ.js.map +1 -1
- package/dist/plugins/CompilerPlugin.d.ts +2 -2
- package/dist/plugins/PluginCommon.d.ts +2 -2
- package/dist/plugins/RuntimePlugin.d.ts +2 -2
- package/dist/plugins/index.d.ts +2 -2
- package/dist/plugins/index.js +6 -6
- package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.d.ts +2 -2
- package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js +6 -6
- package/dist/plugins/plugin-runtime/CompilerPluginRuntime.d.ts +2 -2
- package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js +6 -6
- package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.d.ts +2 -2
- package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js +6 -6
- package/dist/plugins/plugin-runtime/builtin/MacroPlugin.d.ts +2 -2
- package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js +6 -6
- package/dist/plugins/plugin-runtime/runtime.d.ts +2 -2
- package/dist/plugins/types.d.ts +2 -2
- package/dist/resolve-file-url-DHTQj2mU.js.map +1 -1
- package/dist/section-CuYr0Inu.js.map +1 -1
- package/dist/separator-DLdWBjSN.js.map +1 -1
- package/dist/serde-CHySNpFr.js.map +1 -1
- package/dist/{signals-BQbEfy3X.d.ts → signals-SHg7J1U_.d.ts} +4 -7
- package/dist/{signals-DHdYrd-n.js → signals-r7qPAvOR.js} +12 -15
- package/dist/signals-r7qPAvOR.js.map +1 -0
- package/dist/store-CiqLHedg.js.map +1 -1
- package/dist/text-display--p2-BoUa.js.map +1 -1
- package/dist/type-checker-1Iu1jJcy.js.map +1 -1
- package/dist/types-package-DrnIdWLg.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/utils/dev-hooks.d.ts +2 -2
- package/dist/utils/dev-hooks.js +6 -6
- package/dist/utils/error-codes.d.ts +1 -1
- package/dist/utils/error-codes.js +1 -1
- package/dist/utils/useful-stuff/async-queue.js.map +1 -1
- package/dist/utils/useful-stuff/mutex.js.map +1 -1
- package/dist/utils/useful-stuff/ratelimiter.js.map +1 -1
- package/dist/utils/useful-stuff/semaphore.js.map +1 -1
- package/dist/utils/utilities.js +6 -6
- package/dist/utils/warn-unstable.js.map +1 -1
- package/dist/utils-BnXM4eKk.js.map +1 -1
- package/dist/utils-DCSnVAZ6.js.map +1 -1
- package/dist/{version-D8HlFOxx.js → version-BoHnO-Go.js} +2 -2
- package/dist/{version-D8HlFOxx.js.map → version-BoHnO-Go.js.map} +1 -1
- package/dist/version.js +1 -1
- package/package.json +60 -59
- package/dist/ILogger-DBGON5wx.d.ts +0 -34
- package/dist/build-BoGqWPIS.js.map +0 -1
- package/dist/commandkit-5VMG2thU.js.map +0 -1
- package/dist/error-codes-C-ViHyu-.js.map +0 -1
- package/dist/signals-DHdYrd-n.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-nOFOJqeH.js');
|
|
2
2
|
const require_colors = require('./colors-Cd4Oz-r-.js');
|
|
3
|
-
const require_error_codes = require('./error-codes-
|
|
3
|
+
const require_error_codes = require('./error-codes-Ds0bnPvT.js');
|
|
4
4
|
const require_element = require('./element-Bak9llw_.js');
|
|
5
5
|
const require_EventInterceptor = require('./EventInterceptor-CQ4PBpBJ.js');
|
|
6
6
|
const require_constants = require('./constants-B5_Ta7PR.js');
|
|
@@ -9,10 +9,10 @@ const require_RuntimePlugin = require('./RuntimePlugin-CBgBLXTG.js');
|
|
|
9
9
|
const require_utils = require('./utils-BnXM4eKk.js');
|
|
10
10
|
const require_resolve_file_url = require('./resolve-file-url-DHTQj2mU.js');
|
|
11
11
|
const require_types_package = require('./types-package-DrnIdWLg.js');
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const require_MessageCommandParser = require('./MessageCommandParser-
|
|
12
|
+
const require_constants$1 = require('./constants-DxfYtA6t.js');
|
|
13
|
+
const require_EventWorkerContext = require('./EventWorkerContext-TZIKxVCu.js');
|
|
14
|
+
const require_signals = require('./signals-r7qPAvOR.js');
|
|
15
|
+
const require_MessageCommandParser = require('./MessageCommandParser-TPEPhjvx.js');
|
|
16
16
|
const require_CommandsRouter = require('./CommandsRouter-tMAivEfv.js');
|
|
17
17
|
const require_EventsRouter = require('./EventsRouter-C_J0M3uO.js');
|
|
18
18
|
const require_common = require('./common-DNADUU3_.js');
|
|
@@ -24,6 +24,7 @@ const node_async_hooks = require_chunk.__toESM(require("node:async_hooks"));
|
|
|
24
24
|
const node_fs = require_chunk.__toESM(require("node:fs"));
|
|
25
25
|
const node_path = require_chunk.__toESM(require("node:path"));
|
|
26
26
|
const node_crypto = require_chunk.__toESM(require("node:crypto"));
|
|
27
|
+
const util = require_chunk.__toESM(require("util"));
|
|
27
28
|
const __rollup_plugin_json = require_chunk.__toESM(require("@rollup/plugin-json"));
|
|
28
29
|
|
|
29
30
|
//#region src/context/async-context.ts
|
|
@@ -65,6 +66,7 @@ function makeContextAwareFunction(env, fn, finalizer) {
|
|
|
65
66
|
return result;
|
|
66
67
|
} catch (e) {
|
|
67
68
|
if (!require_error_codes.isCommandKitError(e)) env.setExecutionError(e);
|
|
69
|
+
else throw e;
|
|
68
70
|
} finally {
|
|
69
71
|
if (typeof finalizer === "function") setImmediate(async () => {
|
|
70
72
|
try {
|
|
@@ -1285,47 +1287,57 @@ var DefaultLogger = class {
|
|
|
1285
1287
|
const label = this._getLevelLabel(level);
|
|
1286
1288
|
return `${label}${require_colors.colors_default.dim(BoxChars.vertical)} ${require_colors.colors_default.dim(timestamp)}`;
|
|
1287
1289
|
}
|
|
1288
|
-
_log(level,
|
|
1290
|
+
_log(level, message) {
|
|
1289
1291
|
const prefix = this._getPrefix(level);
|
|
1290
1292
|
const context$1 = this._getContext();
|
|
1291
1293
|
const colorFn = TextColorMap[level];
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
+
let processedMessage = message;
|
|
1295
|
+
if (message instanceof Error) processedMessage = `${message.message}\n${message.stack}`;
|
|
1296
|
+
if (context$1) this.logger.log(`${prefix}\n${context$1} ${require_colors.colors_default.dim(BoxChars.corner)}`, colorFn(processedMessage));
|
|
1297
|
+
else this.logger.log(`${prefix} ${require_colors.colors_default.dim(BoxChars.corner)}`, colorFn(processedMessage));
|
|
1294
1298
|
}
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1299
|
+
_logTemplate(level, strings, ...values) {
|
|
1300
|
+
const prefix = this._getPrefix(level);
|
|
1301
|
+
const context$1 = this._getContext();
|
|
1302
|
+
const colorFn = TextColorMap[level];
|
|
1303
|
+
let result = "";
|
|
1304
|
+
for (let i = 0; i < strings.length; i++) {
|
|
1305
|
+
result += strings[i];
|
|
1306
|
+
if (i < values.length) {
|
|
1307
|
+
const value = values[i];
|
|
1308
|
+
if (value instanceof Error) result += `${value.message}\n${value.stack}`;
|
|
1309
|
+
else if (value !== null && typeof value === "object") result += (0, util.inspect)(value, {
|
|
1310
|
+
colors: true,
|
|
1311
|
+
depth: 2
|
|
1312
|
+
});
|
|
1313
|
+
else result += value;
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
if (context$1) this.logger.log(`${prefix}\n${context$1} ${require_colors.colors_default.dim(BoxChars.corner)}`, colorFn(result));
|
|
1317
|
+
else this.logger.log(`${prefix} ${require_colors.colors_default.dim(BoxChars.corner)}`, colorFn(result));
|
|
1301
1318
|
}
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
*/
|
|
1306
|
-
error(...args) {
|
|
1307
|
-
this._log(LogLevel.ERROR, ...args);
|
|
1319
|
+
debug(messageOrStrings, ...values) {
|
|
1320
|
+
if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.DEBUG, messageOrStrings, ...values);
|
|
1321
|
+
else this._log(LogLevel.DEBUG, messageOrStrings);
|
|
1308
1322
|
}
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
*/
|
|
1313
|
-
log(...args) {
|
|
1314
|
-
this._log(LogLevel.DEFAULT, ...args);
|
|
1323
|
+
error(messageOrStrings, ...values) {
|
|
1324
|
+
if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.ERROR, messageOrStrings, ...values);
|
|
1325
|
+
else this._log(LogLevel.ERROR, messageOrStrings);
|
|
1315
1326
|
}
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
*/
|
|
1320
|
-
info(...args) {
|
|
1321
|
-
this._log(LogLevel.INFO, ...args);
|
|
1327
|
+
log(messageOrStrings, ...values) {
|
|
1328
|
+
if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.DEFAULT, messageOrStrings, ...values);
|
|
1329
|
+
else this._log(LogLevel.DEFAULT, messageOrStrings);
|
|
1322
1330
|
}
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
warn(...
|
|
1328
|
-
this.
|
|
1331
|
+
info(messageOrStrings, ...values) {
|
|
1332
|
+
if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.INFO, messageOrStrings, ...values);
|
|
1333
|
+
else this._log(LogLevel.INFO, messageOrStrings);
|
|
1334
|
+
}
|
|
1335
|
+
warn(messageOrStrings, ...values) {
|
|
1336
|
+
if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.WARN, messageOrStrings, ...values);
|
|
1337
|
+
else this._log(LogLevel.WARN, messageOrStrings);
|
|
1338
|
+
}
|
|
1339
|
+
_isTemplateStringsArray(value) {
|
|
1340
|
+
return Array.isArray(value) && "raw" in value && Array.isArray(value.raw);
|
|
1329
1341
|
}
|
|
1330
1342
|
};
|
|
1331
1343
|
|
|
@@ -1349,8 +1361,8 @@ function createLogger(options) {
|
|
|
1349
1361
|
const impl = { configure(options$1) {
|
|
1350
1362
|
opt = options$1;
|
|
1351
1363
|
} };
|
|
1352
|
-
for (const method of methods) impl[method] = (...
|
|
1353
|
-
opt.provider[method](...
|
|
1364
|
+
for (const method of methods) impl[method] = (...message) => {
|
|
1365
|
+
opt.provider[method](...message);
|
|
1354
1366
|
};
|
|
1355
1367
|
return impl;
|
|
1356
1368
|
}
|
|
@@ -1464,7 +1476,7 @@ var CommandKitPluginRuntime = class {
|
|
|
1464
1476
|
result = await f(this, plugin);
|
|
1465
1477
|
} catch (e) {
|
|
1466
1478
|
if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.PluginCaptureHandle)) return true;
|
|
1467
|
-
Logger.error
|
|
1479
|
+
Logger.error`Plugin "${plugin.name}" failed: ${(e === null || e === void 0 ? void 0 : e.stack) || e}`;
|
|
1468
1480
|
}
|
|
1469
1481
|
return result;
|
|
1470
1482
|
}
|
|
@@ -1602,7 +1614,7 @@ var CompilerPluginRuntime = class {
|
|
|
1602
1614
|
await ((_plugin$activate = plugin.activate) === null || _plugin$activate === void 0 ? void 0 : _plugin$activate.call(plugin, this));
|
|
1603
1615
|
});
|
|
1604
1616
|
} catch (e) {
|
|
1605
|
-
|
|
1617
|
+
Logger.error`Plugin ${plugin.name} failed to activate with ${e}`;
|
|
1606
1618
|
}
|
|
1607
1619
|
this.initialized = true;
|
|
1608
1620
|
}
|
|
@@ -1621,7 +1633,7 @@ var CompilerPluginRuntime = class {
|
|
|
1621
1633
|
await ((_plugin$deactivate = plugin.deactivate) === null || _plugin$deactivate === void 0 ? void 0 : _plugin$deactivate.call(plugin, this));
|
|
1622
1634
|
});
|
|
1623
1635
|
} catch (e) {
|
|
1624
|
-
|
|
1636
|
+
Logger.error`Plugin ${plugin.name} failed to deactivate with ${e}`;
|
|
1625
1637
|
}
|
|
1626
1638
|
this.initialized = false;
|
|
1627
1639
|
}
|
|
@@ -1723,6 +1735,7 @@ const defaultConfig = {
|
|
|
1723
1735
|
},
|
|
1724
1736
|
typedCommands: true,
|
|
1725
1737
|
disablePrefixCommands: false,
|
|
1738
|
+
disablePermissionsMiddleware: false,
|
|
1726
1739
|
showUnknownPrefixCommandsWarning: true,
|
|
1727
1740
|
antiCrashScript: {
|
|
1728
1741
|
development: true,
|
|
@@ -1781,7 +1794,8 @@ function defineConfig(config = {}) {
|
|
|
1781
1794
|
antiCrashScript: {
|
|
1782
1795
|
...defaultConfig.antiCrashScript,
|
|
1783
1796
|
...config.antiCrashScript
|
|
1784
|
-
}
|
|
1797
|
+
},
|
|
1798
|
+
disablePermissionsMiddleware: config.disablePermissionsMiddleware ?? defaultConfig.disablePermissionsMiddleware
|
|
1785
1799
|
};
|
|
1786
1800
|
return defined;
|
|
1787
1801
|
}
|
|
@@ -2415,37 +2429,11 @@ var Context = class Context {
|
|
|
2415
2429
|
if (this.isMessage()) return this.config.messageCommandParser.getArgs();
|
|
2416
2430
|
return [];
|
|
2417
2431
|
}
|
|
2418
|
-
/**
|
|
2419
|
-
* Stops upcoming middleware or current command execution.
|
|
2420
|
-
* If this is called inside pre-stage middleware, the next run will be the actual command, skipping all other pre-stage middlewares.
|
|
2421
|
-
* If this is called inside a command itself, it will skip all post-stage middlewares.
|
|
2422
|
-
* If this is called inside post-stage middleware, it will skip all other post-stage middlewares.
|
|
2423
|
-
*/
|
|
2424
|
-
exit() {
|
|
2425
|
-
require_signals.exitMiddleware();
|
|
2426
|
-
}
|
|
2427
2432
|
};
|
|
2428
2433
|
/**
|
|
2429
2434
|
* Extended context class for middleware execution with additional control methods.
|
|
2430
2435
|
*/
|
|
2431
2436
|
var MiddlewareContext = class extends Context {
|
|
2432
|
-
/**
|
|
2433
|
-
* @private
|
|
2434
|
-
* @internal
|
|
2435
|
-
*/
|
|
2436
|
-
#cancel = false;
|
|
2437
|
-
/**
|
|
2438
|
-
* Whether the command execution was cancelled.
|
|
2439
|
-
*/
|
|
2440
|
-
get cancelled() {
|
|
2441
|
-
return this.#cancel;
|
|
2442
|
-
}
|
|
2443
|
-
/**
|
|
2444
|
-
* Cancels the command execution.
|
|
2445
|
-
*/
|
|
2446
|
-
cancel() {
|
|
2447
|
-
this.#cancel = true;
|
|
2448
|
-
}
|
|
2449
2437
|
/**
|
|
2450
2438
|
* Sets command runner function to wrap the command execution.
|
|
2451
2439
|
* @param fn The function to set.
|
|
@@ -2480,6 +2468,7 @@ var AppCommandRunner = class {
|
|
|
2480
2468
|
* Handles the complete command lifecycle including before/after middleware execution.
|
|
2481
2469
|
* @param prepared - The prepared command execution data
|
|
2482
2470
|
* @param source - The source interaction or message that triggered the command
|
|
2471
|
+
* @param options - The options for running the command
|
|
2483
2472
|
*/
|
|
2484
2473
|
async runCommand(prepared, source, options) {
|
|
2485
2474
|
const { commandkit: commandkit$1 } = this.handler;
|
|
@@ -2492,119 +2481,126 @@ var AppCommandRunner = class {
|
|
|
2492
2481
|
env.variables.set("currentCommandName", prepared.command.command.name);
|
|
2493
2482
|
env.variables.set("execHandlerKind", executionMode);
|
|
2494
2483
|
env.variables.set("customHandler", (options === null || options === void 0 ? void 0 : options.handler) ?? null);
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
try {
|
|
2512
|
-
await middleware.data.beforeExecute(
|
|
2484
|
+
try {
|
|
2485
|
+
const middlewareCtx = new MiddlewareContext(commandkit$1, {
|
|
2486
|
+
command: prepared.command,
|
|
2487
|
+
environment: env,
|
|
2488
|
+
executionMode,
|
|
2489
|
+
interaction: !(source instanceof discord_js.Message) ? source : null,
|
|
2490
|
+
message: source instanceof discord_js.Message ? source : null,
|
|
2491
|
+
forwarded: false,
|
|
2492
|
+
customArgs: { setCommandRunner: (fn) => {
|
|
2493
|
+
runCommand = fn;
|
|
2494
|
+
} },
|
|
2495
|
+
messageCommandParser: prepared.messageCommandParser
|
|
2496
|
+
});
|
|
2497
|
+
const beforeMiddlewares = prepared.middlewares.filter((m) => m.data.beforeExecute);
|
|
2498
|
+
let beforeMiddlewaresStopped = false;
|
|
2499
|
+
if (beforeMiddlewares.length) await provideContext(env, async () => {
|
|
2500
|
+
for (const middleware of beforeMiddlewares) try {
|
|
2501
|
+
await middleware.data.beforeExecute(middlewareCtx);
|
|
2513
2502
|
} catch (e) {
|
|
2514
|
-
if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.
|
|
2515
|
-
|
|
2516
|
-
|
|
2503
|
+
if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.StopMiddlewares)) {
|
|
2504
|
+
beforeMiddlewaresStopped = true;
|
|
2505
|
+
Logger.debug(`Middleware propagation stopped for command "${middlewareCtx.commandName}". stopMiddlewares() was called inside a beforeExecute function at "${middleware.middleware.relativePath}"`);
|
|
2506
|
+
break;
|
|
2517
2507
|
}
|
|
2518
2508
|
if (require_error_codes.isErrorType(e, [require_error_codes.CommandKitErrorCodes.ForwardedCommand, require_error_codes.CommandKitErrorCodes.InvalidCommandPrefix])) continue;
|
|
2519
2509
|
throw e;
|
|
2520
2510
|
}
|
|
2521
|
-
}
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2511
|
+
});
|
|
2512
|
+
let result;
|
|
2513
|
+
let stopMiddlewaresCalledInCmd = false;
|
|
2514
|
+
if (!beforeMiddlewaresStopped) {
|
|
2515
|
+
const targetData = prepared.command.data;
|
|
2516
|
+
const fn = targetData[(options === null || options === void 0 ? void 0 : options.handler) || executionMode];
|
|
2517
|
+
if (!fn) Logger.warn(`Command ${prepared.command.command.name} has no handler for ${executionMode}`);
|
|
2518
|
+
const analytics = commandkit$1.analytics;
|
|
2519
|
+
if (fn) try {
|
|
2520
|
+
const _executeCommand = makeContextAwareFunction(env, async () => {
|
|
2521
|
+
env.registerDeferredFunction(async (env$1) => {
|
|
2522
|
+
var _prepared$command2;
|
|
2523
|
+
env$1.markEnd();
|
|
2524
|
+
const error = env$1.getExecutionError();
|
|
2525
|
+
const marker = env$1.getMarker();
|
|
2526
|
+
const time = `${env$1.getExecutionTime().toFixed(2)}ms`;
|
|
2527
|
+
if (error) {
|
|
2528
|
+
var _prepared$command;
|
|
2529
|
+
Logger.error`[${marker} - ${time}] Error executing command: ${error}`;
|
|
2530
|
+
const commandName$1 = ((_prepared$command = prepared.command) === null || _prepared$command === void 0 || (_prepared$command = _prepared$command.data) === null || _prepared$command === void 0 || (_prepared$command = _prepared$command.command) === null || _prepared$command === void 0 ? void 0 : _prepared$command.name) ?? prepared.command.command.name;
|
|
2531
|
+
await analytics.track({
|
|
2532
|
+
name: require_constants$1.AnalyticsEvents.COMMAND_EXECUTION,
|
|
2533
|
+
id: commandName$1,
|
|
2534
|
+
data: {
|
|
2535
|
+
error: true,
|
|
2536
|
+
executionTime: env$1.getExecutionTime().toFixed(2),
|
|
2537
|
+
type: executionMode,
|
|
2538
|
+
command: commandName$1
|
|
2539
|
+
}
|
|
2540
|
+
});
|
|
2541
|
+
return;
|
|
2542
|
+
}
|
|
2543
|
+
Logger.info(`[${marker} - ${time}] Command executed successfully`);
|
|
2544
|
+
const commandName = ((_prepared$command2 = prepared.command) === null || _prepared$command2 === void 0 || (_prepared$command2 = _prepared$command2.data) === null || _prepared$command2 === void 0 || (_prepared$command2 = _prepared$command2.command) === null || _prepared$command2 === void 0 ? void 0 : _prepared$command2.name) ?? prepared.command.command.name;
|
|
2541
2545
|
await analytics.track({
|
|
2542
2546
|
name: require_constants$1.AnalyticsEvents.COMMAND_EXECUTION,
|
|
2543
|
-
id: commandName
|
|
2547
|
+
id: commandName,
|
|
2544
2548
|
data: {
|
|
2545
|
-
error:
|
|
2549
|
+
error: false,
|
|
2546
2550
|
executionTime: env$1.getExecutionTime().toFixed(2),
|
|
2547
2551
|
type: executionMode,
|
|
2548
|
-
command: commandName
|
|
2552
|
+
command: commandName
|
|
2549
2553
|
}
|
|
2550
2554
|
});
|
|
2551
|
-
return;
|
|
2552
|
-
}
|
|
2553
|
-
Logger.info(`[${marker} - ${time}] Command executed successfully`);
|
|
2554
|
-
const commandName = ((_prepared$command2 = prepared.command) === null || _prepared$command2 === void 0 || (_prepared$command2 = _prepared$command2.data) === null || _prepared$command2 === void 0 || (_prepared$command2 = _prepared$command2.command) === null || _prepared$command2 === void 0 ? void 0 : _prepared$command2.name) ?? prepared.command.command.name;
|
|
2555
|
-
await analytics.track({
|
|
2556
|
-
name: require_constants$1.AnalyticsEvents.COMMAND_EXECUTION,
|
|
2557
|
-
id: commandName,
|
|
2558
|
-
data: {
|
|
2559
|
-
error: false,
|
|
2560
|
-
executionTime: env$1.getExecutionTime().toFixed(2),
|
|
2561
|
-
type: executionMode,
|
|
2562
|
-
command: commandName
|
|
2563
|
-
}
|
|
2564
2555
|
});
|
|
2556
|
+
return fn(middlewareCtx.clone());
|
|
2557
|
+
}, this.#finalizer.bind(this));
|
|
2558
|
+
const executeCommand = runCommand != null ? runCommand(_executeCommand) : _executeCommand;
|
|
2559
|
+
env.markStart(prepared.command.data.command.name);
|
|
2560
|
+
const res = await commandkit$1.plugins.execute(async (ctx, plugin) => {
|
|
2561
|
+
return plugin.executeCommand(ctx, env, source, prepared, executeCommand);
|
|
2565
2562
|
});
|
|
2566
|
-
|
|
2567
|
-
}
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.ExitMiddleware)) middlewaresCanceled = true;
|
|
2576
|
-
if (!require_error_codes.isErrorType(e, [require_error_codes.CommandKitErrorCodes.ForwardedCommand, require_error_codes.CommandKitErrorCodes.ExitMiddleware])) {
|
|
2577
|
-
if (shouldThrowOnError) throw e;
|
|
2578
|
-
Logger.error(e);
|
|
2563
|
+
if (!res) result = await executeCommand();
|
|
2564
|
+
} catch (e) {
|
|
2565
|
+
if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.StopMiddlewares)) {
|
|
2566
|
+
stopMiddlewaresCalledInCmd = true;
|
|
2567
|
+
Logger.debug(`Middleware propagation stopped for command "${middlewareCtx.commandName}". stopMiddlewares() was called by the command itself`);
|
|
2568
|
+
} else if (!require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.ForwardedCommand)) {
|
|
2569
|
+
if (shouldThrowOnError) throw e;
|
|
2570
|
+
Logger.error`${e}`;
|
|
2571
|
+
}
|
|
2579
2572
|
}
|
|
2580
|
-
}
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
try {
|
|
2589
|
-
await middleware.data.afterExecute(ctx);
|
|
2573
|
+
} else result = {
|
|
2574
|
+
error: true,
|
|
2575
|
+
message: "Command execution was cancelled by a beforeExecute middleware."
|
|
2576
|
+
};
|
|
2577
|
+
const afterMiddlewares = prepared.middlewares.filter((m) => m.data.afterExecute);
|
|
2578
|
+
if (!beforeMiddlewaresStopped && !stopMiddlewaresCalledInCmd && afterMiddlewares.length) await provideContext(env, async () => {
|
|
2579
|
+
for (const middleware of afterMiddlewares) try {
|
|
2580
|
+
await middleware.data.afterExecute(middlewareCtx);
|
|
2590
2581
|
} catch (e) {
|
|
2591
|
-
if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.
|
|
2582
|
+
if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.StopMiddlewares)) {
|
|
2583
|
+
Logger.debug(`Middleware propagation stopped for command "${middlewareCtx.commandName}". stopMiddlewares() was called inside an afterExecute function at "${middleware.middleware.relativePath}"`);
|
|
2584
|
+
break;
|
|
2585
|
+
}
|
|
2592
2586
|
throw e;
|
|
2593
2587
|
}
|
|
2594
|
-
}
|
|
2595
|
-
|
|
2596
|
-
|
|
2588
|
+
});
|
|
2589
|
+
return result;
|
|
2590
|
+
} finally {
|
|
2591
|
+
await this.#finalizer(env, false);
|
|
2592
|
+
}
|
|
2597
2593
|
}
|
|
2598
2594
|
/**
|
|
2599
2595
|
* @private
|
|
2600
2596
|
* @internal
|
|
2601
2597
|
* Finalizes command execution by running deferred functions and plugin cleanup.
|
|
2602
2598
|
*/
|
|
2603
|
-
async #finalizer() {
|
|
2604
|
-
|
|
2599
|
+
async #finalizer(env, runPlugins = true) {
|
|
2600
|
+
env ??= useEnvironment();
|
|
2605
2601
|
await env.runDeferredFunctions();
|
|
2606
2602
|
env.clearAllDeferredFunctions();
|
|
2607
|
-
await this.handler.commandkit.plugins.execute(async (ctx, plugin) => {
|
|
2603
|
+
if (runPlugins) await this.handler.commandkit.plugins.execute(async (ctx, plugin) => {
|
|
2608
2604
|
await plugin.onAfterCommand(ctx, env);
|
|
2609
2605
|
});
|
|
2610
2606
|
}
|
|
@@ -2650,20 +2646,26 @@ var CommandRegistrar = class {
|
|
|
2650
2646
|
const commands = handler.getCommandsArray();
|
|
2651
2647
|
return commands.flatMap((cmd) => {
|
|
2652
2648
|
const json$1 = "toJSON" in cmd.data.command ? cmd.data.command.toJSON() : cmd.data.command;
|
|
2653
|
-
const
|
|
2649
|
+
const __metadata = cmd.metadata ?? cmd.data.metadata;
|
|
2650
|
+
const collections = [{
|
|
2651
|
+
...json$1,
|
|
2652
|
+
__metadata
|
|
2653
|
+
}];
|
|
2654
2654
|
if (cmd.data.userContextMenu && json$1.type !== discord_js.ApplicationCommandType.User) collections.push({
|
|
2655
2655
|
...json$1,
|
|
2656
2656
|
type: discord_js.ApplicationCommandType.User,
|
|
2657
2657
|
options: void 0,
|
|
2658
2658
|
description_localizations: void 0,
|
|
2659
|
-
description: void 0
|
|
2659
|
+
description: void 0,
|
|
2660
|
+
__metadata
|
|
2660
2661
|
});
|
|
2661
2662
|
if (cmd.data.messageContextMenu && json$1.type !== discord_js.ApplicationCommandType.Message) collections.push({
|
|
2662
2663
|
...json$1,
|
|
2663
2664
|
type: discord_js.ApplicationCommandType.Message,
|
|
2664
2665
|
description_localizations: void 0,
|
|
2665
2666
|
description: void 0,
|
|
2666
|
-
options: void 0
|
|
2667
|
+
options: void 0,
|
|
2668
|
+
__metadata
|
|
2667
2669
|
});
|
|
2668
2670
|
return collections;
|
|
2669
2671
|
});
|
|
@@ -2687,18 +2689,18 @@ var CommandRegistrar = class {
|
|
|
2687
2689
|
if (preRegistrationPrevented) return;
|
|
2688
2690
|
if (!this.commandkit.client.isReady()) throw new Error("Cannot register commands before the client is ready");
|
|
2689
2691
|
const guildCommands = commands.filter((command) => {
|
|
2690
|
-
var _command$
|
|
2691
|
-
return (_command$
|
|
2692
|
+
var _command$__metadata;
|
|
2693
|
+
return (_command$__metadata = command.__metadata) === null || _command$__metadata === void 0 || (_command$__metadata = _command$__metadata.guilds) === null || _command$__metadata === void 0 ? void 0 : _command$__metadata.filter(Boolean).length;
|
|
2692
2694
|
}).map((c) => {
|
|
2693
|
-
var _c$
|
|
2695
|
+
var _c$__metadata;
|
|
2694
2696
|
return {
|
|
2695
2697
|
...c,
|
|
2696
|
-
guilds: Array.from(new Set((_c$
|
|
2698
|
+
guilds: Array.from(new Set((_c$__metadata = c.__metadata) === null || _c$__metadata === void 0 || (_c$__metadata = _c$__metadata.guilds) === null || _c$__metadata === void 0 ? void 0 : _c$__metadata.filter(Boolean)))
|
|
2697
2699
|
};
|
|
2698
2700
|
});
|
|
2699
2701
|
const globalCommands = commands.filter((command) => {
|
|
2700
|
-
var _command$
|
|
2701
|
-
return !((_command$
|
|
2702
|
+
var _command$__metadata2;
|
|
2703
|
+
return !((_command$__metadata2 = command.__metadata) === null || _command$__metadata2 === void 0 || (_command$__metadata2 = _command$__metadata2.guilds) === null || _command$__metadata2 === void 0 ? void 0 : _command$__metadata2.filter(Boolean).length);
|
|
2702
2704
|
});
|
|
2703
2705
|
await this.updateGlobalCommands(globalCommands);
|
|
2704
2706
|
await this.updateGuildCommands(guildCommands);
|
|
@@ -2722,11 +2724,11 @@ var CommandRegistrar = class {
|
|
|
2722
2724
|
try {
|
|
2723
2725
|
const data = await this.api.put(discord_js.Routes.applicationCommands(this.commandkit.client.user.id), { body: commands.map((c) => ({
|
|
2724
2726
|
...c,
|
|
2725
|
-
|
|
2727
|
+
__metadata: void 0
|
|
2726
2728
|
})) });
|
|
2727
2729
|
Logger.info(`✨ Refreshed ${data.length} global application (/) commands`);
|
|
2728
2730
|
} catch (e) {
|
|
2729
|
-
Logger.error
|
|
2731
|
+
Logger.error`Failed to update global application (/) commands: ${e}`;
|
|
2730
2732
|
}
|
|
2731
2733
|
}
|
|
2732
2734
|
/**
|
|
@@ -2749,9 +2751,9 @@ var CommandRegistrar = class {
|
|
|
2749
2751
|
try {
|
|
2750
2752
|
const guildCommandsMap = /* @__PURE__ */ new Map();
|
|
2751
2753
|
commands.forEach((command) => {
|
|
2752
|
-
var _command$
|
|
2753
|
-
if (!((_command$
|
|
2754
|
-
command.guilds.forEach((guild) => {
|
|
2754
|
+
var _command$__metadata3, _command$__metadata4;
|
|
2755
|
+
if (!((_command$__metadata3 = command.__metadata) === null || _command$__metadata3 === void 0 || (_command$__metadata3 = _command$__metadata3.guilds) === null || _command$__metadata3 === void 0 ? void 0 : _command$__metadata3.length)) return;
|
|
2756
|
+
(_command$__metadata4 = command.__metadata) === null || _command$__metadata4 === void 0 || (_command$__metadata4 = _command$__metadata4.guilds) === null || _command$__metadata4 === void 0 || _command$__metadata4.forEach((guild) => {
|
|
2755
2757
|
if (!guildCommandsMap.has(guild)) guildCommandsMap.set(guild, []);
|
|
2756
2758
|
guildCommandsMap.get(guild).push(command);
|
|
2757
2759
|
});
|
|
@@ -2773,19 +2775,102 @@ var CommandRegistrar = class {
|
|
|
2773
2775
|
if (prevented$1) continue;
|
|
2774
2776
|
const data = await this.api.put(discord_js.Routes.applicationGuildCommands(this.commandkit.client.user.id, guild), { body: guildCommands.map((b) => ({
|
|
2775
2777
|
...b,
|
|
2776
|
-
|
|
2778
|
+
__metadata: void 0
|
|
2777
2779
|
})) });
|
|
2778
2780
|
count += data.length;
|
|
2779
2781
|
}
|
|
2780
2782
|
Logger.info(`✨ Refreshed ${count} guild application (/) commands`);
|
|
2781
2783
|
} catch (e) {
|
|
2782
|
-
Logger.error
|
|
2784
|
+
Logger.error`Failed to update guild application (/) commands: ${e}`;
|
|
2783
2785
|
}
|
|
2784
2786
|
}
|
|
2785
2787
|
};
|
|
2786
2788
|
|
|
2789
|
+
//#endregion
|
|
2790
|
+
//#region src/app/middlewares/permissions.ts
|
|
2791
|
+
const middlewareId = crypto.randomUUID();
|
|
2792
|
+
/**
|
|
2793
|
+
* @private
|
|
2794
|
+
* @ignore
|
|
2795
|
+
*/
|
|
2796
|
+
async function beforeExecute(ctx) {
|
|
2797
|
+
var _interaction$channel, _message$channel, _message$member, _command$metadata, _interaction$guild, _message$guild, _command$metadata2;
|
|
2798
|
+
if (getConfig().disablePermissionsMiddleware) return;
|
|
2799
|
+
const { interaction, message, command } = ctx;
|
|
2800
|
+
if (interaction && !interaction.isCommand()) return;
|
|
2801
|
+
if (interaction && ((_interaction$channel = interaction.channel) === null || _interaction$channel === void 0 ? void 0 : _interaction$channel.isDMBased()) || message && ((_message$channel = message.channel) === null || _message$channel === void 0 ? void 0 : _message$channel.isDMBased())) {
|
|
2802
|
+
const channel = (interaction === null || interaction === void 0 ? void 0 : interaction.channel) ?? (message === null || message === void 0 ? void 0 : message.channel);
|
|
2803
|
+
const embed$1 = new discord_js.EmbedBuilder().setTitle(":x: Server-only command!").setDescription("This command can only be used in a server.").setColor("Red");
|
|
2804
|
+
try {
|
|
2805
|
+
if (channel === null || channel === void 0 ? void 0 : channel.isSendable()) if (interaction && interaction.isRepliable()) await interaction.reply({
|
|
2806
|
+
embeds: [embed$1],
|
|
2807
|
+
flags: discord_js.MessageFlags.Ephemeral
|
|
2808
|
+
});
|
|
2809
|
+
else await message.reply({ embeds: [embed$1] });
|
|
2810
|
+
} catch (error) {
|
|
2811
|
+
Logger.error`Could not send 'Server-only command' DM to user ${(interaction === null || interaction === void 0 ? void 0 : interaction.user.id) ?? (message === null || message === void 0 ? void 0 : message.author.id)} for command ${command.command.name}: ${error}`;
|
|
2812
|
+
}
|
|
2813
|
+
require_signals.stopMiddlewares();
|
|
2814
|
+
}
|
|
2815
|
+
const userPermissions = (interaction === null || interaction === void 0 ? void 0 : interaction.memberPermissions) ?? (message === null || message === void 0 || (_message$member = message.member) === null || _message$member === void 0 ? void 0 : _message$member.permissions);
|
|
2816
|
+
let userPermissionsRequired = ((_command$metadata = command.metadata) === null || _command$metadata === void 0 ? void 0 : _command$metadata.userPermissions) ?? [];
|
|
2817
|
+
let missingUserPermissions = [];
|
|
2818
|
+
if (typeof userPermissionsRequired === "string") userPermissionsRequired = [userPermissionsRequired];
|
|
2819
|
+
const botPermissions = (interaction === null || interaction === void 0 || (_interaction$guild = interaction.guild) === null || _interaction$guild === void 0 || (_interaction$guild = _interaction$guild.members.me) === null || _interaction$guild === void 0 ? void 0 : _interaction$guild.permissions) ?? (message === null || message === void 0 || (_message$guild = message.guild) === null || _message$guild === void 0 || (_message$guild = _message$guild.members.me) === null || _message$guild === void 0 ? void 0 : _message$guild.permissions);
|
|
2820
|
+
let botPermissionsRequired = ((_command$metadata2 = command.metadata) === null || _command$metadata2 === void 0 ? void 0 : _command$metadata2.botPermissions) ?? [];
|
|
2821
|
+
let missingBotPermissions = [];
|
|
2822
|
+
if (typeof botPermissionsRequired === "string") botPermissionsRequired = [botPermissionsRequired];
|
|
2823
|
+
if (!userPermissionsRequired.length && !botPermissionsRequired.length) return;
|
|
2824
|
+
if (userPermissionsRequired.length) for (const permission of userPermissionsRequired) {
|
|
2825
|
+
const hasPermission = userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.has(permission);
|
|
2826
|
+
if (!hasPermission) missingUserPermissions.push(permission);
|
|
2827
|
+
}
|
|
2828
|
+
if (botPermissionsRequired.length) for (const permission of botPermissionsRequired) {
|
|
2829
|
+
const hasPermission = botPermissions === null || botPermissions === void 0 ? void 0 : botPermissions.has(permission);
|
|
2830
|
+
if (!hasPermission) missingBotPermissions.push(permission);
|
|
2831
|
+
}
|
|
2832
|
+
if (!missingUserPermissions.length && !missingBotPermissions.length) return;
|
|
2833
|
+
const pattern = /([a-z])([A-Z])|([A-Z]+)([A-Z][a-z])/g;
|
|
2834
|
+
missingUserPermissions = missingUserPermissions.map((str) => str.replace(pattern, "$1$3 $2$4"));
|
|
2835
|
+
missingBotPermissions = missingBotPermissions.map((str) => str.replace(pattern, "$1$3 $2$4"));
|
|
2836
|
+
let embedDescription = "";
|
|
2837
|
+
const formatter = new Intl.ListFormat("en", {
|
|
2838
|
+
style: "long",
|
|
2839
|
+
type: "conjunction"
|
|
2840
|
+
});
|
|
2841
|
+
const getPermissionWord = (permissions) => permissions.length === 1 ? "permission" : "permissions";
|
|
2842
|
+
if (missingUserPermissions.length) {
|
|
2843
|
+
const formattedPermissions = missingUserPermissions.map((p) => `\`${p}\``);
|
|
2844
|
+
const permissionsString = formatter.format(formattedPermissions);
|
|
2845
|
+
embedDescription += `- You must have the ${permissionsString} ${getPermissionWord(missingUserPermissions)} to be able to run this command.\n`;
|
|
2846
|
+
}
|
|
2847
|
+
if (missingBotPermissions.length) {
|
|
2848
|
+
const formattedPermissions = missingBotPermissions.map((p) => `\`${p}\``);
|
|
2849
|
+
const permissionsString = formatter.format(formattedPermissions);
|
|
2850
|
+
embedDescription += `- I must have the ${permissionsString} ${getPermissionWord(missingBotPermissions)} to be able to execute this command.\n`;
|
|
2851
|
+
}
|
|
2852
|
+
const embed = new discord_js.EmbedBuilder().setTitle(`:x: Missing permissions!`).setDescription(embedDescription).setColor("Red");
|
|
2853
|
+
try {
|
|
2854
|
+
var _message$channel2;
|
|
2855
|
+
if (interaction && interaction.isRepliable()) await interaction.reply({
|
|
2856
|
+
embeds: [embed],
|
|
2857
|
+
flags: discord_js.MessageFlags.Ephemeral
|
|
2858
|
+
});
|
|
2859
|
+
else if (message && ((_message$channel2 = message.channel) === null || _message$channel2 === void 0 ? void 0 : _message$channel2.isSendable())) await message.reply({ embeds: [embed] });
|
|
2860
|
+
} catch (error) {
|
|
2861
|
+
Logger.error`Could not send 'Not enough permissions' reply to user ${(interaction === null || interaction === void 0 ? void 0 : interaction.user.id) ?? (message === null || message === void 0 ? void 0 : message.author.id)} for command ${command.command.name}: ${error}`;
|
|
2862
|
+
}
|
|
2863
|
+
require_signals.stopMiddlewares();
|
|
2864
|
+
}
|
|
2865
|
+
|
|
2787
2866
|
//#endregion
|
|
2788
2867
|
//#region src/app/handlers/AppCommandHandler.ts
|
|
2868
|
+
const KNOWN_NON_HANDLER_KEYS = [
|
|
2869
|
+
"command",
|
|
2870
|
+
"generateMetadata",
|
|
2871
|
+
"metadata",
|
|
2872
|
+
"aiConfig"
|
|
2873
|
+
];
|
|
2789
2874
|
/**
|
|
2790
2875
|
* @private
|
|
2791
2876
|
* @internal
|
|
@@ -2975,7 +3060,7 @@ var AppCommandHandler = class {
|
|
|
2975
3060
|
* @returns Prepared command execution data or null if command not found
|
|
2976
3061
|
*/
|
|
2977
3062
|
async prepareCommandRun(source, cmdName) {
|
|
2978
|
-
var _loadedCommand$
|
|
3063
|
+
var _loadedCommand$metada3, _loadedCommand$metada4;
|
|
2979
3064
|
const config = getConfig();
|
|
2980
3065
|
if (config.disablePrefixCommands && source instanceof discord_js.Message) return null;
|
|
2981
3066
|
let parser;
|
|
@@ -2984,13 +3069,13 @@ var AppCommandHandler = class {
|
|
|
2984
3069
|
const prefix = await this.commandkit.appConfig.getMessageCommandPrefix(source);
|
|
2985
3070
|
if (!prefix || !prefix.length) return null;
|
|
2986
3071
|
parser = new require_MessageCommandParser.MessageCommandParser(source, Array.isArray(prefix) ? prefix : [prefix], (command) => {
|
|
2987
|
-
var _loadedCommand$
|
|
3072
|
+
var _loadedCommand$metada, _loadedCommand$metada2, _json$options;
|
|
2988
3073
|
const loadedCommand$1 = this.findCommandByName(command);
|
|
2989
3074
|
if (!loadedCommand$1) {
|
|
2990
|
-
if (require_constants.COMMANDKIT_IS_DEV && this.commandkit.config.showUnknownPrefixCommandsWarning) Logger.error
|
|
3075
|
+
if (require_constants.COMMANDKIT_IS_DEV && this.commandkit.config.showUnknownPrefixCommandsWarning) Logger.error`Prefix command "${command}" was not found.\nNote: This warning is only shown in development mode as an alert to help you find the command. If you wish to remove this warning, set \`showUnknownPrefixCommandsWarning\` to \`false\` in your commandkit config.`;
|
|
2991
3076
|
return null;
|
|
2992
3077
|
}
|
|
2993
|
-
if (source.guildId && ((_loadedCommand$
|
|
3078
|
+
if (source.guildId && ((_loadedCommand$metada = loadedCommand$1.metadata) === null || _loadedCommand$metada === void 0 || (_loadedCommand$metada = _loadedCommand$metada.guilds) === null || _loadedCommand$metada === void 0 ? void 0 : _loadedCommand$metada.length) && !((_loadedCommand$metada2 = loadedCommand$1.metadata) === null || _loadedCommand$metada2 === void 0 ? void 0 : _loadedCommand$metada2.guilds.includes(source.guildId))) return null;
|
|
2994
3079
|
const json$1 = "toJSON" in loadedCommand$1.data.command ? loadedCommand$1.data.command.toJSON() : loadedCommand$1.data.command;
|
|
2995
3080
|
return ((_json$options = json$1.options) === null || _json$options === void 0 ? void 0 : _json$options.reduce((acc, opt) => {
|
|
2996
3081
|
acc[opt.name] = opt.type;
|
|
@@ -3003,7 +3088,7 @@ var AppCommandHandler = class {
|
|
|
3003
3088
|
cmdName = parts[0];
|
|
3004
3089
|
} catch (e) {
|
|
3005
3090
|
if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.InvalidCommandPrefix)) return null;
|
|
3006
|
-
Logger.error
|
|
3091
|
+
Logger.error`${e}`;
|
|
3007
3092
|
return null;
|
|
3008
3093
|
}
|
|
3009
3094
|
} else {
|
|
@@ -3013,12 +3098,24 @@ var AppCommandHandler = class {
|
|
|
3013
3098
|
}
|
|
3014
3099
|
const loadedCommand = this.findCommandByName(cmdName);
|
|
3015
3100
|
if (!loadedCommand) return null;
|
|
3016
|
-
if ((source instanceof discord_js.CommandInteraction || source instanceof discord_js.AutocompleteInteraction) && source.guildId && ((_loadedCommand$
|
|
3101
|
+
if ((source instanceof discord_js.CommandInteraction || source instanceof discord_js.AutocompleteInteraction) && source.guildId && ((_loadedCommand$metada3 = loadedCommand.metadata) === null || _loadedCommand$metada3 === void 0 || (_loadedCommand$metada3 = _loadedCommand$metada3.guilds) === null || _loadedCommand$metada3 === void 0 ? void 0 : _loadedCommand$metada3.length) && !((_loadedCommand$metada4 = loadedCommand.metadata) === null || _loadedCommand$metada4 === void 0 ? void 0 : _loadedCommand$metada4.guilds.includes(source.guildId))) return null;
|
|
3017
3102
|
const middlewares = [];
|
|
3018
|
-
for (const middlewareId of loadedCommand.command.middlewares) {
|
|
3019
|
-
const middleware = this.loadedMiddlewares.get(middlewareId);
|
|
3103
|
+
for (const middlewareId$1 of loadedCommand.command.middlewares) {
|
|
3104
|
+
const middleware = this.loadedMiddlewares.get(middlewareId$1);
|
|
3020
3105
|
if (middleware) middlewares.push(middleware);
|
|
3021
3106
|
}
|
|
3107
|
+
if (!getConfig().disablePermissionsMiddleware) middlewares.push({
|
|
3108
|
+
data: { beforeExecute },
|
|
3109
|
+
middleware: {
|
|
3110
|
+
command: null,
|
|
3111
|
+
global: true,
|
|
3112
|
+
id: middlewareId,
|
|
3113
|
+
name: "permissions",
|
|
3114
|
+
parentPath: "",
|
|
3115
|
+
path: "",
|
|
3116
|
+
relativePath: ""
|
|
3117
|
+
}
|
|
3118
|
+
});
|
|
3022
3119
|
return {
|
|
3023
3120
|
command: loadedCommand,
|
|
3024
3121
|
middlewares,
|
|
@@ -3032,8 +3129,9 @@ var AppCommandHandler = class {
|
|
|
3032
3129
|
*/
|
|
3033
3130
|
findCommandByName(name) {
|
|
3034
3131
|
for (const [, loadedCommand] of this.loadedCommands) {
|
|
3132
|
+
var _loadedCommand$data$m;
|
|
3035
3133
|
if (loadedCommand.data.command.name === name) return loadedCommand;
|
|
3036
|
-
const aliases = loadedCommand.data.
|
|
3134
|
+
const aliases = (_loadedCommand$data$m = loadedCommand.data.metadata) === null || _loadedCommand$data$m === void 0 ? void 0 : _loadedCommand$data$m.aliases;
|
|
3037
3135
|
if (aliases && Array.isArray(aliases) && aliases.includes(name)) return loadedCommand;
|
|
3038
3136
|
}
|
|
3039
3137
|
return null;
|
|
@@ -3098,7 +3196,7 @@ var AppCommandHandler = class {
|
|
|
3098
3196
|
for (const [id, command] of combinedCommands) await this.loadCommand(id, command);
|
|
3099
3197
|
if (require_constants.COMMANDKIT_IS_DEV) {
|
|
3100
3198
|
const commandNames = Array.from(this.loadedCommands.values()).map((v) => v.data.command.name);
|
|
3101
|
-
const aliases = Array.from(this.loadedCommands.values()).flatMap((v) => v.
|
|
3199
|
+
const aliases = Array.from(this.loadedCommands.values()).flatMap((v) => v.metadata.aliases || []);
|
|
3102
3200
|
const allNames = [...commandNames, ...aliases];
|
|
3103
3201
|
await require_types_package.rewriteCommandDeclaration(`type CommandTypeData = ${allNames.map((name) => JSON.stringify(name)).join(" | ")}`);
|
|
3104
3202
|
}
|
|
@@ -3124,7 +3222,7 @@ var AppCommandHandler = class {
|
|
|
3124
3222
|
data
|
|
3125
3223
|
});
|
|
3126
3224
|
} catch (error) {
|
|
3127
|
-
Logger.error
|
|
3225
|
+
Logger.error`Failed to load middleware ${id}: ${error}`;
|
|
3128
3226
|
}
|
|
3129
3227
|
}
|
|
3130
3228
|
/**
|
|
@@ -3136,6 +3234,12 @@ var AppCommandHandler = class {
|
|
|
3136
3234
|
if (command.path === null) {
|
|
3137
3235
|
this.loadedCommands.set(id, {
|
|
3138
3236
|
command,
|
|
3237
|
+
metadata: {
|
|
3238
|
+
guilds: [],
|
|
3239
|
+
aliases: [],
|
|
3240
|
+
userPermissions: [],
|
|
3241
|
+
botPermissions: []
|
|
3242
|
+
},
|
|
3139
3243
|
data: { command: {
|
|
3140
3244
|
name: command.name,
|
|
3141
3245
|
description: `${command.name} command`,
|
|
@@ -3146,20 +3250,28 @@ var AppCommandHandler = class {
|
|
|
3146
3250
|
}
|
|
3147
3251
|
const commandFileData = await import(`${require_resolve_file_url.toFileURL(command.path)}?t=${Date.now()}`);
|
|
3148
3252
|
if (!commandFileData.command) throw new Error(`Invalid export for command ${command.name}: no command definition found`);
|
|
3253
|
+
const metadataFunc = commandFileData.generateMetadata;
|
|
3254
|
+
const metadataObj = commandFileData.metadata;
|
|
3255
|
+
if (metadataFunc && metadataObj) throw new Error("A command may only export either `generateMetadata` or `metadata`, not both");
|
|
3256
|
+
const metadata = (metadataFunc ? await metadataFunc() : metadataObj) ?? {
|
|
3257
|
+
aliases: [],
|
|
3258
|
+
guilds: [],
|
|
3259
|
+
userPermissions: [],
|
|
3260
|
+
botPermissions: []
|
|
3261
|
+
};
|
|
3149
3262
|
const commandName = commandFileData.command.name || command.name;
|
|
3150
3263
|
const commandDescription = commandFileData.command.description || `${commandName} command`;
|
|
3151
3264
|
const updatedCommandData = {
|
|
3152
3265
|
...commandFileData.command,
|
|
3153
3266
|
name: commandName,
|
|
3154
|
-
description: commandDescription
|
|
3155
|
-
aliases: commandFileData.command.aliases
|
|
3267
|
+
description: commandDescription
|
|
3156
3268
|
};
|
|
3157
3269
|
let handlerCount = 0;
|
|
3158
3270
|
for (const [key, propValidator] of Object.entries(commandDataSchema)) {
|
|
3159
3271
|
const exportedProp = commandFileData[key];
|
|
3160
3272
|
if (exportedProp) {
|
|
3161
3273
|
if (!await propValidator(exportedProp)) throw new Error(`Invalid export for command ${command.name}: ${key} does not match expected value`);
|
|
3162
|
-
if (key
|
|
3274
|
+
if (!KNOWN_NON_HANDLER_KEYS.includes(key)) handlerCount++;
|
|
3163
3275
|
}
|
|
3164
3276
|
}
|
|
3165
3277
|
if (handlerCount === 0) throw new Error(`Invalid export for command ${command.name}: at least one handler function must be provided`);
|
|
@@ -3168,18 +3280,44 @@ var AppCommandHandler = class {
|
|
|
3168
3280
|
const res = await plugin.prepareCommand(ctx, lastUpdated);
|
|
3169
3281
|
if (res) lastUpdated = res;
|
|
3170
3282
|
});
|
|
3283
|
+
const commandJson = "toJSON" in lastUpdated && typeof lastUpdated.toJSON === "function" ? lastUpdated.toJSON() : lastUpdated;
|
|
3284
|
+
if ("guilds" in commandJson || "aliases" in commandJson) Logger.warn(`Command \`${command.name}\` uses deprecated metadata properties. Please update to use the new \`metadata\` object or \`generateMetadata\` function.`);
|
|
3171
3285
|
this.loadedCommands.set(id, {
|
|
3172
3286
|
command,
|
|
3173
|
-
|
|
3287
|
+
metadata: {
|
|
3288
|
+
guilds: commandJson.guilds,
|
|
3289
|
+
aliases: commandJson.aliases,
|
|
3290
|
+
...metadata
|
|
3291
|
+
},
|
|
3174
3292
|
data: {
|
|
3175
3293
|
...commandFileData,
|
|
3176
|
-
|
|
3294
|
+
metadata: {
|
|
3295
|
+
guilds: commandJson.guilds,
|
|
3296
|
+
aliases: commandJson.aliases,
|
|
3297
|
+
...metadata
|
|
3298
|
+
},
|
|
3299
|
+
command: commandJson
|
|
3177
3300
|
}
|
|
3178
3301
|
});
|
|
3179
3302
|
} catch (error) {
|
|
3180
|
-
Logger.error
|
|
3303
|
+
Logger.error`Failed to load command ${command.name} (${id}): ${error}`;
|
|
3181
3304
|
}
|
|
3182
3305
|
}
|
|
3306
|
+
/**
|
|
3307
|
+
* Gets the metadata for a command.
|
|
3308
|
+
* @param command - The command name to get metadata for
|
|
3309
|
+
* @returns The command metadata or null if not found
|
|
3310
|
+
*/
|
|
3311
|
+
getMetadataFor(command) {
|
|
3312
|
+
const loadedCommand = this.findCommandByName(command);
|
|
3313
|
+
if (!loadedCommand) return null;
|
|
3314
|
+
return loadedCommand.metadata ??= {
|
|
3315
|
+
aliases: [],
|
|
3316
|
+
guilds: [],
|
|
3317
|
+
userPermissions: [],
|
|
3318
|
+
botPermissions: []
|
|
3319
|
+
};
|
|
3320
|
+
}
|
|
3183
3321
|
};
|
|
3184
3322
|
|
|
3185
3323
|
//#endregion
|
|
@@ -3235,7 +3373,7 @@ var AppEventsHandler = class {
|
|
|
3235
3373
|
const listeners = [];
|
|
3236
3374
|
for (const listener of event.listeners) {
|
|
3237
3375
|
const handler = await import(require_resolve_file_url.toFileURL(listener, true));
|
|
3238
|
-
if (!handler.default || typeof handler.default !== "function") Logger.error
|
|
3376
|
+
if (!handler.default || typeof handler.default !== "function") Logger.error`Event handler for ${event.event}${event.namespace ? ` of namespace ${event.namespace}` : ""} does not have a default export or is not a function`;
|
|
3239
3377
|
listeners.push({
|
|
3240
3378
|
handler: handler.default,
|
|
3241
3379
|
once: !!handler.once
|
|
@@ -3307,7 +3445,7 @@ var AppEventsHandler = class {
|
|
|
3307
3445
|
Logger.debug(`Event propagation stopped for ${name}${namespace ? ` of namespace ${namespace}` : ""}`);
|
|
3308
3446
|
break;
|
|
3309
3447
|
}
|
|
3310
|
-
Logger.error
|
|
3448
|
+
Logger.error`Error handling event ${name}${namespace ? ` of namespace ${namespace}` : ""}: ${e}`;
|
|
3311
3449
|
}
|
|
3312
3450
|
});
|
|
3313
3451
|
};
|
|
@@ -3349,7 +3487,7 @@ var AppEventsHandler = class {
|
|
|
3349
3487
|
Logger.debug(`Event propagation stopped for ${name}${namespace ? ` of namespace ${namespace}` : ""}`);
|
|
3350
3488
|
broken = true;
|
|
3351
3489
|
}
|
|
3352
|
-
Logger.error
|
|
3490
|
+
Logger.error`Error handling event ${name}${namespace ? ` of namespace ${namespace}` : ""}: ${e}`;
|
|
3353
3491
|
}
|
|
3354
3492
|
});
|
|
3355
3493
|
}
|
|
@@ -3585,7 +3723,7 @@ var AnalyticsEngine = class {
|
|
|
3585
3723
|
var _identify, _ref;
|
|
3586
3724
|
await ((_identify = (_ref = this.#provider).identify) === null || _identify === void 0 ? void 0 : _identify.call(_ref, this, event));
|
|
3587
3725
|
} catch (error) {
|
|
3588
|
-
Logger.error
|
|
3726
|
+
Logger.error`Error identifying with provider ${this.#provider.name}: ${error}`;
|
|
3589
3727
|
}
|
|
3590
3728
|
}
|
|
3591
3729
|
/**
|
|
@@ -3600,7 +3738,7 @@ var AnalyticsEngine = class {
|
|
|
3600
3738
|
if (await this.#doNotTrack(event)) return;
|
|
3601
3739
|
await this.#provider.track(this, event);
|
|
3602
3740
|
} catch (error) {
|
|
3603
|
-
Logger.error
|
|
3741
|
+
Logger.error`Error tracking ${event.name} event with provider ${this.#provider.name}: ${error}`;
|
|
3604
3742
|
}
|
|
3605
3743
|
}
|
|
3606
3744
|
async #doNotTrack(event) {
|
|
@@ -3739,7 +3877,7 @@ var CommandKit = class CommandKit extends node_events.default {
|
|
|
3739
3877
|
for (const hook of bootstrapHooks) try {
|
|
3740
3878
|
await hook(this);
|
|
3741
3879
|
} catch (e) {
|
|
3742
|
-
Logger.error
|
|
3880
|
+
Logger.error`Error while executing bootstrap hook: ${e}`;
|
|
3743
3881
|
} finally {
|
|
3744
3882
|
bootstrapHooks.delete(hook);
|
|
3745
3883
|
}
|
|
@@ -3749,7 +3887,7 @@ var CommandKit = class CommandKit extends node_events.default {
|
|
|
3749
3887
|
for (const hook of onApplicationBootstrapHooks) try {
|
|
3750
3888
|
await hook(this);
|
|
3751
3889
|
} catch (e) {
|
|
3752
|
-
Logger.error
|
|
3890
|
+
Logger.error`Error while executing application bootstrap hook: ${e}`;
|
|
3753
3891
|
} finally {
|
|
3754
3892
|
onApplicationBootstrapHooks.delete(hook);
|
|
3755
3893
|
}
|
|
@@ -3767,7 +3905,7 @@ var CommandKit = class CommandKit extends node_events.default {
|
|
|
3767
3905
|
registerDevHooks(this);
|
|
3768
3906
|
await require_types_package.generateTypesPackage();
|
|
3769
3907
|
} catch (e) {
|
|
3770
|
-
if (process.env.COMMANDKIT_DEBUG_TYPEGEN) Logger.error
|
|
3908
|
+
if (process.env.COMMANDKIT_DEBUG_TYPEGEN) Logger.error`${e}`;
|
|
3771
3909
|
}
|
|
3772
3910
|
await this.loadPlugins();
|
|
3773
3911
|
await this.#init();
|
|
@@ -4150,6 +4288,12 @@ Object.defineProperty(exports, 'after', {
|
|
|
4150
4288
|
return after;
|
|
4151
4289
|
}
|
|
4152
4290
|
});
|
|
4291
|
+
Object.defineProperty(exports, 'beforeExecute', {
|
|
4292
|
+
enumerable: true,
|
|
4293
|
+
get: function () {
|
|
4294
|
+
return beforeExecute;
|
|
4295
|
+
}
|
|
4296
|
+
});
|
|
4153
4297
|
Object.defineProperty(exports, 'cancelAfter', {
|
|
4154
4298
|
enumerable: true,
|
|
4155
4299
|
get: function () {
|
|
@@ -4276,6 +4420,12 @@ Object.defineProperty(exports, 'makeContextAwareFunction', {
|
|
|
4276
4420
|
return makeContextAwareFunction;
|
|
4277
4421
|
}
|
|
4278
4422
|
});
|
|
4423
|
+
Object.defineProperty(exports, 'middlewareId', {
|
|
4424
|
+
enumerable: true,
|
|
4425
|
+
get: function () {
|
|
4426
|
+
return middlewareId;
|
|
4427
|
+
}
|
|
4428
|
+
});
|
|
4279
4429
|
Object.defineProperty(exports, 'noAnalytics', {
|
|
4280
4430
|
enumerable: true,
|
|
4281
4431
|
get: function () {
|
|
@@ -4312,4 +4462,4 @@ Object.defineProperty(exports, 'useEnvironment', {
|
|
|
4312
4462
|
return useEnvironment;
|
|
4313
4463
|
}
|
|
4314
4464
|
});
|
|
4315
|
-
//# sourceMappingURL=commandkit-
|
|
4465
|
+
//# sourceMappingURL=commandkit-c0sAaK0G.js.map
|