migrate
This commit is contained in:
52
public/scripts/slash-commands/SlashCommandExecutor.js
Normal file
52
public/scripts/slash-commands/SlashCommandExecutor.js
Normal file
@@ -0,0 +1,52 @@
|
||||
import { uuidv4 } from '../utils.js';
|
||||
import { SlashCommand } from './SlashCommand.js';
|
||||
import { SlashCommandClosure } from './SlashCommandClosure.js';
|
||||
import { SlashCommandNamedArgumentAssignment } from './SlashCommandNamedArgumentAssignment.js';
|
||||
import { SlashCommandUnnamedArgumentAssignment } from './SlashCommandUnnamedArgumentAssignment.js';
|
||||
|
||||
export class SlashCommandExecutor {
|
||||
/**@type {Boolean}*/ injectPipe = true;
|
||||
/**@type {Number}*/ start;
|
||||
/**@type {Number}*/ end;
|
||||
/**@type {Number}*/ startNamedArgs;
|
||||
/**@type {Number}*/ endNamedArgs;
|
||||
/**@type {Number}*/ startUnnamedArgs;
|
||||
/**@type {Number}*/ endUnnamedArgs;
|
||||
/**@type {String}*/ name = '';
|
||||
/**@type {String}*/ #source = uuidv4();
|
||||
get source() { return this.#source; }
|
||||
set source(value) {
|
||||
this.#source = value;
|
||||
for (const arg of this.namedArgumentList.filter(it=>it.value instanceof SlashCommandClosure)) {
|
||||
arg.value.source = value;
|
||||
}
|
||||
for (const arg of this.unnamedArgumentList.filter(it=>it.value instanceof SlashCommandClosure)) {
|
||||
arg.value.source = value;
|
||||
}
|
||||
}
|
||||
/** @type {SlashCommand} */ command;
|
||||
/** @type {SlashCommandNamedArgumentAssignment[]} */ namedArgumentList = [];
|
||||
/** @type {SlashCommandUnnamedArgumentAssignment[]} */ unnamedArgumentList = [];
|
||||
/** @type {import('./SlashCommandParser.js').ParserFlags} */ parserFlags;
|
||||
|
||||
get commandCount() {
|
||||
return 1
|
||||
+ this.namedArgumentList.filter(it=>it.value instanceof SlashCommandClosure).map(it=>/**@type {SlashCommandClosure}*/(it.value).commandCount).reduce((cur, sum)=>cur + sum, 0)
|
||||
+ this.unnamedArgumentList.filter(it=>it.value instanceof SlashCommandClosure).map(it=>/**@type {SlashCommandClosure}*/(it.value).commandCount).reduce((cur, sum)=>cur + sum, 0)
|
||||
;
|
||||
}
|
||||
|
||||
set onProgress(value) {
|
||||
const closures = /**@type {SlashCommandClosure[]}*/([
|
||||
...this.namedArgumentList.filter(it=>it.value instanceof SlashCommandClosure).map(it=>it.value),
|
||||
...this.unnamedArgumentList.filter(it=>it.value instanceof SlashCommandClosure).map(it=>it.value),
|
||||
]);
|
||||
for (const closure of closures) {
|
||||
closure.onProgress = value;
|
||||
}
|
||||
}
|
||||
|
||||
constructor(start) {
|
||||
this.start = start;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user