@mephisto5558/command 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/classes/command/index.d.ts +99 -0
  4. package/dist/classes/command/index.d.ts.map +1 -0
  5. package/dist/classes/command/index.js +378 -0
  6. package/dist/classes/command/index.js.map +1 -0
  7. package/dist/classes/command/utils.d.ts +29 -0
  8. package/dist/classes/command/utils.d.ts.map +1 -0
  9. package/dist/classes/command/utils.js +2 -0
  10. package/dist/classes/command/utils.js.map +1 -0
  11. package/dist/classes/commandManager/index.d.ts +43 -0
  12. package/dist/classes/commandManager/index.d.ts.map +1 -0
  13. package/dist/classes/commandManager/index.js +186 -0
  14. package/dist/classes/commandManager/index.js.map +1 -0
  15. package/dist/classes/commandOption/index.d.ts +124 -0
  16. package/dist/classes/commandOption/index.d.ts.map +1 -0
  17. package/dist/classes/commandOption/index.js +378 -0
  18. package/dist/classes/commandOption/index.js.map +1 -0
  19. package/dist/classes/commandOption/utils.d.ts +145 -0
  20. package/dist/classes/commandOption/utils.d.ts.map +1 -0
  21. package/dist/classes/commandOption/utils.js +3 -0
  22. package/dist/classes/commandOption/utils.js.map +1 -0
  23. package/dist/classes/utils.d.ts +42 -0
  24. package/dist/classes/utils.d.ts.map +1 -0
  25. package/dist/classes/utils.js +81 -0
  26. package/dist/classes/utils.js.map +1 -0
  27. package/dist/db.d.ts +22 -0
  28. package/dist/db.d.ts.map +1 -0
  29. package/dist/db.js +2 -0
  30. package/dist/db.js.map +1 -0
  31. package/dist/discord.js.d.ts +172 -0
  32. package/dist/discord.js.d.ts.map +1 -0
  33. package/dist/discord.js.js +2 -0
  34. package/dist/discord.js.js.map +1 -0
  35. package/dist/index.d.ts +71 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +22 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/tsconfig.tsbuildinfo +1 -0
  40. package/dist/utils/CooldownsManager.d.ts +8 -0
  41. package/dist/utils/CooldownsManager.d.ts.map +1 -0
  42. package/dist/utils/CooldownsManager.js +39 -0
  43. package/dist/utils/CooldownsManager.js.map +1 -0
  44. package/dist/utils/capitalize.d.ts +2 -0
  45. package/dist/utils/capitalize.d.ts.map +1 -0
  46. package/dist/utils/capitalize.js +4 -0
  47. package/dist/utils/capitalize.js.map +1 -0
  48. package/dist/utils/constants.d.ts +2 -0
  49. package/dist/utils/constants.d.ts.map +1 -0
  50. package/dist/utils/constants.js +2 -0
  51. package/dist/utils/constants.js.map +1 -0
  52. package/dist/utils/getCommands.d.ts +18 -0
  53. package/dist/utils/getCommands.d.ts.map +1 -0
  54. package/dist/utils/getCommands.js +36 -0
  55. package/dist/utils/getCommands.js.map +1 -0
  56. package/dist/utils/getDirectories.d.ts +2 -0
  57. package/dist/utils/getDirectories.d.ts.map +1 -0
  58. package/dist/utils/getDirectories.js +5 -0
  59. package/dist/utils/getDirectories.js.map +1 -0
  60. package/dist/utils/getFilename.d.ts +5 -0
  61. package/dist/utils/getFilename.d.ts.map +1 -0
  62. package/dist/utils/getFilename.js +5 -0
  63. package/dist/utils/getFilename.js.map +1 -0
  64. package/dist/utils/index.d.ts +9 -0
  65. package/dist/utils/index.d.ts.map +1 -0
  66. package/dist/utils/index.js +9 -0
  67. package/dist/utils/index.js.map +1 -0
  68. package/dist/utils/isSnowflake.d.ts +2 -0
  69. package/dist/utils/isSnowflake.d.ts.map +1 -0
  70. package/dist/utils/isSnowflake.js +4 -0
  71. package/dist/utils/isSnowflake.js.map +1 -0
  72. package/dist/utils/loadFile.d.ts +2 -0
  73. package/dist/utils/loadFile.d.ts.map +1 -0
  74. package/dist/utils/loadFile.js +32 -0
  75. package/dist/utils/loadFile.js.map +1 -0
  76. package/package.json +58 -0
  77. package/translationSchema.jsonc +114 -0
@@ -0,0 +1,378 @@
1
+ import * as Discord from 'discord.js';
2
+ import { ContextType, CooldownType, isSnowflake } from "../../index.js";
3
+ import { autocompleteOptionsMaxAmt, choiceValueMaxLength, choiceValueMinLength, choicesMaxAmt, descriptionMaxLength } from "../../utils/constants.js";
4
+ import { CommandValidationError, cooldownConverter, equal, isMessage } from "../utils.js";
5
+ import { DefaultContext } from "./utils.js";
6
+ export class CommandOption {
7
+ name;
8
+ id;
9
+ position = 0;
10
+ nameLocalizations;
11
+ description;
12
+ descriptionLocalizations = {};
13
+ type;
14
+ required;
15
+ cooldowns;
16
+ contexts;
17
+ disabled;
18
+ disabledReason;
19
+ get autocomplete() { return !!this.autocompleteOptions; }
20
+ strictAutocomplete;
21
+ autocompleteOptions;
22
+ choices;
23
+ channelTypes;
24
+ minValue;
25
+ maxValue;
26
+ minLength;
27
+ maxLength;
28
+ options;
29
+ run;
30
+ #i18n;
31
+ #cooldownsManager;
32
+ #logger;
33
+ #messagePrefixesArePreRemoved;
34
+ constructor(base, i18n, parentId, config) {
35
+ this.type = base.type;
36
+ this.name = base.name;
37
+ this.required = base.required;
38
+ this.contexts = base.contexts;
39
+ this.run = base.run;
40
+ this.minLength = base.minLength;
41
+ this.maxLength = base.maxLength;
42
+ this.minValue = base.minValue;
43
+ this.maxValue = base.maxValue;
44
+ this.choices = base.choices;
45
+ this.autocompleteOptions = base.autocompleteOptions;
46
+ this.strictAutocomplete = base.strictAutocomplete;
47
+ this.channelTypes = base.channelTypes;
48
+ this.cooldowns = base.cooldowns;
49
+ this.#messagePrefixesArePreRemoved = !!config.messagePrefixesArePreRemoved;
50
+ this.#i18n = i18n;
51
+ this.#logger = config.logger ?? console;
52
+ this.#cooldownsManager = config.cooldownsManager;
53
+ this.id = `${parentId}.options.${this.name}`;
54
+ this.position = config.position ?? 0;
55
+ if (base.options) {
56
+ this.options = base.options.map((e, i) => e.init(i18n, this.id, {
57
+ cooldownsManager: this.#cooldownsManager,
58
+ logger: this.#logger,
59
+ position: i,
60
+ messagePrefixesArePreRemoved: this.#messagePrefixesArePreRemoved
61
+ }));
62
+ }
63
+ this.#validate();
64
+ this.#localize();
65
+ }
66
+ getChannel(interaction, returnSelf = false) {
67
+ if (this.type != Discord.ApplicationCommandOptionType.Channel)
68
+ throw new Error(`This method does not run on ${Discord.ApplicationCommandOptionType[this.type]} options!`);
69
+ let target = isMessage(interaction)
70
+ ? interaction.mentions.channels.first()
71
+ : interaction.options.getChannel(this.name, false, this.channelTypes);
72
+ if (!target && isMessage(interaction))
73
+ target = interaction.guild?.channels.cache.find(e => [e.id, e.name].some(e => interaction.content.includes(e)));
74
+ if (target)
75
+ return target;
76
+ return returnSelf ? interaction.channel : undefined;
77
+ }
78
+ #validate() {
79
+ if (this.disabled) {
80
+ if (this.disabledReason)
81
+ return;
82
+ throw new CommandValidationError('A disabled command requires a disabledReason!', this);
83
+ }
84
+ if (/[A-Z]/.test(this.name)) {
85
+ this.#logger.error(`"${this.name}" (${this.id}.name) has uppercase letters! Fixing.`);
86
+ this.name = this.name.toLowerCase();
87
+ }
88
+ CommandOption.validateOptionOrder(this);
89
+ }
90
+ #localize() {
91
+ for (const [locale] of this.#i18n.availableLocales) {
92
+ const requiredTranslator = this.#i18n.getTranslator({ locale, errorNotFound: true, backupPaths: [this.id] }), optionalTranslator = this.#i18n.getTranslator({ locale, undefinedNotFound: true, backupPaths: [this.id] }), localizedDescription = locale == this.#i18n.config.defaultLocale ? optionalTranslator('description') : requiredTranslator('description');
93
+ if (!localizedDescription) {
94
+ if (!this.disabled)
95
+ this.#logger.warn(`Missing "${locale}" description for command "${this.name}" (${this.id}.description)`);
96
+ }
97
+ else if (localizedDescription.length > descriptionMaxLength && !this.disabled)
98
+ this.#logger.warn(`"${locale}" description for command "${this.name}" (${this.id}.description) is too long (max length is 100)! Slicing.`);
99
+ if (localizedDescription) {
100
+ if (locale == this.#i18n.config.defaultLocale)
101
+ this.description = localizedDescription.slice(0, descriptionMaxLength);
102
+ else
103
+ this.descriptionLocalizations[locale] = localizedDescription.slice(0, descriptionMaxLength);
104
+ }
105
+ if (this.choices)
106
+ this.#localizeChoices(locale);
107
+ }
108
+ }
109
+ #localizeChoices(locale) {
110
+ if (!this.choices)
111
+ return;
112
+ if (this.choices.length > choicesMaxAmt) {
113
+ throw new Error(`Too many choices (${this.choices.length}) found for option "${this.name}"). Max is ${choicesMaxAmt}.`
114
+ + 'Use autocompleteOptions with strictAutocomplete instead.');
115
+ }
116
+ const optionalTranslator = this.#i18n.getTranslator({ locale, undefinedNotFound: true, backupPaths: [this.id] });
117
+ for (const choice of this.choices) {
118
+ choice.nameLocalizations ??= {};
119
+ const localizedChoice = optionalTranslator(`choices.${choice.value}`) ?? choice.value.toString();
120
+ if (localizedChoice) {
121
+ const errMsg = `"${locale}" choice name localization for "${choice.value}" of option "${this.name}" `
122
+ + `(${this.id}.choices.${choice.value}) is too`;
123
+ if (localizedChoice.length < choiceValueMinLength) {
124
+ this.#logger.warn(`${errMsg} short (min length is ${choiceValueMinLength})! Skipping this localization.`);
125
+ continue;
126
+ }
127
+ else if (localizedChoice.length > choiceValueMaxLength)
128
+ this.#logger.warn(`${errMsg} long (max length is ${choiceValueMaxLength})! Slicing.`);
129
+ if (locale == this.#i18n.config.defaultLocale)
130
+ choice.name = localizedChoice;
131
+ else if (locale == 'en') {
132
+ choice.nameLocalizations[Discord.Locale.EnglishGB] = localizedChoice;
133
+ choice.nameLocalizations[Discord.Locale.EnglishUS] = localizedChoice;
134
+ }
135
+ else
136
+ choice.nameLocalizations[locale] = localizedChoice;
137
+ }
138
+ else if (choice.name != choice.value && !this.disabled) {
139
+ this.#logger.warn(`Missing "${locale}" choice name localization for "${choice.value}" in option "${this.name}" (${this.id}.choices.${choice.value})`);
140
+ }
141
+ }
142
+ }
143
+ async isRunable(interaction, command, wrapperTranslator, args) {
144
+ if ([Discord.ApplicationCommandOptionType.SubcommandGroup, Discord.ApplicationCommandOptionType.Subcommand].includes(this.type)
145
+ && !this.contexts.includes(ContextType.BotDM) && interaction.channel.type == Discord.ChannelType.DM)
146
+ return ['guildOnly'];
147
+ if (this.type == Discord.ApplicationCommandOptionType.SubcommandGroup)
148
+ return this.#isRunableSubcommandGroup(interaction, command, wrapperTranslator, args);
149
+ if (this.type == Discord.ApplicationCommandOptionType.Subcommand)
150
+ return this.#isRunableSubcommand(interaction, command, wrapperTranslator, args);
151
+ const option = isMessage(interaction)
152
+ ? undefined
153
+ : interaction.options.get(this.name)?.value, arg = args?.[this.position];
154
+ if (this.required && option === undefined && !arg) {
155
+ return ['paramRequired', {
156
+ option: this.name,
157
+ description: (wrapperTranslator.config.locale ? this.descriptionLocalizations[wrapperTranslator.config.locale] : undefined)
158
+ ?? this.descriptionLocalizations[wrapperTranslator.defaultConfig.defaultLocale] ?? this.description
159
+ }];
160
+ }
161
+ if (isMessage(interaction) && arg) {
162
+ if (this.type == Discord.ApplicationCommandOptionType.Channel && this.channelTypes) {
163
+ let channel;
164
+ if (isSnowflake(arg))
165
+ channel = interaction.guild?.channels.cache.get(arg);
166
+ if (channel && !this.channelTypes.includes(channel.type))
167
+ return ['invalidChannelType', this.name];
168
+ }
169
+ if (this.autocomplete && this.strictAutocomplete
170
+ && !(await this.generateAutocomplete(interaction, arg, wrapperTranslator.config.locale ?? wrapperTranslator.defaultConfig.defaultLocale)).some(e => e.value.toString().toLowerCase() === arg.toLowerCase())) {
171
+ if (typeof this.autocompleteOptions == 'function')
172
+ return ['strictAutocompleteNoMatch', this.name];
173
+ let availableOptions;
174
+ if (!this.autocompleteOptions)
175
+ availableOptions = '';
176
+ else if (Array.isArray(this.autocompleteOptions))
177
+ availableOptions = this.autocompleteOptions.map(e => (typeof e == 'object' ? e.value : e).toString()).map(Discord.inlineCode).join(', ');
178
+ else if (typeof this.autocompleteOptions == 'object')
179
+ availableOptions = this.autocompleteOptions.value;
180
+ else
181
+ availableOptions = this.autocompleteOptions;
182
+ return ['strictAutocompleteNoMatchWValues', { option: this.name, availableOptions: availableOptions.toString() }];
183
+ }
184
+ if (this.choices && !this.choices.some(e => e.value.toString().toLowerCase() == arg.toLowerCase())) {
185
+ return ['strictAutocompleteNoMatchWValues', {
186
+ option: this.name,
187
+ availableOptions: this.choices.map(e => Discord.inlineCode(e.value.toString())).join(', ')
188
+ }];
189
+ }
190
+ }
191
+ return false;
192
+ }
193
+ async #isRunableSubcommandGroup(interaction, command, wrapperTranslator, args) {
194
+ const subcommandName = isMessage(interaction)
195
+ ? args?.[this.position]
196
+ : interaction.options.getSubcommand(true), subcommand = this.options?.find(e => e.name == subcommandName);
197
+ return subcommand?.isRunable(interaction, command, wrapperTranslator, isMessage(interaction) ? args?.slice(1) : args) ?? false;
198
+ }
199
+ async #isRunableSubcommand(interaction, command, wrapperTranslator, args) {
200
+ if (!this.options)
201
+ return false;
202
+ for (const option of this.options) {
203
+ const err = await option.isRunable(interaction, command, wrapperTranslator, args);
204
+ if (err)
205
+ return err;
206
+ }
207
+ return false;
208
+ }
209
+ async generateAutocomplete(interaction, query, locale, translator, options = this.autocompleteOptions) {
210
+ if (options == undefined)
211
+ return [];
212
+ translator ??= this.#i18n.getTranslator({ locale, undefinedNotFound: true, backupPaths: [`${this.id}.choices`] });
213
+ if (typeof options == 'function')
214
+ options = await options.call(interaction, query);
215
+ if (typeof options == 'string' || typeof options == 'number')
216
+ return [{ name: translator(options.toString()) ?? options.toString(), value: options }];
217
+ if (Array.isArray(options)) {
218
+ return (await Promise.all(options
219
+ .filter(e => !query || (typeof e == 'object' ? e.value : e).toString().toLowerCase().includes(query.toLowerCase()))
220
+ .slice(0, autocompleteOptionsMaxAmt)
221
+ .map(async (e) => this.generateAutocomplete(interaction, query, locale, translator, e)))).flat();
222
+ }
223
+ return [options];
224
+ }
225
+ updateCooldowns(interaction) {
226
+ return this.#cooldownsManager.update(this.id, interaction, this.cooldowns);
227
+ }
228
+ isEqualTo(opt) {
229
+ for (const prop of ['name', 'description', 'type', 'autocomplete', 'required', 'minValue', 'maxValue', 'minLength', 'maxLength']) {
230
+ const optProp = prop in opt ? opt[prop] : undefined;
231
+ if (this[prop] != (typeof this[prop] == 'boolean' ? !!optProp : optProp))
232
+ return false;
233
+ }
234
+ if ((this.options?.length ?? 0) != ('options' in opt && opt.options ? opt.options.length : 0)
235
+ || !equal(this.nameLocalizations, opt.nameLocalizations)
236
+ || !equal(this.descriptionLocalizations, opt.descriptionLocalizations)
237
+ || ('choices' in opt && opt.choices && !this.#choicesEqualTo(opt.choices))
238
+ || ('channelTypes' in opt && opt.channelTypes && !this.#channelTypesEqualTo(opt.channelTypes)))
239
+ return false;
240
+ if (this.options?.length && 'options' in opt && opt.options) {
241
+ for (const option of this.options) {
242
+ const other = opt.options.find(e => e.name == option.name);
243
+ if (!other || !option.isEqualTo(other))
244
+ return false;
245
+ }
246
+ }
247
+ return true;
248
+ }
249
+ #choicesEqualTo(choices) {
250
+ if ((this.choices?.length ?? 0) != choices.length)
251
+ return false;
252
+ if (this.choices?.length) {
253
+ for (const choice of this.choices) {
254
+ const other = choices.find(e => e.name == choice.name);
255
+ if (!other || !equal(choice, other))
256
+ return false;
257
+ }
258
+ }
259
+ return true;
260
+ }
261
+ #channelTypesEqualTo(channelTypes) {
262
+ if ((this.channelTypes?.length ?? 0) != channelTypes.length)
263
+ return false;
264
+ if (this.channelTypes?.length) {
265
+ for (const type of this.channelTypes)
266
+ if (!channelTypes.includes(type))
267
+ return false;
268
+ }
269
+ return true;
270
+ }
271
+ clone() {
272
+ return new CommandOptionUninitialized(this);
273
+ }
274
+ static validateOptionOrder(baseOption) {
275
+ if (!baseOption.options?.length)
276
+ return;
277
+ let optionalOption;
278
+ const optionMap = new Map();
279
+ for (const option of baseOption.options) {
280
+ if (!option.required)
281
+ optionalOption = option;
282
+ else if (optionalOption) {
283
+ throw new CommandValidationError(`Invalid option order in command "${baseOption.id}".`
284
+ + `Required options ("${option.id}") cannot appear after optional options (${optionalOption.id}).`, baseOption, option);
285
+ }
286
+ if (optionMap.has(option.name)) {
287
+ throw new CommandValidationError('A option name must be unique across all subcommands of the same command.'
288
+ + `Found duplicate name "${option.name}": "${optionMap.get(option.name).id}" and "${option.id}".`, baseOption, option);
289
+ }
290
+ else
291
+ optionMap.set(option.name, option);
292
+ if (!option.required)
293
+ optionalOption = option;
294
+ }
295
+ }
296
+ }
297
+ export class CommandOptionUninitialized {
298
+ type;
299
+ name;
300
+ options;
301
+ required = false;
302
+ contexts = DefaultContext;
303
+ run;
304
+ minLength;
305
+ maxLength;
306
+ minValue;
307
+ maxValue;
308
+ choices;
309
+ autocompleteOptions;
310
+ strictAutocomplete = false;
311
+ channelTypes;
312
+ cooldowns = Object.fromEntries(Object.values(CooldownType).map(e => [e, 0]));
313
+ constructor(config) {
314
+ this.type = config.type;
315
+ this.name = config.name;
316
+ if (config instanceof CommandOption) {
317
+ for (const key of Object.getOwnPropertyNames(config)) {
318
+ const descriptor = Object.getOwnPropertyDescriptor(config, key)
319
+ ?? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(config), key);
320
+ if (!descriptor || descriptor.get || descriptor.writable === false)
321
+ continue;
322
+ const value = config[key];
323
+ if (key == 'options')
324
+ this.options = value.map(opt => opt.clone());
325
+ else if (value && typeof value == 'object' && typeof value != 'function')
326
+ this[key] = Array.isArray(value) ? [...value] : { ...value };
327
+ else
328
+ this[key] = value;
329
+ }
330
+ return;
331
+ }
332
+ if ('required' in config)
333
+ this.required = config.required;
334
+ switch (config.type) {
335
+ case Discord.ApplicationCommandOptionType.SubcommandGroup:
336
+ case Discord.ApplicationCommandOptionType.Subcommand:
337
+ if ('cooldowns' in config)
338
+ Object.fromEntries(Object.entries(this.cooldowns).map(e => cooldownConverter(config.cooldowns, ...e)));
339
+ if ('contexts' in config)
340
+ this.contexts = config.contexts;
341
+ if ('options' in config) {
342
+ this.options = (config.options ?? []).map(opt => (opt instanceof CommandOptionUninitialized ? opt : new CommandOptionUninitialized(opt)));
343
+ }
344
+ if ('run' in config)
345
+ this.run = config.run;
346
+ break;
347
+ case Discord.ApplicationCommandOptionType.String:
348
+ if ('minLength' in config)
349
+ this.minLength = config.minLength;
350
+ if ('maxLength' in config)
351
+ this.maxLength = config.maxLength;
352
+ case Discord.ApplicationCommandOptionType.Integer:
353
+ case Discord.ApplicationCommandOptionType.Number:
354
+ if (config.type != Discord.ApplicationCommandOptionType.String) {
355
+ if ('minValue' in config)
356
+ this.minValue = config.minValue;
357
+ if ('maxValue' in config)
358
+ this.maxValue = config.maxValue;
359
+ }
360
+ if ('choices' in config)
361
+ this.choices = config.choices.map(e => ({ name: String(e), value: e }));
362
+ if ('autocompleteOptions' in config)
363
+ this.autocompleteOptions = config.autocompleteOptions;
364
+ if ('strictAutocomplete' in config)
365
+ this.strictAutocomplete = config.strictAutocomplete;
366
+ break;
367
+ case Discord.ApplicationCommandOptionType.Channel:
368
+ if ('channelTypes' in config)
369
+ this.channelTypes = config.channelTypes;
370
+ break;
371
+ default:
372
+ }
373
+ }
374
+ init(...args) {
375
+ return new CommandOption(this, ...args);
376
+ }
377
+ }
378
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/commandOption/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACtJ,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAgB5C,MAAM,OAAO,aAAa;IAOxB,IAAI,CAAoB;IACxB,EAAE,CAA+C;IACjD,QAAQ,GAAG,CAAC,CAAC;IAGb,iBAAiB,CAAkD;IACnE,WAAW,CAAU;IACrB,wBAAwB,GAAoC,EAAE,CAAC;IAE/D,IAAI,CAAI;IAER,QAAQ,CAAU;IAElB,SAAS,CAA+B;IAExC,QAAQ,CAAM;IAEd,QAAQ,CAAW;IAGnB,cAAc,CAAqB;IAEnC,IAAI,YAAY,KAAc,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAClE,kBAAkB,CAAU;IAC5B,mBAAmB,CAE2C;IAE9D,OAAO,CAEO;IAEd,YAAY,CAEoC;IAEhD,QAAQ,CAEgC;IAExC,QAAQ,CAEgC;IAExC,SAAS,CAEiC;IAE1C,SAAS,CAEiC;IAE1C,OAAO,CAEO;IAEd,GAAG,CAYU;IAEJ,KAAK,CAAe;IACpB,iBAAiB,CAAmB;IACpC,OAAO,CAAS;IAChB,6BAA6B,CAAU;IAKhD,YACE,IAAiE,EACjE,IAAkB,EAAE,QAA6C,EACjE,MAKC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC;QAE3E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAEjD,IAAI,CAAC,EAAE,GAAG,GAAG,QAAQ,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;gBAC9D,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;gBACxC,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,QAAQ,EAAE,CAAC;gBACX,4BAA4B,EAAE,IAAI,CAAC,6BAA6B;aACjE,CAAC,CAAwB,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAqBD,UAAU,CACR,WAGE,EACF,UAAU,GAAG,KAAK;QAElB,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,4BAA4B,CAAC,OAAO;YAC3D,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7G,IAAI,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC;YACjC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE;YACvC,CAAC,CAAE,WAAmF,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjJ,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,WAAW,CAAC;YACnC,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClH,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,OAAO,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC;IAED,SAAS;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,cAAc;gBAAE,OAAO;YAChC,MAAM,IAAI,sBAAsB,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,uCAAuC,CAAC,CAAC;YACtF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC;QAED,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS;QACP,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnD,MACE,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACtG,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAG1G,oBAAoB,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;YAC3I,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,MAAM,8BAA8B,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;YAC7G,CAAC;iBACI,IAAI,oBAAoB,CAAC,MAAM,GAAG,oBAAoB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC3E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,8BAA8B,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,yDAAyD,CAAC,CAAC;YAE7I,IAAI,oBAAoB,EAAE,CAAC;gBACzB,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa;oBAAE,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;;oBACjH,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;YACnG,CAAC;YAGD,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAGD,gBAAgB,CAAC,MAAc;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,OAAO,CAAC,MAAM,uBAAuB,IAAI,CAAC,IAAI,cAAc,aAAa,GAAG;kBACpG,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEjH,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,CAAC,iBAAiB,KAAK,EAAE,CAAC;YAEhC,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjG,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,MAAM,mCAAmC,MAAM,CAAC,KAAK,gBAAgB,IAAI,CAAC,IAAI,IAAI;sBACjG,IAAI,IAAI,CAAC,EAAE,YAAY,MAAM,CAAC,KAAK,UAAU,CAAC;gBAElD,IAAI,eAAe,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;oBAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,yBAAyB,oBAAoB,gCAAgC,CAAC,CAAC;oBAC1G,SAAS;gBACX,CAAC;qBACI,IAAI,eAAe,CAAC,MAAM,GAAG,oBAAoB;oBACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,wBAAwB,oBAAoB,aAAa,CAAC,CAAC;gBAExF,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa;oBAAE,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC;qBACxE,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACxB,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC;oBACrE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC;gBACvE,CAAC;;oBACI,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC;YAC1D,CAAC;iBACI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,YAAY,MAAM,mCAAmC,MAAM,CAAC,KAAK,gBAAgB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,YAAY,MAAM,CAAC,KAAK,GAAG,CACnI,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CACb,WAGE,EACF,OAA2C,EAC3C,iBAA4C,EAAE,IAAe;QAE7D,IACE,CAAC,OAAO,CAAC,4BAA4B,CAAC,eAAe,EAAE,OAAO,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;eACxH,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;YACnG,OAAO,CAAC,WAAW,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,4BAA4B,CAAC,eAAe;YACnE,OAAO,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACvF,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,4BAA4B,CAAC,UAAU;YAC9D,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAElF,MACE,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC;YAC7B,CAAC,CAAC,SAAS;YACX,CAAC,CAAE,WAAmF,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EACtH,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;YAClD,OAAO,CAAC,eAAe,EAAE;oBACvB,MAAM,EAAE,IAAI,CAAC,IAAI;oBACjB,WAAW,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;2BACtH,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW;iBACtG,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,4BAA4B,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnF,IAAI,OAAO,CAAC;gBACZ,IAAI,WAAW,CAAC,GAAG,CAAC;oBAAE,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3E,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACrG,CAAC;YAED,IACE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB;mBACzC,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAClC,WAAyE,EAAE,GAAG,EAC9E,iBAAiB,CAAC,MAAM,CAAC,MAAM,IAAI,iBAAiB,CAAC,aAAa,CAAC,aAAa,CACjF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,EACpE,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,mBAAmB,IAAI,UAAU;oBAAE,OAAO,CAAC,2BAA2B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEnG,IAAI,gBAAiC,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,mBAAmB;oBAAE,gBAAgB,GAAG,EAAE,CAAC;qBAChD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;oBAC9C,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAEtI,IAAI,OAAO,IAAI,CAAC,mBAAmB,IAAI,QAAQ;oBAAE,gBAAgB,GAAI,IAAI,CAAC,mBAA0C,CAAC,KAAK,CAAC;;oBAC3H,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC;gBAEjD,OAAO,CAAC,kCAAkC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACpH,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACnG,OAAO,CAAC,kCAAkC,EAAE;wBAC1C,MAAM,EAAE,IAAI,CAAC,IAAI;wBACjB,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;qBAC3F,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,WAGE,EACF,OAA2C,EAC3C,iBAA4C,EAAE,IAAe;QAE7D,MACE,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC;YACrC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvB,CAAC,CAAE,WAAmF,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EACpH,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,cAAc,CAAC,CAAC;QAEjE,OAAO,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IACjI,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,WAGE,EACF,OAA2C,EAC3C,iBAA4C,EAAE,IAAe;QAE7D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IASD,KAAK,CAAC,oBAAoB,CAExB,WAAuE,EACvE,KAAiE,EACjE,MAAkE,EAClE,UAAuE,EACvE,UAAsE,IAAI,CAAC,mBAAmB;QAG9F,IAAI,OAAO,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAEpC,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAElH,IAAI,OAAO,OAAO,IAAI,UAAU;YAAE,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnF,IAAI,OAAO,OAAO,IAAI,QAAQ,IAAI,OAAO,OAAO,IAAI,QAAQ;YAC1D,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1F,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CACvB,OAAO;iBACJ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;iBAClH,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC;iBACnC,GAAG,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CACxF,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAMD,eAAe,CAAC,WAA+B;QAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,SAAS,CAAC,GAA0F;QAClG,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAU,EAAE,CAAC;YAC1I,MAAM,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAC;QACzF,CAAC;QAED,IACE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;eACtF,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC;eACrD,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAAC,wBAAwB,CAAC;eACnE,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;eACvE,CAAC,cAAc,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;QAEf,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC5D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YACvD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,OAAwD;QACtE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB,CAAC,YAAkE;QACrF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1E,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY;gBAClC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QAEH,OAAO,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAKD,MAAM,CAAC,mBAAmB,CAExB,UAAyD;QACzD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM;YAAE,OAAO;QAExC,IAAI,cAAc,CAAC;QACnB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoE,CAAC;QAE9F,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,cAAc,GAAG,MAAM,CAAC;iBACzC,IAAI,cAAc,EAAE,CAAC;gBACxB,MAAM,IAAI,sBAAsB,CAC9B,oCAAoC,UAAU,CAAC,EAAE,IAAI;sBACnD,sBAAsB,MAAM,CAAC,EAAE,4CAA4C,cAAc,CAAC,EAAE,IAAI,EAClG,UAAU,EAAE,MAAM,CACnB,CAAC;YACJ,CAAC;YAED,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,sBAAsB,CAC9B,0EAA0E;sBACxE,yBAAyB,MAAM,CAAC,IAAI,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC,EAAE,UAAU,MAAM,CAAC,EAAE,IAAI,EAClG,UAAU,EAAE,MAAM,CACnB,CAAC;YACJ,CAAC;;gBACI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,cAAc,GAAG,MAAM,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,0BAA0B;IAOrC,IAAI,CAAsG;IAC1G,IAAI,CAAsG;IAC1G,OAAO,CAEO;IAEd,QAAQ,GAA4G,KAAK,CAAC;IAC1H,QAAQ,GAA4G,cAAgC,CAAC;IACrJ,GAAG,CAAqG;IACxG,SAAS,CAA2G;IACpH,SAAS,CAA2G;IACpH,QAAQ,CAA0G;IAClH,QAAQ,CAA0G;IAClH,OAAO,CAAyG;IAChH,mBAAmB,CAAqH;IACxI,kBAAkB,GAAsH,KAAK,CAAC;IAC9I,YAAY,CAA8G;IAC1H,SAAS,GAA6G,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAMvL,YAAY,MAAiJ;QAE3J,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAExB,IAAI,MAAM,YAAY,aAAa,EAAE,CAAC;YACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAA0B,EAAE,CAAC;gBAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC;uBAC1D,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAW,EAAE,GAAG,CAAC,CAAC;gBAEnF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK;oBAAE,SAAS;gBAE7E,MAAM,KAAK,GAAG,MAAM,CAAC,GAA0B,CAAC,CAAC;gBAEjD,IAAI,GAAG,IAAI,SAAS;oBAClB,IAAI,CAAC,OAAO,GAAI,KAA4C,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAmC,CAAC;qBACpH,IAAI,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,UAAU;oBACrE,IAAoC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAkD,EAAE,CAAC;;oBACvI,IAAoC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1D,CAAC;YAED,OAAO;QACT,CAAC;QAED,IAAI,UAAU,IAAI,MAAM;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE1D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,OAAO,CAAC,4BAA4B,CAAC,eAAe,CAAC;YAC1D,KAAK,OAAO,CAAC,4BAA4B,CAAC,UAAU;gBAClD,IAAI,WAAW,IAAI,MAAM;oBACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE1G,IAAI,UAAU,IAAI,MAAM;oBAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAgC,CAAC;gBAClF,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;oBACxB,IAAI,CAAC,OAAO,GAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAEjC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACd,GAAG,YAAY,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,0BAA0B,CAAyC,GAAG,CAAC,CAC9H,CAAwB,CAAC;gBAC5B,CAAC;gBAED,IAAI,KAAK,IAAI,MAAM;oBAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAA8C,CAAC;gBACtF,MAAM;YAER,KAAK,OAAO,CAAC,4BAA4B,CAAC,MAAM;gBAC9C,IAAI,WAAW,IAAI,MAAM;oBAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC7D,IAAI,WAAW,IAAI,MAAM;oBAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAG/D,KAAK,OAAO,CAAC,4BAA4B,CAAC,OAAO,CAAC;YAClD,KAAK,OAAO,CAAC,4BAA4B,CAAC,MAAM;gBAC9C,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,4BAA4B,CAAC,MAAM,EAAE,CAAC;oBAC/D,IAAI,UAAU,IAAI,MAAM;wBAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oBAC1D,IAAI,UAAU,IAAI,MAAM;wBAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC5D,CAAC;gBAED,IAAI,SAAS,IAAI,MAAM;oBACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAgD,CAAC;gBAEzH,IAAI,qBAAqB,IAAI,MAAM;oBAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;gBAC3F,IAAI,oBAAoB,IAAI,MAAM;oBAAE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBACxF,MAAM;YAER,KAAK,OAAO,CAAC,4BAA4B,CAAC,OAAO;gBAC/C,IAAI,cAAc,IAAI,MAAM;oBAAE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBACtE,MAAM;YAER,QAAQ;QACV,CAAC;IACH,CAAC;IAED,IAAI,CACF,GAAG,IAA4H;QAE/H,OAAO,IAAI,aAAa,CAAkC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -0,0 +1,145 @@
1
+ import { ContextType } from '../../index.ts';
2
+ import type * as Discord from 'discord.js';
3
+ import type { Locale, Translator } from '@mephisto5558/i18n';
4
+ import type { AllContexts, AutocompleteInteraction, ChatInputCommandInteraction, CommandInitialized as Command, CommandOptionInitialized as CommandOption, Message, MessageComponentInteraction, OptionsG, SharedConfig } from '../../index.ts';
5
+ import type { CommandType } from '../utils.ts';
6
+ export declare const DefaultContext: readonly [ContextType.Guild];
7
+ export type DefaultContext = typeof DefaultContext;
8
+ export type autocompleteObject = Pick<Discord.ApplicationCommandOptionChoiceData, 'name' | 'value'>;
9
+ export type autocompleteOption = autocompleteObject['value'] | autocompleteObject;
10
+ export type autocompleteFunction<CT extends readonly CommandType[], CTX extends AllContexts> = (this: ExtendsMultiMatch<CommandType, CT, [
11
+ [
12
+ CommandType.Slash,
13
+ AutocompleteInteraction<NoInfer<CTX>>
14
+ ],
15
+ [
16
+ CommandType.Prefix,
17
+ Message<NoInfer<CTX>>
18
+ ]
19
+ ]>, query: string) => autocompleteOption[] | Promise<autocompleteOption[]>;
20
+ export type autocompleteOptions<CT extends readonly CommandType[], CTX extends AllContexts> = autocompleteOption | autocompleteOption[] | autocompleteFunction<CT, CTX>;
21
+ export type MapChannelTypes<CT extends readonly Discord.ChannelType[]> = ShallowPrettify<Extract<Discord.Channel, {
22
+ type: CT[number];
23
+ }>>;
24
+ export type FallbackChannels<CT extends readonly CommandType[], CTX extends AllContexts> = ExtendsMultiMatch<CommandType, CT, [
25
+ [
26
+ CommandType.Slash,
27
+ ChatInputCommandInteraction<NoInfer<CTX>>
28
+ ],
29
+ [
30
+ CommandType.Component,
31
+ MessageComponentInteraction<NoInfer<CTX>> & {
32
+ commandName: Command['name'];
33
+ }
34
+ ],
35
+ [
36
+ CommandType.Prefix,
37
+ Message<NoInfer<CTX>>
38
+ ]
39
+ ]>['channel'];
40
+ interface BaseOptionConfig {
41
+ name: CommandOption['name'];
42
+ nameLocalizations?: Partial<Record<Locale, Command['name']>>;
43
+ }
44
+ interface BaseSubcommandConfig<CTX extends AllContexts> extends SharedConfig<CTX>, BaseOptionConfig {
45
+ }
46
+ interface BasePrimitiveCommandOptionConfig<CT extends readonly CommandType[], CTX extends AllContexts> extends BaseOptionConfig {
47
+ required?: boolean;
48
+ strictAutocomplete?: boolean;
49
+ autocompleteOptions?: autocompleteOptions<CT, CTX>;
50
+ choices?: readonly Discord.ApplicationCommandOptionChoiceData['value'][];
51
+ }
52
+ export interface SubcommandGroupConfig<CT extends readonly CommandType[], CTX extends AllContexts, AO = never, ChildrenOptions extends readonly SubcommandConfig<CT, CTX, unknown>[] = readonly SubcommandConfig<CT, CTX, unknown>[]> extends BaseSubcommandConfig<CTX>, StrictOmit<LooseOmit<Discord.ApplicationCommandSubGroup, keyof BaseSubcommandConfig<CTX>>, 'options'> {
53
+ options: ChildrenOptions;
54
+ run?(this: ExtendsMultiMatch<CommandType, CT, [
55
+ [
56
+ CommandType.Slash,
57
+ ChatInputCommandInteraction<NoInfer<CTX>, NoInfer<ChildrenOptions>>
58
+ ],
59
+ [
60
+ CommandType.Component,
61
+ MessageComponentInteraction<NoInfer<CTX>> & {
62
+ commandName: Command['name'];
63
+ }
64
+ ],
65
+ [
66
+ CommandType.Prefix,
67
+ Message<NoInfer<CTX>>
68
+ ]
69
+ ]>, lang: Translator<false, Locale>, options: NoInfer<AO>, data: {
70
+ client: Discord.Client<true>;
71
+ option: CommandOption<CT, CTX, AO, ChildrenOptions, Discord.ApplicationCommandOptionType.SubcommandGroup>;
72
+ }): unknown;
73
+ }
74
+ export interface SubcommandConfig<CT extends readonly CommandType[], CTX extends AllContexts, AO = undefined, ChildrenOptions extends (readonly PrimitiveCommandOptionConfig<CT, CTX>[]) = (readonly PrimitiveCommandOptionConfig<CT, CTX>[])> extends BaseSubcommandConfig<CTX>, StrictOmit<LooseOmit<Discord.ApplicationCommandSubCommand, keyof BaseSubcommandConfig<CTX>>, 'options'> {
75
+ options?: ChildrenOptions;
76
+ run?(this: ExtendsMultiMatch<CommandType, CT, [
77
+ [
78
+ CommandType.Slash,
79
+ ChatInputCommandInteraction<NoInfer<CTX>, NoInfer<ChildrenOptions>>
80
+ ],
81
+ [
82
+ CommandType.Component,
83
+ MessageComponentInteraction<NoInfer<CTX>> & {
84
+ commandName: Command['name'];
85
+ }
86
+ ],
87
+ [
88
+ CommandType.Prefix,
89
+ Message<NoInfer<CTX>>
90
+ ]
91
+ ]>, lang: Translator<false, Locale>, options: NoInfer<AO>, data: {
92
+ client: Discord.Client<true>;
93
+ option: CommandOption<CT, CTX, AO, ChildrenOptions, Discord.ApplicationCommandOptionType.Subcommand>;
94
+ }): unknown;
95
+ }
96
+ export interface StringCommandOptionConfig<CT extends readonly CommandType[], CTX extends AllContexts> extends BasePrimitiveCommandOptionConfig<CT, CTX>, LooseOmit<Discord.ApplicationCommandStringOption, keyof BasePrimitiveCommandOptionConfig<CT, CTX>> {
97
+ }
98
+ export interface NumericCommandOptionConfig<CT extends readonly CommandType[], CTX extends AllContexts, T extends Discord.ApplicationCommandNumericOption['type'] = Discord.ApplicationCommandNumericOption['type']> extends BasePrimitiveCommandOptionConfig<CT, CTX>, LooseOmit<Discord.ApplicationCommandNumericOption, keyof BasePrimitiveCommandOptionConfig<CT, CTX>> {
99
+ type: T;
100
+ }
101
+ export interface ChannelCommandOptionConfig extends BaseOptionConfig, StrictOmit<Discord.ApplicationCommandChannelOption, keyof BaseOptionConfig> {
102
+ }
103
+ interface BooleanCommandOptionConfig extends BaseOptionConfig, StrictOmit<Discord.ApplicationCommandBooleanOption, keyof BaseOptionConfig> {
104
+ }
105
+ interface UserCommandOptionConfig extends BaseOptionConfig, StrictOmit<Discord.ApplicationCommandUserOption, keyof BaseOptionConfig> {
106
+ }
107
+ interface RoleCommandOptionConfig extends BaseOptionConfig, StrictOmit<Discord.ApplicationCommandRoleOption, keyof BaseOptionConfig> {
108
+ }
109
+ interface MentionableCommandOptionConfig extends BaseOptionConfig, StrictOmit<Discord.ApplicationCommandMentionableOption, keyof BaseOptionConfig> {
110
+ }
111
+ interface AttachmentCommandOptionConfig extends BaseOptionConfig, StrictOmit<Discord.ApplicationCommandAttachmentOption, keyof BaseOptionConfig> {
112
+ }
113
+ export type PrimitiveCommandOptionConfig<CT extends readonly CommandType[], CTX extends AllContexts> = StringCommandOptionConfig<CT, CTX> | NumericCommandOptionConfig<CT, CTX> | BooleanCommandOptionConfig | UserCommandOptionConfig | ChannelCommandOptionConfig | RoleCommandOptionConfig | MentionableCommandOptionConfig | AttachmentCommandOptionConfig;
114
+ export type CommandOptionConfig<CT extends readonly CommandType[], CTX extends AllContexts, AO = undefined, Options extends OptionsG<CT, CTX, AO> = OptionsG<CT, CTX, AO>> = StringCommandOptionConfig<CT, CTX> | NumericCommandOptionConfig<CT, CTX> | BooleanCommandOptionConfig | UserCommandOptionConfig | ChannelCommandOptionConfig | RoleCommandOptionConfig | MentionableCommandOptionConfig | AttachmentCommandOptionConfig | SubcommandConfig<CT, CTX, AO, Options> | SubcommandGroupConfig<CT, CTX, AO, Options>;
115
+ export type RunnableReturns = ['guildOnly'] | ['paramRequired', {
116
+ option: string;
117
+ description: string;
118
+ }] | ['invalidChannelType', string] | ['strictAutocompleteNoMatch', string] | ['strictAutocompleteNoMatchWValues', {
119
+ option: string;
120
+ availableOptions: string;
121
+ }];
122
+ type PrivateAutocompleteGeneratorOptions<CT extends readonly CommandType[], CTX extends AllContexts> = [
123
+ translator?: Translator<true, Locale>,
124
+ options?: autocompleteOptions<NoInfer<CT>, NoInfer<CTX>>
125
+ ];
126
+ export type PublicAutocompleteGeneratorOptions<CT extends readonly CommandType[], CTX extends AllContexts> = [
127
+ interaction: ExtendsMultiMatch<CommandType, CT, [
128
+ [
129
+ CommandType.Slash,
130
+ AutocompleteInteraction<NoInfer<CTX>>
131
+ ],
132
+ [
133
+ CommandType.Prefix,
134
+ Message<NoInfer<CTX>>
135
+ ]
136
+ ]>,
137
+ query: string,
138
+ locale: Locale
139
+ ];
140
+ export type AutocompleteGeneratorOptions<CT extends readonly CommandType[], CTX extends AllContexts> = [
141
+ ...PublicAutocompleteGeneratorOptions<NoInfer<CT>, NoInfer<CTX>>,
142
+ ...PrivateAutocompleteGeneratorOptions<NoInfer<CT>, NoInfer<CTX>>
143
+ ];
144
+ export {};
145
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/classes/commandOption/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ContextType } from "../../index.js";
2
+ export const DefaultContext = [ContextType.Guild];
3
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/classes/commandOption/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAW7C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC,KAAK,CAAU,CAAC"}
@@ -0,0 +1,42 @@
1
+ import * as Discord from 'discord.js';
2
+ import type { Locale, Translator } from '@mephisto5558/i18n';
3
+ import type { AllContexts, AutocompleteInteraction, ChatInputCommandInteraction, CommandInitialized as Command, CommandInteraction, CooldownType, Message, MessageComponentInteraction, validTimeString } from '../index.ts';
4
+ import type { CommandOption } from './commandOption/index.ts';
5
+ export declare function equal(a: unknown, b: unknown): boolean;
6
+ export declare function cooldownConverter(cooldown: Partial<Record<CooldownType, validTimeString>>, k: keyof Command['cooldowns'], v: Command['cooldowns'][keyof Command['cooldowns']]): [keyof Command['cooldowns'], number];
7
+ export declare class CommandExecutionError extends Error {
8
+ readonly name = "CommandExecutionError";
9
+ interaction: CommandInteraction | AutocompleteInteraction;
10
+ translator: Translator<boolean, Locale>;
11
+ constructor(message: string | undefined, interaction: CommandExecutionError['interaction'], translator: CommandExecutionError['translator'], options?: ErrorOptions);
12
+ }
13
+ export declare class CommandValidationError<const CT extends readonly CommandType[], const CTX extends AllContexts> extends Error {
14
+ readonly name = "CommandValidationError";
15
+ readonly command?: Command<NoInfer<CT>, NoInfer<CTX>>;
16
+ readonly commandOption?: CommandOption<NoInfer<CT>, NoInfer<CTX>>;
17
+ constructor(message: string | undefined, command?: Command<NoInfer<CT>, NoInfer<CTX>>, commandOption?: CommandOption<NoInfer<CT>, NoInfer<CTX>>, options?: ErrorOptions);
18
+ }
19
+ export declare enum CommandType {
20
+ Slash = "slash",
21
+ Prefix = "prefix",
22
+ Component = "component"
23
+ }
24
+ export declare function resolveCommandType<I>(interaction: I): ExtendsMatch<I, [
25
+ [
26
+ Discord.ChatInputCommandInteraction | ChatInputCommandInteraction,
27
+ CommandType.Slash
28
+ ],
29
+ [
30
+ Discord.Message | Message,
31
+ CommandType.Prefix
32
+ ],
33
+ [
34
+ Discord.MessageComponentInteraction | MessageComponentInteraction,
35
+ CommandType.Component
36
+ ]
37
+ ]>;
38
+ export declare function isMessage(interaction: unknown): interaction is Message | Discord.Message;
39
+ export declare function isInteraction(interaction: unknown, commandType?: CommandType | CommandType[]): interaction is Discord.BaseInteraction;
40
+ export declare function isSlash(interaction: unknown): interaction is ChatInputCommandInteraction | Discord.ChatInputCommandInteraction;
41
+ export declare function isComponent(interaction: unknown): interaction is MessageComponentInteraction | Discord.MessageComponentInteraction;
42
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/classes/utils.ts"],"names":[],"mappings":"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"}