@yipe/dice 0.2.21 → 0.2.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,54 +1,9 @@
1
- import { P as PMF, C as CritConfig, i as DiceQuery, L as LRUCache } from '../pmf-BC1poIqF.cjs';
2
-
3
- type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode;
4
- type DieNode = {
5
- type: "die";
6
- sides: number;
7
- reroll?: number;
8
- minimum?: number;
9
- explode?: number;
10
- };
11
- type ConstantNode = {
12
- type: "constant";
13
- value: number;
14
- };
15
- type SumNode = {
16
- type: "sum";
17
- count: number;
18
- child: ExpressionNode;
19
- };
20
- type AddNode = {
21
- type: "add";
22
- children: {
23
- node: ExpressionNode;
24
- sign: 1 | -1;
25
- }[];
26
- };
27
- type KeepNode = {
28
- type: "keep";
29
- mode: "highest" | "lowest";
30
- count: number;
31
- child: SumNode | KeepNode;
32
- };
33
- type D20RollNode = {
34
- type: "d20Roll";
35
- rollType: "advantage" | "disadvantage" | "elven accuracy";
36
- child: ExpressionNode;
37
- };
38
- type HalfNode = {
39
- type: "half";
40
- child: ExpressionNode;
41
- };
42
- type MaxOfNode = {
43
- type: "maxOf";
44
- count: number;
45
- child: ExpressionNode;
46
- };
1
+ import { P as PMF, i as DiceQuery, C as CritConfig, L as LRUCache } from '../pmf-BC1poIqF.cjs';
47
2
 
48
3
  type RollFactory = {
49
4
  (count: number, sides?: number, modifier?: number): RollBuilder;
50
5
  (count: number, die: RollBuilder, modifier?: number): RollBuilder;
51
- d(sides: number): RollBuilder;
6
+ d(sides: number | string): RollBuilder;
52
7
  hd20(): RollBuilder;
53
8
  d4(): RollBuilder;
54
9
  d6(): RollBuilder;
@@ -108,6 +63,87 @@ interface CheckBuilder {
108
63
  readonly pmf: PMF;
109
64
  }
110
65
 
66
+ type SaveOutcome = "normal" | "half";
67
+ declare class SaveBuilder implements CheckBuilder {
68
+ readonly check: DCBuilder;
69
+ private readonly failureEffect?;
70
+ private readonly saveOutcome;
71
+ constructor(check: DCBuilder, failureEffect?: RollBuilder, saveOutcome?: SaveOutcome);
72
+ saveHalf(): SaveBuilder;
73
+ toExpression(): string;
74
+ resolve(eps?: number): SaveResolution;
75
+ toPMF(eps?: number): PMF;
76
+ get pmf(): PMF;
77
+ toQuery(eps?: number): DiceQuery;
78
+ }
79
+
80
+ interface SaveConfig {
81
+ dc: number;
82
+ }
83
+ declare class DCBuilder extends RollBuilder {
84
+ private readonly saveConfig;
85
+ constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
86
+ dc(saveDC: number): DCBuilder;
87
+ get saveDC(): number;
88
+ add(anotherRoll: RollBuilder): DCBuilder;
89
+ addRoll(count?: number): DCBuilder;
90
+ onSaveFailure(val: number): SaveBuilder;
91
+ onSaveFailure(val: string): SaveBuilder;
92
+ onSaveFailure(val: RollBuilder): SaveBuilder;
93
+ onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
94
+ onSaveFailure(count: number, sides: number): SaveBuilder;
95
+ onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
96
+ onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
97
+ withElvenAccuracy(): never;
98
+ toExpression(): string;
99
+ toPMF(eps?: number): PMF;
100
+ }
101
+
102
+ type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode;
103
+ type DieNode = {
104
+ type: "die";
105
+ sides: number;
106
+ reroll?: number;
107
+ minimum?: number;
108
+ explode?: number;
109
+ };
110
+ type ConstantNode = {
111
+ type: "constant";
112
+ value: number;
113
+ };
114
+ type SumNode = {
115
+ type: "sum";
116
+ count: number;
117
+ child: ExpressionNode;
118
+ };
119
+ type AddNode = {
120
+ type: "add";
121
+ children: {
122
+ node: ExpressionNode;
123
+ sign: 1 | -1;
124
+ }[];
125
+ };
126
+ type KeepNode = {
127
+ type: "keep";
128
+ mode: "highest" | "lowest";
129
+ count: number;
130
+ child: SumNode | KeepNode;
131
+ };
132
+ type D20RollNode = {
133
+ type: "d20Roll";
134
+ rollType: "advantage" | "disadvantage" | "elven accuracy";
135
+ child: ExpressionNode;
136
+ };
137
+ type HalfNode = {
138
+ type: "half";
139
+ child: ExpressionNode;
140
+ };
141
+ type MaxOfNode = {
142
+ type: "maxOf";
143
+ count: number;
144
+ child: ExpressionNode;
145
+ };
146
+
111
147
  declare const defaultConfig: RollConfig;
112
148
  declare class RollBuilder {
113
149
  protected readonly subRollConfigs: readonly RollConfig[];
@@ -168,6 +204,8 @@ declare class RollBuilder {
168
204
  get baseReroll(): number;
169
205
  half(): HalfRollBuilder;
170
206
  maxOf(count: number): MaxOfRollBuilder;
207
+ ac(targetAC: number): ACBuilder;
208
+ dc(saveDC: number): DCBuilder;
171
209
  }
172
210
  declare class HalfRollBuilder extends RollBuilder {
173
211
  private readonly innerRoll;
@@ -325,54 +363,8 @@ declare class ACBuilder extends RollBuilder {
325
363
  toPMF(eps?: number): PMF;
326
364
  copy(): ACBuilder;
327
365
  }
328
- declare module "./roll" {
329
- interface RollBuilder {
330
- ac(targetAC: number): ACBuilder;
331
- }
332
- }
333
-
334
- type SaveOutcome = "normal" | "half";
335
- declare class SaveBuilder implements CheckBuilder {
336
- readonly check: DCBuilder;
337
- private readonly failureEffect?;
338
- private readonly saveOutcome;
339
- constructor(check: DCBuilder, failureEffect?: RollBuilder, saveOutcome?: SaveOutcome);
340
- saveHalf(): SaveBuilder;
341
- toExpression(): string;
342
- resolve(eps?: number): SaveResolution;
343
- toPMF(eps?: number): PMF;
344
- get pmf(): PMF;
345
- toQuery(eps?: number): DiceQuery;
346
- }
347
-
348
- interface SaveConfig {
349
- dc: number;
350
- }
351
- declare class DCBuilder extends RollBuilder {
352
- private readonly saveConfig;
353
- constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
354
- dc(saveDC: number): DCBuilder;
355
- get saveDC(): number;
356
- add(anotherRoll: RollBuilder): DCBuilder;
357
- addRoll(count?: number): DCBuilder;
358
- onSaveFailure(val: number): SaveBuilder;
359
- onSaveFailure(val: string): SaveBuilder;
360
- onSaveFailure(val: RollBuilder): SaveBuilder;
361
- onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
362
- onSaveFailure(count: number, sides: number): SaveBuilder;
363
- onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
364
- onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
365
- withElvenAccuracy(): never;
366
- toExpression(): string;
367
- toPMF(eps?: number): PMF;
368
- }
369
- declare module "./roll" {
370
- interface RollBuilder {
371
- dc(saveDC: number): DCBuilder;
372
- }
373
- }
374
366
 
375
- declare function d(sides: number): RollBuilder;
367
+ declare function d(sides: number | string): RollBuilder;
376
368
  declare const d4: RollBuilder;
377
369
  declare const d6: RollBuilder;
378
370
  declare const d8: RollBuilder;
@@ -385,4 +377,4 @@ declare const flat: (n: number) => RollBuilder;
385
377
  declare const roll: RollFactory;
386
378
  declare const builderPMFCache: LRUCache<string, PMF>;
387
379
 
388
- export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, type RollType, SaveBuilder, type SaveOutcome, type SaveResolution, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
380
+ export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, AttackBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, type RollType, SaveBuilder, type SaveOutcome, type SaveResolution, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
@@ -1,54 +1,9 @@
1
- import { P as PMF, C as CritConfig, i as DiceQuery, L as LRUCache } from '../pmf-BC1poIqF.js';
2
-
3
- type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode;
4
- type DieNode = {
5
- type: "die";
6
- sides: number;
7
- reroll?: number;
8
- minimum?: number;
9
- explode?: number;
10
- };
11
- type ConstantNode = {
12
- type: "constant";
13
- value: number;
14
- };
15
- type SumNode = {
16
- type: "sum";
17
- count: number;
18
- child: ExpressionNode;
19
- };
20
- type AddNode = {
21
- type: "add";
22
- children: {
23
- node: ExpressionNode;
24
- sign: 1 | -1;
25
- }[];
26
- };
27
- type KeepNode = {
28
- type: "keep";
29
- mode: "highest" | "lowest";
30
- count: number;
31
- child: SumNode | KeepNode;
32
- };
33
- type D20RollNode = {
34
- type: "d20Roll";
35
- rollType: "advantage" | "disadvantage" | "elven accuracy";
36
- child: ExpressionNode;
37
- };
38
- type HalfNode = {
39
- type: "half";
40
- child: ExpressionNode;
41
- };
42
- type MaxOfNode = {
43
- type: "maxOf";
44
- count: number;
45
- child: ExpressionNode;
46
- };
1
+ import { P as PMF, i as DiceQuery, C as CritConfig, L as LRUCache } from '../pmf-BC1poIqF.js';
47
2
 
48
3
  type RollFactory = {
49
4
  (count: number, sides?: number, modifier?: number): RollBuilder;
50
5
  (count: number, die: RollBuilder, modifier?: number): RollBuilder;
51
- d(sides: number): RollBuilder;
6
+ d(sides: number | string): RollBuilder;
52
7
  hd20(): RollBuilder;
53
8
  d4(): RollBuilder;
54
9
  d6(): RollBuilder;
@@ -108,6 +63,87 @@ interface CheckBuilder {
108
63
  readonly pmf: PMF;
109
64
  }
110
65
 
66
+ type SaveOutcome = "normal" | "half";
67
+ declare class SaveBuilder implements CheckBuilder {
68
+ readonly check: DCBuilder;
69
+ private readonly failureEffect?;
70
+ private readonly saveOutcome;
71
+ constructor(check: DCBuilder, failureEffect?: RollBuilder, saveOutcome?: SaveOutcome);
72
+ saveHalf(): SaveBuilder;
73
+ toExpression(): string;
74
+ resolve(eps?: number): SaveResolution;
75
+ toPMF(eps?: number): PMF;
76
+ get pmf(): PMF;
77
+ toQuery(eps?: number): DiceQuery;
78
+ }
79
+
80
+ interface SaveConfig {
81
+ dc: number;
82
+ }
83
+ declare class DCBuilder extends RollBuilder {
84
+ private readonly saveConfig;
85
+ constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
86
+ dc(saveDC: number): DCBuilder;
87
+ get saveDC(): number;
88
+ add(anotherRoll: RollBuilder): DCBuilder;
89
+ addRoll(count?: number): DCBuilder;
90
+ onSaveFailure(val: number): SaveBuilder;
91
+ onSaveFailure(val: string): SaveBuilder;
92
+ onSaveFailure(val: RollBuilder): SaveBuilder;
93
+ onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
94
+ onSaveFailure(count: number, sides: number): SaveBuilder;
95
+ onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
96
+ onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
97
+ withElvenAccuracy(): never;
98
+ toExpression(): string;
99
+ toPMF(eps?: number): PMF;
100
+ }
101
+
102
+ type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode;
103
+ type DieNode = {
104
+ type: "die";
105
+ sides: number;
106
+ reroll?: number;
107
+ minimum?: number;
108
+ explode?: number;
109
+ };
110
+ type ConstantNode = {
111
+ type: "constant";
112
+ value: number;
113
+ };
114
+ type SumNode = {
115
+ type: "sum";
116
+ count: number;
117
+ child: ExpressionNode;
118
+ };
119
+ type AddNode = {
120
+ type: "add";
121
+ children: {
122
+ node: ExpressionNode;
123
+ sign: 1 | -1;
124
+ }[];
125
+ };
126
+ type KeepNode = {
127
+ type: "keep";
128
+ mode: "highest" | "lowest";
129
+ count: number;
130
+ child: SumNode | KeepNode;
131
+ };
132
+ type D20RollNode = {
133
+ type: "d20Roll";
134
+ rollType: "advantage" | "disadvantage" | "elven accuracy";
135
+ child: ExpressionNode;
136
+ };
137
+ type HalfNode = {
138
+ type: "half";
139
+ child: ExpressionNode;
140
+ };
141
+ type MaxOfNode = {
142
+ type: "maxOf";
143
+ count: number;
144
+ child: ExpressionNode;
145
+ };
146
+
111
147
  declare const defaultConfig: RollConfig;
112
148
  declare class RollBuilder {
113
149
  protected readonly subRollConfigs: readonly RollConfig[];
@@ -168,6 +204,8 @@ declare class RollBuilder {
168
204
  get baseReroll(): number;
169
205
  half(): HalfRollBuilder;
170
206
  maxOf(count: number): MaxOfRollBuilder;
207
+ ac(targetAC: number): ACBuilder;
208
+ dc(saveDC: number): DCBuilder;
171
209
  }
172
210
  declare class HalfRollBuilder extends RollBuilder {
173
211
  private readonly innerRoll;
@@ -325,54 +363,8 @@ declare class ACBuilder extends RollBuilder {
325
363
  toPMF(eps?: number): PMF;
326
364
  copy(): ACBuilder;
327
365
  }
328
- declare module "./roll" {
329
- interface RollBuilder {
330
- ac(targetAC: number): ACBuilder;
331
- }
332
- }
333
-
334
- type SaveOutcome = "normal" | "half";
335
- declare class SaveBuilder implements CheckBuilder {
336
- readonly check: DCBuilder;
337
- private readonly failureEffect?;
338
- private readonly saveOutcome;
339
- constructor(check: DCBuilder, failureEffect?: RollBuilder, saveOutcome?: SaveOutcome);
340
- saveHalf(): SaveBuilder;
341
- toExpression(): string;
342
- resolve(eps?: number): SaveResolution;
343
- toPMF(eps?: number): PMF;
344
- get pmf(): PMF;
345
- toQuery(eps?: number): DiceQuery;
346
- }
347
-
348
- interface SaveConfig {
349
- dc: number;
350
- }
351
- declare class DCBuilder extends RollBuilder {
352
- private readonly saveConfig;
353
- constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
354
- dc(saveDC: number): DCBuilder;
355
- get saveDC(): number;
356
- add(anotherRoll: RollBuilder): DCBuilder;
357
- addRoll(count?: number): DCBuilder;
358
- onSaveFailure(val: number): SaveBuilder;
359
- onSaveFailure(val: string): SaveBuilder;
360
- onSaveFailure(val: RollBuilder): SaveBuilder;
361
- onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
362
- onSaveFailure(count: number, sides: number): SaveBuilder;
363
- onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
364
- onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
365
- withElvenAccuracy(): never;
366
- toExpression(): string;
367
- toPMF(eps?: number): PMF;
368
- }
369
- declare module "./roll" {
370
- interface RollBuilder {
371
- dc(saveDC: number): DCBuilder;
372
- }
373
- }
374
366
 
375
- declare function d(sides: number): RollBuilder;
367
+ declare function d(sides: number | string): RollBuilder;
376
368
  declare const d4: RollBuilder;
377
369
  declare const d6: RollBuilder;
378
370
  declare const d8: RollBuilder;
@@ -385,4 +377,4 @@ declare const flat: (n: number) => RollBuilder;
385
377
  declare const roll: RollFactory;
386
378
  declare const builderPMFCache: LRUCache<string, PMF>;
387
379
 
388
- export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, type RollType, SaveBuilder, type SaveOutcome, type SaveResolution, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
380
+ export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, AttackBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, type RollType, SaveBuilder, type SaveOutcome, type SaveResolution, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
@@ -2420,7 +2420,9 @@ var Dice = class _Dice {
2420
2420
  if (key === "hit") {
2421
2421
  this.ensureHitDistribution();
2422
2422
  }
2423
- return this.outcomeData[key];
2423
+ const distribution = this.outcomeData[key];
2424
+ if (distribution === void 0) return void 0;
2425
+ return { ...distribution };
2424
2426
  }
2425
2427
  getFullOutcomeDistribution() {
2426
2428
  return { ...this.outcomeData };
@@ -3832,6 +3834,14 @@ var RollBuilder = class _RollBuilder {
3832
3834
  maxOf(count) {
3833
3835
  return new MaxOfRollBuilder(this, count);
3834
3836
  }
3837
+ // These methods are implemented via prototype augmentation in ac.ts and dc.ts
3838
+ // They are declared here to provide proper TypeScript types
3839
+ ac(targetAC) {
3840
+ throw new Error("ac() should be implemented via prototype augmentation");
3841
+ }
3842
+ dc(saveDC) {
3843
+ throw new Error("dc() should be implemented via prototype augmentation");
3844
+ }
3835
3845
  };
3836
3846
  var HalfRollBuilder = class _HalfRollBuilder extends RollBuilder {
3837
3847
  constructor(innerRoll) {
@@ -4208,7 +4218,12 @@ var rollFn = (count, sidesOrDie, modifier) => {
4208
4218
  return builder.plus(modifier);
4209
4219
  }
4210
4220
  };
4211
- rollFn.d = (sides) => new RollBuilder(1).d(sides);
4221
+ rollFn.d = (sides) => {
4222
+ if (typeof sides === "string") {
4223
+ return RollBuilder.fromArgs(sides);
4224
+ }
4225
+ return new RollBuilder(1).d(sides);
4226
+ };
4212
4227
  rollFn.hd20 = () => new RollBuilder(1).d20().reroll(1);
4213
4228
  rollFn.d4 = () => new RollBuilder(1).d4();
4214
4229
  rollFn.d6 = () => new RollBuilder(1).d6();
@@ -4219,6 +4234,9 @@ rollFn.d20 = () => new RollBuilder(1).d20();
4219
4234
  rollFn.d100 = () => new RollBuilder(1).d100();
4220
4235
  rollFn.flat = (n) => new RollBuilder(0).plus(n);
4221
4236
  function d(sides) {
4237
+ if (typeof sides === "string") {
4238
+ return RollBuilder.fromArgs(sides);
4239
+ }
4222
4240
  return new RollBuilder(1).d(sides);
4223
4241
  }
4224
4242
  var d4 = new RollBuilder(1).d4();
@@ -5087,6 +5105,6 @@ RollBuilder.prototype.dc = function(saveDC) {
5087
5105
  return new DCBuilder(this).dc(saveDC);
5088
5106
  };
5089
5107
 
5090
- export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, DCBuilder, HalfRollBuilder, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, RollBuilder, SaveBuilder, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
5108
+ export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, AttackBuilder, DCBuilder, HalfRollBuilder, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, RollBuilder, SaveBuilder, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
5091
5109
  //# sourceMappingURL=index.js.map
5092
5110
  //# sourceMappingURL=index.js.map