From c9aff85452c66dc9b846c7034cec17cd3e44e2e8 Mon Sep 17 00:00:00 2001 From: Ean Milligan Date: Sat, 3 May 2025 08:31:07 -0400 Subject: [PATCH] Move RollModifiers to live in artigen --- src/artigen/cmdTokenizer.ts | 4 ++-- src/artigen/dice/dice.d.ts | 16 ++++++++++++++++ src/artigen/dice/executeRoll.ts | 4 ++-- ...teSolvedRoll.ts => generateFormattedRoll.ts} | 9 ++++----- src/artigen/managers/handler/workerTerminate.ts | 3 ++- src/artigen/managers/manager.d.ts | 2 +- src/artigen/math/mathTokenizer.ts | 15 +++++++-------- src/artigen/parser.ts | 6 +++--- src/artigen/utils/generateRoll.ts | 2 +- src/commandUtils.ts | 4 ++-- src/commands/roll/getModifiers.ts | 3 ++- src/endpoints/gets/apiRoll.ts | 3 ++- src/mod.d.ts | 17 ----------------- 13 files changed, 44 insertions(+), 44 deletions(-) create mode 100644 src/artigen/dice/dice.d.ts rename src/artigen/dice/{generateSolvedRoll.ts => generateFormattedRoll.ts} (88%) diff --git a/src/artigen/cmdTokenizer.ts b/src/artigen/cmdTokenizer.ts index dcb1f88..ed54326 100644 --- a/src/artigen/cmdTokenizer.ts +++ b/src/artigen/cmdTokenizer.ts @@ -4,14 +4,14 @@ import config from '~config'; import { CountDetails, ReturnData } from 'artigen/solver.d.ts'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; + import { tokenizeMath } from 'artigen/math/mathTokenizer.ts'; import { closeInternal, internalWrapRegex, openInternal } from 'artigen/utils/escape.ts'; import { loggingEnabled } from 'artigen/utils/logFlag.ts'; import { getMatchingInternalIdx, getMatchingPostfixIdx } from 'artigen/utils/parenBalance.ts'; -import { RollModifiers } from 'src/mod.d.ts'; - // tokenizeCmd expects a string[] of items that are either config.prefix/config.postfix or some text that contains math and/or dice rolls export const tokenizeCmd = (cmd: string[], modifiers: RollModifiers, topLevel: boolean): [ReturnData[], CountDetails[]] => { loggingEnabled && log(LT.LOG, `Tokenizing command ${JSON.stringify(cmd)}`); diff --git a/src/artigen/dice/dice.d.ts b/src/artigen/dice/dice.d.ts new file mode 100644 index 0000000..bfb2b9d --- /dev/null +++ b/src/artigen/dice/dice.d.ts @@ -0,0 +1,16 @@ +// RollModifiers is the structure to keep track of the decorators applied to a roll command +export type RollModifiers = { + noDetails: boolean; + superNoDetails: boolean; + spoiler: string; + maxRoll: boolean; + minRoll: boolean; + nominalRoll: boolean; + gmRoll: boolean; + gms: string[]; + order: string; + count: boolean; + commaTotals: boolean; + valid: boolean; + apiWarn: string; +}; diff --git a/src/artigen/dice/executeRoll.ts b/src/artigen/dice/executeRoll.ts index 04d04ae..dc7cac2 100644 --- a/src/artigen/dice/executeRoll.ts +++ b/src/artigen/dice/executeRoll.ts @@ -4,12 +4,12 @@ import config from '~config'; import { RollConf, RollSet, RollType } from 'artigen/solver.d.ts'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; + import { genFateRoll, genRoll } from 'artigen/utils/generateRoll.ts'; import { loggingEnabled } from 'artigen/utils/logFlag.ts'; import { compareOrigIdx, compareRolls } from 'artigen/utils/sortFuncs.ts'; -import { RollModifiers } from 'src/mod.d.ts'; - // Call with loopCountCheck(++loopCount); // Will ensure if maxLoops is 10, 10 loops will be allowed, 11 will not. const loopCountCheck = (loopCount: number): void => { diff --git a/src/artigen/dice/generateSolvedRoll.ts b/src/artigen/dice/generateFormattedRoll.ts similarity index 88% rename from src/artigen/dice/generateSolvedRoll.ts rename to src/artigen/dice/generateFormattedRoll.ts index dce71d6..1b2073f 100644 --- a/src/artigen/dice/generateSolvedRoll.ts +++ b/src/artigen/dice/generateFormattedRoll.ts @@ -2,16 +2,15 @@ import { log, LogTypes as LT } from '@Log4Deno'; import { RollFormat } from 'artigen/solver.d.ts'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; import { executeRoll } from 'artigen/dice/executeRoll.ts'; import { rollCounter } from 'artigen/utils/counter.ts'; import { loggingEnabled } from 'artigen/utils/logFlag.ts'; -import { RollModifiers } from 'src/mod.d.ts'; - -// generateSolvedRoll(rollConf, modifiers) returns one SolvedStep -// generateSolvedRoll handles creating and formatting the completed rolls into the SolvedStep format -export const generateSolvedRoll = (rollConf: string, modifiers: RollModifiers): RollFormat => { +// generateFormattedRoll(rollConf, modifiers) returns one SolvedStep +// generateFormattedRoll handles creating and formatting the completed rolls into the SolvedStep format +export const generateFormattedRoll = (rollConf: string, modifiers: RollModifiers): RollFormat => { let tempTotal = 0; let tempDetails = '['; let tempCrit = false; diff --git a/src/artigen/managers/handler/workerTerminate.ts b/src/artigen/managers/handler/workerTerminate.ts index af1dc90..8f506b8 100644 --- a/src/artigen/managers/handler/workerTerminate.ts +++ b/src/artigen/managers/handler/workerTerminate.ts @@ -1,5 +1,7 @@ import { SolvedRoll } from 'artigen/solver.d.ts'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; + import { removeWorker } from 'artigen/managers/countManager.ts'; import { QueuedRoll } from 'artigen/managers/manager.d.ts'; @@ -7,7 +9,6 @@ import stdResp from 'endpoints/stdResponses.ts'; import { generateRollEmbed } from 'src/commandUtils.ts'; import utils from 'src/utils.ts'; -import { RollModifiers } from 'src/mod.d.ts'; export const terminateWorker = async (rollWorker: Worker, rollRequest: QueuedRoll) => { rollWorker.terminate(); diff --git a/src/artigen/managers/manager.d.ts b/src/artigen/managers/manager.d.ts index e6536fc..b999dc6 100644 --- a/src/artigen/managers/manager.d.ts +++ b/src/artigen/managers/manager.d.ts @@ -1,6 +1,6 @@ import { DiscordenoMessage } from '@discordeno'; -import { RollModifiers } from 'src/mod.d.ts'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; // QueuedRoll is the structure to track rolls we could not immediately handle interface BaseQueuedRoll { diff --git a/src/artigen/math/mathTokenizer.ts b/src/artigen/math/mathTokenizer.ts index 6e16925..f1875df 100644 --- a/src/artigen/math/mathTokenizer.ts +++ b/src/artigen/math/mathTokenizer.ts @@ -2,7 +2,8 @@ import { log, LogTypes as LT } from '@Log4Deno'; import { CountDetails, MathConf, ReturnData, SolvedStep } from 'artigen/solver.d.ts'; -import { generateSolvedRoll } from 'artigen/dice/generateSolvedRoll.ts'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; +import { generateFormattedRoll } from 'artigen/dice/generateFormattedRoll.ts'; import { mathSolver } from 'artigen/math/mathSolver.ts'; @@ -11,8 +12,6 @@ import { legalMathOperators } from 'artigen/utils/legalMath.ts'; import { loggingEnabled } from 'artigen/utils/logFlag.ts'; import { assertParenBalance } from 'artigen/utils/parenBalance.ts'; -import { RollModifiers } from 'src/mod.d.ts'; - const operators = ['(', ')', '^', '*', '/', '%', '+', '-']; export const tokenizeMath = (cmd: string, modifiers: RollModifiers): [ReturnData[], CountDetails[]] => { @@ -102,7 +101,7 @@ export const tokenizeMath = (cmd: string, modifiers: RollModifiers): [ReturnData containsCrit: false, containsFail: false, }, - ] + ], ); i += 2; } else if (!legalMathOperators.includes(strMathConfI) && legalMathOperators.some((mathOp) => strMathConfI.endsWith(mathOp))) { @@ -114,7 +113,7 @@ export const tokenizeMath = (cmd: string, modifiers: RollModifiers): [ReturnData i += 2; } else if (![...operators, ...legalMathOperators].includes(strMathConfI)) { // If nothing else has handled it by now, try it as a roll - const formattedRoll = generateSolvedRoll(strMathConfI, modifiers); + const formattedRoll = generateFormattedRoll(strMathConfI, modifiers); mathConf[i] = formattedRoll.solvedStep; countDetails.push(formattedRoll.countDetails); } @@ -128,10 +127,10 @@ export const tokenizeMath = (cmd: string, modifiers: RollModifiers): [ReturnData } else { // Handle normally, just set current item to negative if (typeof mathConf[i] === 'number') { - mathConf[i] = mathConf[i] * -1; + mathConf[i] = mathConf[i] * -1; } else { - (mathConf[i]).total = (mathConf[i]).total * -1; - (mathConf[i]).details = `-${(mathConf[i]).details}`; + ( mathConf[i]).total = ( mathConf[i]).total * -1; + ( mathConf[i]).details = `-${( mathConf[i]).details}`; } mathConf.splice(i - 1, 1); i--; diff --git a/src/artigen/parser.ts b/src/artigen/parser.ts index 1fe1d62..5458e8d 100644 --- a/src/artigen/parser.ts +++ b/src/artigen/parser.ts @@ -3,14 +3,14 @@ import { log, LogTypes as LT } from '@Log4Deno'; import { tokenizeCmd } from 'artigen/cmdTokenizer.ts'; import { SolvedRoll } from 'artigen/solver.d.ts'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; + import { cmdSplitRegex, escapeCharacters } from 'artigen/utils/escape.ts'; import { loggingEnabled } from 'artigen/utils/logFlag.ts'; +import { assertPrePostBalance } from 'src/artigen/utils/parenBalance.ts'; import { compareTotalRolls, compareTotalRollsReverse } from 'artigen/utils/sortFuncs.ts'; import { translateError } from 'artigen/utils/translateError.ts'; -import { RollModifiers } from 'src/mod.d.ts'; -import { assertPrePostBalance } from 'src/artigen/utils/parenBalance.ts'; - // parseRoll(fullCmd, modifiers) // parseRoll handles converting fullCmd into a computer readable format for processing, and finally executes the solving export const parseRoll = (fullCmd: string, modifiers: RollModifiers): SolvedRoll => { diff --git a/src/artigen/utils/generateRoll.ts b/src/artigen/utils/generateRoll.ts index 1843f57..20aa6ee 100644 --- a/src/artigen/utils/generateRoll.ts +++ b/src/artigen/utils/generateRoll.ts @@ -1,4 +1,4 @@ -import { RollModifiers } from 'src/mod.d.ts'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; import { DPercentConf } from 'artigen/solver.d.ts'; diff --git a/src/commandUtils.ts b/src/commandUtils.ts index 183b002..b4c10f5 100644 --- a/src/commandUtils.ts +++ b/src/commandUtils.ts @@ -2,12 +2,12 @@ import { log, LogTypes as LT } from '@Log4Deno'; import config from '~config'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; + import { CountDetails, SolvedRoll } from 'artigen/solver.d.ts'; import { loggingEnabled } from 'artigen/utils/logFlag.ts'; -import { RollModifiers } from 'src/mod.d.ts'; - export const failColor = 0xe71212; export const warnColor = 0xe38f28; export const successColor = 0x0f8108; diff --git a/src/commands/roll/getModifiers.ts b/src/commands/roll/getModifiers.ts index 6bffd1a..8f735e6 100644 --- a/src/commands/roll/getModifiers.ts +++ b/src/commands/roll/getModifiers.ts @@ -4,11 +4,12 @@ import { log, LogTypes as LT } from '@Log4Deno'; import config from '~config'; import { DEVMODE } from '~flags'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; + import dbClient from 'db/client.ts'; import { queries } from 'db/common.ts'; import { generateRollError } from 'src/commandUtils.ts'; -import { RollModifiers } from 'src/mod.d.ts'; import utils from 'src/utils.ts'; export const getModifiers = (m: DiscordenoMessage, args: string[], command: string, originalCommand: string): RollModifiers => { diff --git a/src/endpoints/gets/apiRoll.ts b/src/endpoints/gets/apiRoll.ts index 7824b3a..bd3e9fe 100644 --- a/src/endpoints/gets/apiRoll.ts +++ b/src/endpoints/gets/apiRoll.ts @@ -3,6 +3,8 @@ import { log, LogTypes as LT } from '@Log4Deno'; import config from '~config'; +import { RollModifiers } from 'artigen/dice/dice.d.ts'; + import { sendRollRequest } from 'artigen/managers/queueManager.ts'; import dbClient from 'db/client.ts'; @@ -11,7 +13,6 @@ import { queries } from 'db/common.ts'; import stdResp from 'endpoints/stdResponses.ts'; import { verifyQueryHasParams } from 'endpoints/utils.ts'; -import { RollModifiers } from 'src/mod.d.ts'; import utils from 'src/utils.ts'; const apiWarning = `The following roll was conducted using my built in API. If someone in this channel did not request this roll, please report API abuse here: <${config.api.supportURL}>`; diff --git a/src/mod.d.ts b/src/mod.d.ts index 9dd04bf..e8ce2f2 100644 --- a/src/mod.d.ts +++ b/src/mod.d.ts @@ -7,23 +7,6 @@ export type EmojiConf = { deleteSender: boolean; }; -// RollModifiers is the structure to keep track of the decorators applied to a roll command -export type RollModifiers = { - noDetails: boolean; - superNoDetails: boolean; - spoiler: string; - maxRoll: boolean; - minRoll: boolean; - nominalRoll: boolean; - gmRoll: boolean; - gms: string[]; - order: string; - count: boolean; - commaTotals: boolean; - valid: boolean; - apiWarn: string; -}; - // PastCommandCount is used in calculating the hourly rate of commands export type PastCommandCount = { command: string;