this repo has no description
1import { 2 APPLICATION_ID, 3 Commands, 4 LegacyCommand, 5 RegisteredCommand 6} from "@moonlight-mod/types/coreExtensions/commands"; 7 8type LegacyCommands = Record<string, LegacyCommand>; 9let legacyCommands: LegacyCommands | undefined; 10let queuedLegacyCommands: Record<string, LegacyCommand> | null = {}; 11 12const registeredCommands: RegisteredCommand[] = []; 13 14export function _getLegacyCommands(commands: LegacyCommands) { 15 legacyCommands = commands; 16 if (queuedLegacyCommands != null) { 17 for (const [key, value] of Object.entries(queuedLegacyCommands)) { 18 legacyCommands[key] = value; 19 } 20 queuedLegacyCommands = null; 21 } 22} 23 24export const commands: Commands = { 25 registerCommand(command) { 26 const registered: RegisteredCommand = { 27 ...command, 28 untranslatedName: command.id, 29 displayName: command.id, 30 applicationId: APPLICATION_ID, 31 untranslatedDescription: command.description, 32 displayDescription: command.description, 33 options: command.options?.map((o) => ({ 34 ...o, 35 displayName: o.name, 36 displayDescription: o.description 37 })) 38 }; 39 registeredCommands.push(registered); 40 }, 41 42 registerLegacyCommand(id, command) { 43 if (command.match) { 44 if (command.match instanceof RegExp) { 45 command.match = this.anyScopeRegex(command.match); 46 } else if (command.match.regex && typeof command.match !== "function") { 47 command.match = this.anyScopeRegex(command.match.regex); 48 } 49 } 50 51 if (!legacyCommands) { 52 queuedLegacyCommands![id] = command; 53 } else { 54 legacyCommands[id] = command; 55 } 56 }, 57 58 anyScopeRegex(regex) { 59 const out = function (str: string) { 60 return regex.exec(str); 61 }; 62 out.regex = regex; 63 return out; 64 }, 65 66 _getCommands() { 67 return [...registeredCommands]; 68 } 69}; 70 71export default commands;