From 76c3ba02c982044d6cf0d5d9b4ffac417d6202af Mon Sep 17 00:00:00 2001 From: "alxjrvs@gmail.com" Date: Tue, 3 Dec 2024 23:29:58 -0500 Subject: [PATCH] Ease of export --- build.ts | 4 +-- src/core/index.ts | 1 + src/{ => core}/types.ts | 0 .../__tests__/configToDescription.test.ts | 2 +- .../utils/__tests__/coreRandom.test.ts | 2 +- .../utils/__tests__/rollDicePools.test.ts | 4 +-- .../utils/configToDescription/index.ts | 0 .../configToDescription/stringFormatters.ts | 0 src/{ => core}/utils/coreRandom.ts | 0 src/core/utils/rollDicePools.ts | 15 +++++++++++ src/dice/D.ts | 4 +-- src/faces/rollCustomFaces.ts | 2 +- src/faces/types.ts | 2 +- .../utils/customFacesConfigToDescription.ts | 2 +- src/notation/types.ts | 2 +- src/notation/utils/configToNotation/index.ts | 2 +- .../configToNotation/notationFormatters.ts | 2 +- .../utils/notationToRollConfig/index.ts | 2 +- .../notationToRollConfig/optionsParsers.ts | 2 +- src/notation/validateNotation.ts | 2 +- .../__tests__/utils/applyModifiers.test.ts | 2 +- src/tower/roll.ts | 2 +- src/tower/types.ts | 2 +- .../applyModifiers/modifierApplicators.ts | 2 +- src/tower/utils/argumentToRollConfig.ts | 2 +- src/tower/utils/argumentToRollParameters.ts | 2 +- src/utils/rollDicePools.ts | 2 +- tsconfig.json | 25 +++++++++++++------ 28 files changed, 58 insertions(+), 31 deletions(-) create mode 100644 src/core/index.ts rename src/{ => core}/types.ts (100%) rename src/{ => core}/utils/__tests__/configToDescription.test.ts (94%) rename src/{ => core}/utils/__tests__/coreRandom.test.ts (86%) rename src/{ => core}/utils/__tests__/rollDicePools.test.ts (88%) rename src/{ => core}/utils/configToDescription/index.ts (100%) rename src/{ => core}/utils/configToDescription/stringFormatters.ts (100%) rename src/{ => core}/utils/coreRandom.ts (100%) create mode 100644 src/core/utils/rollDicePools.ts diff --git a/build.ts b/build.ts index b742e43e4..ac46192fa 100644 --- a/build.ts +++ b/build.ts @@ -2,11 +2,11 @@ import dts from 'bun-plugin-dts' const results = await Bun.build({ entrypoints: [ + './src/core/index.ts', './src/dice/index.ts', './src/faces/index.ts', './src/notation/index.ts', - './src/tower/index.ts', - './src/types.ts' + './src/tower/index.ts' ], outdir: './dist', splitting: true, diff --git a/src/core/index.ts b/src/core/index.ts new file mode 100644 index 000000000..c9f6f047d --- /dev/null +++ b/src/core/index.ts @@ -0,0 +1 @@ +export * from './types' diff --git a/src/types.ts b/src/core/types.ts similarity index 100% rename from src/types.ts rename to src/core/types.ts diff --git a/src/utils/__tests__/configToDescription.test.ts b/src/core/utils/__tests__/configToDescription.test.ts similarity index 94% rename from src/utils/__tests__/configToDescription.test.ts rename to src/core/utils/__tests__/configToDescription.test.ts index 05c614bc5..2430d54e6 100644 --- a/src/utils/__tests__/configToDescription.test.ts +++ b/src/core/utils/__tests__/configToDescription.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from 'bun:test' -import { configToDescription } from '~src/utils/configToDescription' +import { configToDescription } from '~src/core/utils/configToDescription' describe('configToDescription', () => { test('returns an array strings matching the constraints', () => { diff --git a/src/utils/__tests__/coreRandom.test.ts b/src/core/utils/__tests__/coreRandom.test.ts similarity index 86% rename from src/utils/__tests__/coreRandom.test.ts rename to src/core/utils/__tests__/coreRandom.test.ts index a0901d5b7..7b1825c18 100644 --- a/src/utils/__tests__/coreRandom.test.ts +++ b/src/core/utils/__tests__/coreRandom.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from 'bun:test' -import { coreRandom } from '~src/utils/coreRandom' +import { coreRandom } from '~src/core/utils/coreRandom' describe('coreRandom', () => { test('it returns an object between 1 and the provided number', () => { diff --git a/src/utils/__tests__/rollDicePools.test.ts b/src/core/utils/__tests__/rollDicePools.test.ts similarity index 88% rename from src/utils/__tests__/rollDicePools.test.ts rename to src/core/utils/__tests__/rollDicePools.test.ts index 5e50b9f81..5b3932df7 100644 --- a/src/utils/__tests__/rollDicePools.test.ts +++ b/src/core/utils/__tests__/rollDicePools.test.ts @@ -1,6 +1,6 @@ import { describe, expect, test } from 'bun:test' -import { rollDicePools } from '~src/utils/rollDicePools' -import { DicePoolLike } from '~types' +import { rollDicePools } from '~src/core/utils/rollDicePools' +import { DicePoolLike } from '~src/core/types' describe('rollDicePools', () => { test('rolls the provided dice a number of times equal to the quantity', () => { diff --git a/src/utils/configToDescription/index.ts b/src/core/utils/configToDescription/index.ts similarity index 100% rename from src/utils/configToDescription/index.ts rename to src/core/utils/configToDescription/index.ts diff --git a/src/utils/configToDescription/stringFormatters.ts b/src/core/utils/configToDescription/stringFormatters.ts similarity index 100% rename from src/utils/configToDescription/stringFormatters.ts rename to src/core/utils/configToDescription/stringFormatters.ts diff --git a/src/utils/coreRandom.ts b/src/core/utils/coreRandom.ts similarity index 100% rename from src/utils/coreRandom.ts rename to src/core/utils/coreRandom.ts diff --git a/src/core/utils/rollDicePools.ts b/src/core/utils/rollDicePools.ts new file mode 100644 index 000000000..f86dfb4b1 --- /dev/null +++ b/src/core/utils/rollDicePools.ts @@ -0,0 +1,15 @@ +import { DicePoolLike, DicePoolRollReturn } from '~src/core/types' + +export function rollDicePools( + dicePools: DicePoolLike +): DicePoolRollReturn { + return Object.fromEntries( + Object.keys(dicePools).map((key) => { + const { + die, + config: { quantity } + } = dicePools[key] + return [key, die.rollMany(quantity)] + }) + ) +} diff --git a/src/dice/D.ts b/src/dice/D.ts index d30664ec1..fde2b4db7 100644 --- a/src/dice/D.ts +++ b/src/dice/D.ts @@ -1,5 +1,5 @@ -import { coreRandom } from '~src/utils/coreRandom' -import { RollConfig } from '~types' +import { coreRandom } from '~src/core/utils/coreRandom' +import { RollConfig } from '~src/core/types' export class D { constructor(public sides: number) { diff --git a/src/faces/rollCustomFaces.ts b/src/faces/rollCustomFaces.ts index 86b580611..cd787074c 100644 --- a/src/faces/rollCustomFaces.ts +++ b/src/faces/rollCustomFaces.ts @@ -6,7 +6,7 @@ import type { CustomFacesDicePools } from './types' import { argumentToCustomFacesRollParameters } from './utils/argumentToCustomFacesRollParameters' -import { rollDicePools } from '~src/utils/rollDicePools' +import { rollDicePools } from '~src/core/utils/rollDicePools' export function rollCustomFaces( ...args: CustomFacesRollArgument[] diff --git a/src/faces/types.ts b/src/faces/types.ts index 6f26f7d4a..9be42634f 100644 --- a/src/faces/types.ts +++ b/src/faces/types.ts @@ -1,4 +1,4 @@ -import { RollConfig } from '~types' +import { RollConfig } from '~src/core/types' import { NotationValidationResult } from '~src/notation/types' import { RollArgument } from '~src/tower/types' import type { CustomFacesD } from './customFacesD' diff --git a/src/faces/utils/customFacesConfigToDescription.ts b/src/faces/utils/customFacesConfigToDescription.ts index 84a4c099a..4a1e7afcd 100644 --- a/src/faces/utils/customFacesConfigToDescription.ts +++ b/src/faces/utils/customFacesConfigToDescription.ts @@ -1,4 +1,4 @@ -import { formatCoreDescriptions } from '~src/utils/configToDescription' +import { formatCoreDescriptions } from '~src/core/utils/configToDescription' import type { CustomFacesRollConfig } from '../types' export function customFacesConfigToDescriptions({ diff --git a/src/notation/types.ts b/src/notation/types.ts index e1f8b9b0e..b0a36d318 100644 --- a/src/notation/types.ts +++ b/src/notation/types.ts @@ -1,4 +1,4 @@ -import { RollConfig } from '~types' +import { RollConfig } from '~src/core/types' export interface NotationValidationResult { valid: V diff --git a/src/notation/utils/configToNotation/index.ts b/src/notation/utils/configToNotation/index.ts index eacba0d69..ce62297f7 100644 --- a/src/notation/utils/configToNotation/index.ts +++ b/src/notation/utils/configToNotation/index.ts @@ -3,7 +3,7 @@ import { formatModifierNotation } from './notationFormatters' import type { DiceNotation } from '../../types' -import { RollConfig } from '~types' +import { RollConfig } from '~src/core/types' export function configToNotation(options: RollConfig): DiceNotation { return `${formatCoreNotation(options)}${formatModifierNotation(options)}` diff --git a/src/notation/utils/configToNotation/notationFormatters.ts b/src/notation/utils/configToNotation/notationFormatters.ts index d2896f8ee..ef96f7873 100644 --- a/src/notation/utils/configToNotation/notationFormatters.ts +++ b/src/notation/utils/configToNotation/notationFormatters.ts @@ -5,7 +5,7 @@ import { RerollOptions, UniqueOptions, RollConfig -} from '~types' +} from '~src/core/types' import { DiceNotation } from '~src/notation/types' function capNotation(cap: GreaterLessOptions) { diff --git a/src/notation/utils/notationToRollConfig/index.ts b/src/notation/utils/notationToRollConfig/index.ts index 8dd111f68..6333789bd 100644 --- a/src/notation/utils/notationToRollConfig/index.ts +++ b/src/notation/utils/notationToRollConfig/index.ts @@ -1,6 +1,6 @@ import { parseCoreNotation, parseModifiers } from './optionsParsers' import { coreNotationPattern } from '../../patterns' -import { RollConfig } from '~types' +import { RollConfig } from '~src/core/types' import { DiceNotation } from '~src/notation/types' export function notationToRollConfig(notationString: DiceNotation): RollConfig { diff --git a/src/notation/utils/notationToRollConfig/optionsParsers.ts b/src/notation/utils/notationToRollConfig/optionsParsers.ts index 0317138dc..7e18f865c 100644 --- a/src/notation/utils/notationToRollConfig/optionsParsers.ts +++ b/src/notation/utils/notationToRollConfig/optionsParsers.ts @@ -4,7 +4,7 @@ import { Modifiers, RequiredCoreDiceParameters, RerollOptions -} from '~types' +} from '~src/core/types' import { dropHighestPattern, dropLowestPattern, diff --git a/src/notation/validateNotation.ts b/src/notation/validateNotation.ts index 456455d4e..3465c2e1c 100644 --- a/src/notation/validateNotation.ts +++ b/src/notation/validateNotation.ts @@ -2,7 +2,7 @@ import { isDiceNotation } from './guards' import { NotationValidationResult } from './types' import { notationToRollConfig } from './utils/notationToRollConfig' import { configToNotation } from './utils/configToNotation' -import { configToDescription } from '~src/utils/configToDescription' +import { configToDescription } from '~src/core/utils/configToDescription' function validateNotation(arg: string): NotationValidationResult { if (!isDiceNotation(arg)) { diff --git a/src/tower/__tests__/utils/applyModifiers.test.ts b/src/tower/__tests__/utils/applyModifiers.test.ts index 665a02ad9..bad38bbee 100644 --- a/src/tower/__tests__/utils/applyModifiers.test.ts +++ b/src/tower/__tests__/utils/applyModifiers.test.ts @@ -1,5 +1,5 @@ import { describe, expect, spyOn, test } from 'bun:test' -import { Modifiers } from '~types' +import { Modifiers } from '~src/core/types' import { D } from '~src/dice/D' import { RollParameters } from '~src/tower/types' import { diff --git a/src/tower/roll.ts b/src/tower/roll.ts index 0f71a6ac4..c6bc2e890 100644 --- a/src/tower/roll.ts +++ b/src/tower/roll.ts @@ -3,7 +3,7 @@ import { v4 as uuid } from 'uuid' import type { DicePools, RollArgument, RollResult } from './types' import { applyModifiers, calculateTotal } from './utils/applyModifiers' import { argumentToRollParameters } from './utils/argumentToRollParameters' -import { rollDicePools } from '~src/utils/rollDicePools' +import { rollDicePools } from '~src/core/utils/rollDicePools' export function roll(...args: RollArgument[]): RollResult { const dicePools = args.reduce( diff --git a/src/tower/types.ts b/src/tower/types.ts index 2a2a4459c..381e799f4 100644 --- a/src/tower/types.ts +++ b/src/tower/types.ts @@ -1,4 +1,4 @@ -import { RollConfig } from '~types' +import { RollConfig } from '~src/core/types' import { D } from '~src/dice/D' import { DiceNotation } from '~src/notation/types' diff --git a/src/tower/utils/applyModifiers/modifierApplicators.ts b/src/tower/utils/applyModifiers/modifierApplicators.ts index ae8d453b0..89648219f 100644 --- a/src/tower/utils/applyModifiers/modifierApplicators.ts +++ b/src/tower/utils/applyModifiers/modifierApplicators.ts @@ -5,7 +5,7 @@ import { ReplaceOptions, RequiredCoreDiceParameters, RerollOptions -} from '~types' +} from '~src/core/types' export class InvalidUniqueError extends Error { constructor() { diff --git a/src/tower/utils/argumentToRollConfig.ts b/src/tower/utils/argumentToRollConfig.ts index 236fb6dd9..74c0b8318 100644 --- a/src/tower/utils/argumentToRollConfig.ts +++ b/src/tower/utils/argumentToRollConfig.ts @@ -1,4 +1,4 @@ -import { RollConfig } from '~types' +import { RollConfig } from '~src/core/types' import { isRollConfigArgument, isD } from '../guards' import type { RollArgument } from '../types' import { isDiceNotation } from '~src/notation/guards' diff --git a/src/tower/utils/argumentToRollParameters.ts b/src/tower/utils/argumentToRollParameters.ts index 08b5d8f07..527d26a1e 100644 --- a/src/tower/utils/argumentToRollParameters.ts +++ b/src/tower/utils/argumentToRollParameters.ts @@ -3,7 +3,7 @@ import { isD } from '../guards' import type { RollArgument, RollParameters } from '../types' import { argumentToRollConfig } from './argumentToRollConfig' import { configToNotation } from '~src/notation/utils/configToNotation' -import { configToDescription } from '~src/utils/configToDescription' +import { configToDescription } from '~src/core/utils/configToDescription' export function argumentToRollParameters( argument: RollArgument diff --git a/src/utils/rollDicePools.ts b/src/utils/rollDicePools.ts index 2feefc626..f86dfb4b1 100644 --- a/src/utils/rollDicePools.ts +++ b/src/utils/rollDicePools.ts @@ -1,4 +1,4 @@ -import { DicePoolLike, DicePoolRollReturn } from '~types' +import { DicePoolLike, DicePoolRollReturn } from '~src/core/types' export function rollDicePools( dicePools: DicePoolLike diff --git a/tsconfig.json b/tsconfig.json index ecd656350..245dc7b51 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,13 +1,22 @@ { "compilerOptions": { "paths": { - "~models": ["./src/models/index.ts"], - "~patterns": ["./src/patterns.ts"], - "~guards": ["./src/guards.ts"], - "~types": ["./src/types.ts"], - "~src/*": ["./src/*"] + "~models": [ + "./src/models/index.ts" + ], + "~patterns": [ + "./src/patterns.ts" + ], + "~guards": [ + "./src/guards.ts" + ], + "~src/*": [ + "./src/*" + ] }, - "lib": ["ESNext"], + "lib": [ + "ESNext" + ], "module": "esnext", "target": "esnext", "moduleResolution": "bundler", @@ -21,6 +30,8 @@ "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "allowJs": false, - "types": ["bun-types"] + "types": [ + "bun-types" + ] } }