organize artigen's types

This commit is contained in:
Ean Milligan 2025-05-03 08:50:33 -04:00
parent c9aff85452
commit 69f95bf701
17 changed files with 132 additions and 137 deletions

23
src/artigen/artigen.d.ts vendored Normal file
View File

@ -0,0 +1,23 @@
import { CountDetails } from 'artigen/dice/dice.d.ts';
// ReturnData is the temporary internal type used before getting turned into SolvedRoll
export interface ReturnData {
rollTotal: number;
rollPreFormat: string;
rollPostFormat: string;
rollDetails: string;
containsCrit: boolean;
containsFail: boolean;
initConfig: string;
}
// SolvedRoll is the complete solved and formatted roll, or the error said roll created
export interface SolvedRoll {
error: boolean;
errorMsg: string;
errorCode: string;
line1: string;
line2: string;
line3: string;
counts: CountDetails;
}

View File

@ -2,9 +2,9 @@ import { log, LogTypes as LT } from '@Log4Deno';
import config from '~config';
import { CountDetails, ReturnData } from 'artigen/solver.d.ts';
import { ReturnData } from 'artigen/artigen.d.ts';
import { RollModifiers } from 'artigen/dice/dice.d.ts';
import { CountDetails, RollModifiers } from 'artigen/dice/dice.d.ts';
import { tokenizeMath } from 'artigen/math/mathTokenizer.ts';

View File

@ -1,5 +1,38 @@
import { SolvedStep } from 'artigen/math/math.d.ts';
// Available Roll Types
export type RollType = '' | 'roll20' | 'fate' | 'cwod' | 'ova';
// RollSet is used to preserve all information about a calculated roll
export interface RollSet {
type: RollType;
origIdx: number;
roll: number;
dropped: boolean;
rerolled: boolean;
exploding: boolean;
critHit: boolean;
critFail: boolean;
}
// CountDetails is the object holding the count data for creating the Count Embed
export interface CountDetails {
total: number;
successful: number;
failed: number;
rerolled: number;
dropped: number;
exploded: number;
}
// RollFormat is the return structure for the rollFormatter
export interface RollFormat {
solvedStep: SolvedStep;
countDetails: CountDetails;
}
// RollModifiers is the structure to keep track of the decorators applied to a roll command
export type RollModifiers = {
export interface RollModifiers {
noDetails: boolean;
superNoDetails: boolean;
spoiler: string;
@ -13,4 +46,46 @@ export type RollModifiers = {
commaTotals: boolean;
valid: boolean;
apiWarn: string;
}
// Basic conf interfaces
interface CountConf {
on: boolean;
count: number;
}
interface RangeConf {
on: boolean;
range: number[];
}
// D% configuration
export interface DPercentConf {
on: boolean;
sizeAdjustment: number;
critVal: number;
}
// RollConf is used by the roll20 setup
export interface RollConf {
dieCount: number;
dieSize: number;
dPercent: DPercentConf;
drop: CountConf;
keep: CountConf;
dropHigh: CountConf;
keepLow: CountConf;
reroll: {
on: boolean;
once: boolean;
nums: number[];
};
critScore: RangeConf;
critFail: RangeConf;
exploding: {
on: boolean;
once: boolean;
compounding: boolean;
penetrating: boolean;
nums: number[];
};
}

View File

@ -2,9 +2,7 @@ import { log, LogTypes as LT } from '@Log4Deno';
import config from '~config';
import { RollConf, RollSet, RollType } from 'artigen/solver.d.ts';
import { RollModifiers } from 'artigen/dice/dice.d.ts';
import { RollConf, RollModifiers, RollSet, RollType } from 'artigen/dice/dice.d.ts';
import { genFateRoll, genRoll } from 'artigen/utils/generateRoll.ts';
import { loggingEnabled } from 'artigen/utils/logFlag.ts';

View File

@ -1,8 +1,6 @@
import { log, LogTypes as LT } from '@Log4Deno';
import { RollFormat } from 'artigen/solver.d.ts';
import { RollModifiers } from 'artigen/dice/dice.d.ts';
import { RollFormat, RollModifiers } from 'artigen/dice/dice.d.ts';
import { executeRoll } from 'artigen/dice/executeRoll.ts';
import { rollCounter } from 'artigen/utils/counter.ts';

View File

@ -4,14 +4,14 @@ import { log, LogTypes as LT } from '@Log4Deno';
import config from '~config';
import { DEVMODE } from '~flags';
import { SolvedRoll } from 'artigen/solver.d.ts';
import { SolvedRoll } from 'artigen/artigen.d.ts';
import { removeWorker } from 'artigen/managers/countManager.ts';
import { QueuedRoll } from 'artigen/managers/manager.d.ts';
import { loggingEnabled } from 'artigen/utils/logFlag.ts';
import dbClient from 'db/client.ts';
import dbClient from 'db/client.ts';
import { queries } from 'db/common.ts';
import stdResp from 'endpoints/stdResponses.ts';

View File

@ -1,4 +1,4 @@
import { SolvedRoll } from 'artigen/solver.d.ts';
import { SolvedRoll } from 'artigen/artigen.d.ts';
import { RollModifiers } from 'artigen/dice/dice.d.ts';

10
src/artigen/math/math.d.ts vendored Normal file
View File

@ -0,0 +1,10 @@
// SolvedStep is used to preserve information while math is being performed on the roll
export interface SolvedStep {
total: number;
details: string;
containsCrit: boolean;
containsFail: boolean;
}
// Joined type for mathConf as its a "WIP" variable and moved everything from string->number->SolvedStep
export type MathConf = string | number | SolvedStep;

View File

@ -5,7 +5,7 @@
*/
import { log, LogTypes as LT } from '@Log4Deno';
import { MathConf, SolvedStep } from 'artigen/solver.d.ts';
import { MathConf, SolvedStep } from 'artigen/math/math.d.ts';
import { legalMath, legalMathOperators } from 'artigen/utils/legalMath.ts';
import { loggingEnabled } from 'artigen/utils/logFlag.ts';

View File

@ -1,8 +1,10 @@
import { log, LogTypes as LT } from '@Log4Deno';
import { CountDetails, MathConf, ReturnData, SolvedStep } from 'artigen/solver.d.ts';
import { ReturnData } from 'artigen/artigen.d.ts';
import { RollModifiers } from 'artigen/dice/dice.d.ts';
import { MathConf, SolvedStep } from 'artigen/math/math.d.ts';
import { CountDetails, RollModifiers } from 'artigen/dice/dice.d.ts';
import { generateFormattedRoll } from 'artigen/dice/generateFormattedRoll.ts';
import { mathSolver } from 'artigen/math/mathSolver.ts';

View File

@ -1,13 +1,13 @@
import { log, LogTypes as LT } from '@Log4Deno';
import { SolvedRoll } from 'artigen/artigen.d.ts';
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 { assertPrePostBalance } from 'artigen/utils/parenBalance.ts';
import { compareTotalRolls, compareTotalRollsReverse } from 'artigen/utils/sortFuncs.ts';
import { translateError } from 'artigen/utils/translateError.ts';

View File

@ -1,111 +0,0 @@
// Available Roll Types
export type RollType = '' | 'roll20' | 'fate' | 'cwod' | 'ova';
export type MathConf = string | number | SolvedStep;
// RollSet is used to preserve all information about a calculated roll
export type RollSet = {
type: RollType;
origIdx: number;
roll: number;
dropped: boolean;
rerolled: boolean;
exploding: boolean;
critHit: boolean;
critFail: boolean;
};
// SolvedStep is used to preserve information while math is being performed on the roll
export type SolvedStep = {
total: number;
details: string;
containsCrit: boolean;
containsFail: boolean;
};
// ReturnData is the temporary internal type used before getting turned into SolvedRoll
export type ReturnData = {
rollTotal: number;
rollPreFormat: string;
rollPostFormat: string;
rollDetails: string;
containsCrit: boolean;
containsFail: boolean;
initConfig: string;
};
// CountDetails is the object holding the count data for creating the Count Embed
export type CountDetails = {
total: number;
successful: number;
failed: number;
rerolled: number;
dropped: number;
exploded: number;
};
// RollFormat is the return structure for the rollFormatter
export type RollFormat = {
solvedStep: SolvedStep;
countDetails: CountDetails;
};
// SolvedRoll is the complete solved and formatted roll, or the error said roll created
export type SolvedRoll = {
error: boolean;
errorMsg: string;
errorCode: string;
line1: string;
line2: string;
line3: string;
counts: CountDetails;
};
export type DPercentConf = {
on: boolean;
sizeAdjustment: number;
critVal: number;
};
// RollConf is used by the roll20 setup
export type RollConf = {
dieCount: number;
dieSize: number;
dPercent: DPercentConf;
drop: {
on: boolean;
count: number;
};
keep: {
on: boolean;
count: number;
};
dropHigh: {
on: boolean;
count: number;
};
keepLow: {
on: boolean;
count: number;
};
reroll: {
on: boolean;
once: boolean;
nums: number[];
};
critScore: {
on: boolean;
range: number[];
};
critFail: {
on: boolean;
range: number[];
};
exploding: {
on: boolean;
once: boolean;
compounding: boolean;
penetrating: boolean;
nums: number[];
};
};

View File

@ -1,4 +1,4 @@
import { CountDetails, RollSet } from 'artigen/solver.d.ts';
import { CountDetails, RollSet } from 'artigen/dice/dice.d.ts';
export const rollCounter = (rollSet: RollSet[]): CountDetails => {
const countDetails = {

View File

@ -1,6 +1,4 @@
import { RollModifiers } from 'artigen/dice/dice.d.ts';
import { DPercentConf } from 'artigen/solver.d.ts';
import { DPercentConf, RollModifiers } from 'artigen/dice/dice.d.ts';
// genRoll(size) returns number
// genRoll rolls a die of size size and returns the result

View File

@ -2,7 +2,7 @@ import { log, LogTypes as LT } from '@Log4Deno';
import config from '~config';
import { MathConf } from 'artigen/solver.d.ts';
import { MathConf } from 'artigen/math/math.d.ts';
import { closeInternal, openInternal } from 'artigen/utils/escape.ts';
import { loggingEnabled } from 'artigen/utils/logFlag.ts';

View File

@ -1,4 +1,6 @@
import { ReturnData, RollSet } from 'src/artigen/solver.d.ts';
import { ReturnData } from 'artigen/artigen.d.ts';
import { RollSet } from 'artigen/dice/dice.d.ts';
// compareRolls(a, b) returns -1|0|1
// compareRolls is used to order an array of RollSets by RollSet.roll

View File

@ -2,9 +2,9 @@ import { log, LogTypes as LT } from '@Log4Deno';
import config from '~config';
import { RollModifiers } from 'artigen/dice/dice.d.ts';
import { SolvedRoll } from 'artigen/artigen.d.ts';
import { CountDetails, SolvedRoll } from 'artigen/solver.d.ts';
import { CountDetails, RollModifiers } from 'artigen/dice/dice.d.ts';
import { loggingEnabled } from 'artigen/utils/logFlag.ts';