@omnitronix/happy-panda-game-engine 0.0.3 → 0.0.5
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.
- package/dist/__tests__/bonus-sequence.test.d.ts +7 -0
- package/dist/__tests__/bonus-sequence.test.d.ts.map +1 -0
- package/dist/__tests__/cherry-frequency.test.d.ts +8 -0
- package/dist/__tests__/cherry-frequency.test.d.ts.map +1 -0
- package/dist/__tests__/counter-manager.test.d.ts +7 -0
- package/dist/__tests__/counter-manager.test.d.ts.map +1 -0
- package/dist/__tests__/cpp-parity.test.d.ts +39 -0
- package/dist/__tests__/cpp-parity.test.d.ts.map +1 -0
- package/dist/__tests__/cpp-parity.test.js +29 -25
- package/dist/__tests__/cpp-parity.test.js.map +1 -1
- package/dist/__tests__/fixtures/cpp-parity-vectors.json +69 -50
- package/dist/__tests__/happy-panda-engine.test.d.ts +7 -0
- package/dist/__tests__/happy-panda-engine.test.d.ts.map +1 -0
- package/dist/__tests__/jackpot-manager.test.d.ts +8 -0
- package/dist/__tests__/jackpot-manager.test.d.ts.map +1 -0
- package/dist/__tests__/jackpot-trigger-trace.test.d.ts +6 -0
- package/dist/__tests__/jackpot-trigger-trace.test.d.ts.map +1 -0
- package/dist/__tests__/rtp-1million.test.d.ts +8 -0
- package/dist/__tests__/rtp-1million.test.d.ts.map +1 -0
- package/dist/__tests__/rtp-analysis.test.d.ts +8 -0
- package/dist/__tests__/rtp-analysis.test.d.ts.map +1 -0
- package/dist/__tests__/rtp-diagnostic.test.d.ts +6 -0
- package/dist/__tests__/rtp-diagnostic.test.d.ts.map +1 -0
- package/dist/__tests__/rtp-simulation.test.d.ts +8 -0
- package/dist/__tests__/rtp-simulation.test.d.ts.map +1 -0
- package/dist/__tests__/special-wins.test.d.ts +7 -0
- package/dist/__tests__/special-wins.test.d.ts.map +1 -0
- package/dist/__tests__/spin-generator.test.d.ts +7 -0
- package/dist/__tests__/spin-generator.test.d.ts.map +1 -0
- package/dist/__tests__/spin-handler.test.d.ts +7 -0
- package/dist/__tests__/spin-handler.test.d.ts.map +1 -0
- package/dist/__tests__/symbol-distribution.test.d.ts +6 -0
- package/dist/__tests__/symbol-distribution.test.d.ts.map +1 -0
- package/dist/__tests__/weighted-random.test.d.ts +7 -0
- package/dist/__tests__/weighted-random.test.d.ts.map +1 -0
- package/dist/__tests__/win-evaluator.test.d.ts +7 -0
- package/dist/__tests__/win-evaluator.test.d.ts.map +1 -0
- package/dist/__tests__/win-evaluator.test.js +20 -13
- package/dist/__tests__/win-evaluator.test.js.map +1 -1
- package/dist/config/happy-panda.config.d.ts +212 -0
- package/dist/config/happy-panda.config.d.ts.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/domain/index.d.ts +5 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/types.d.ts +205 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/engine/happy-panda-engine.d.ts +50 -0
- package/dist/engine/happy-panda-engine.d.ts.map +1 -0
- package/dist/engine/index.d.ts +5 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/happy-panda-v1.game-engine.d.ts +63 -0
- package/dist/happy-panda-v1.game-engine.d.ts.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/logic/handlers/index.d.ts +5 -0
- package/dist/logic/handlers/index.d.ts.map +1 -0
- package/dist/logic/handlers/spin-handler.d.ts +54 -0
- package/dist/logic/handlers/spin-handler.d.ts.map +1 -0
- package/dist/logic/index.d.ts +6 -0
- package/dist/logic/index.d.ts.map +1 -0
- package/dist/logic/services/counter-manager.d.ts +60 -0
- package/dist/logic/services/counter-manager.d.ts.map +1 -0
- package/dist/logic/services/index.d.ts +7 -0
- package/dist/logic/services/index.d.ts.map +1 -0
- package/dist/logic/services/jackpot-manager.d.ts +59 -0
- package/dist/logic/services/jackpot-manager.d.ts.map +1 -0
- package/dist/logic/services/win-evaluator.d.ts +49 -0
- package/dist/logic/services/win-evaluator.d.ts.map +1 -0
- package/dist/logic/services/win-evaluator.js +9 -4
- package/dist/logic/services/win-evaluator.js.map +1 -1
- package/dist/rng/dummy-rng-client.d.ts +39 -0
- package/dist/rng/dummy-rng-client.d.ts.map +1 -0
- package/dist/rng/index.d.ts +10 -0
- package/dist/rng/index.d.ts.map +1 -0
- package/dist/rng/rng-client.factory.d.ts +33 -0
- package/dist/rng/rng-client.factory.d.ts.map +1 -0
- package/dist/rng/rng-client.interface.d.ts +51 -0
- package/dist/rng/rng-client.interface.d.ts.map +1 -0
- package/dist/rng/rng-service.d.ts +93 -0
- package/dist/rng/rng-service.d.ts.map +1 -0
- package/dist/rng/spin-generator.d.ts +31 -0
- package/dist/rng/spin-generator.d.ts.map +1 -0
- package/dist/rng/weighted-random.d.ts +30 -0
- package/dist/rng/weighted-random.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RNG Client Interface
|
|
3
|
+
*
|
|
4
|
+
* Contract for all RNG clients (local and external).
|
|
5
|
+
* Matches the pattern used in Heroes of Aether and Bonny's Fortune.
|
|
6
|
+
*/
|
|
7
|
+
export interface RngSingleResponse {
|
|
8
|
+
value: number;
|
|
9
|
+
seed: number;
|
|
10
|
+
}
|
|
11
|
+
export interface RngBatchResponse {
|
|
12
|
+
values: number[];
|
|
13
|
+
seeds: number[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* RNG Client Interface
|
|
17
|
+
*
|
|
18
|
+
* All RNG clients must implement this interface to ensure
|
|
19
|
+
* consistent behavior between local (testing) and external (production) clients.
|
|
20
|
+
*/
|
|
21
|
+
export interface IRngClient {
|
|
22
|
+
/**
|
|
23
|
+
* Generate a single random integer in range [min, max]
|
|
24
|
+
*/
|
|
25
|
+
getSingleNumber(min: number, max: number, seed?: number): Promise<RngSingleResponse>;
|
|
26
|
+
/**
|
|
27
|
+
* Generate multiple random integers in range [min, max]
|
|
28
|
+
*/
|
|
29
|
+
getBatchNumbers(min: number, max: number, count: number, seed?: number): Promise<number[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Generate multiple random integers with individual seeds
|
|
32
|
+
*/
|
|
33
|
+
getBatchNumbersWithSeeds(min: number, max: number, count: number, seed?: number): Promise<RngSingleResponse[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Generate a single random float in range [0, 1)
|
|
36
|
+
*/
|
|
37
|
+
getSingleFloat(seed?: number): Promise<RngSingleResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* Generate multiple random floats in range [0, 1)
|
|
40
|
+
*/
|
|
41
|
+
getBatchFloats(count: number, seed?: number): Promise<RngBatchResponse>;
|
|
42
|
+
/**
|
|
43
|
+
* Alternative method for single random number
|
|
44
|
+
*/
|
|
45
|
+
getRandomNumber(min: number, max: number, seed?: number): Promise<RngSingleResponse>;
|
|
46
|
+
/**
|
|
47
|
+
* Alternative method for single random float
|
|
48
|
+
*/
|
|
49
|
+
getRandomFloat(seed?: number): Promise<RngSingleResponse>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=rng-client.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rng-client.interface.d.ts","sourceRoot":"","sources":["../../src/rng/rng-client.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,eAAe,CACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B;;OAEG;IACH,eAAe,CACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAErB;;OAEG;IACH,wBAAwB,CACtB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE1D;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExE;;OAEG;IACH,eAAe,CACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B;;OAEG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC3D"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RNG Service
|
|
3
|
+
*
|
|
4
|
+
* Core RNG service with audit trail tracking for compliance.
|
|
5
|
+
* Wraps an IRngClient and tracks all RNG outcomes per command.
|
|
6
|
+
* Matches the pattern used in Heroes of Aether and Bonny's Fortune.
|
|
7
|
+
*/
|
|
8
|
+
import { IRngClient } from './rng-client.interface';
|
|
9
|
+
/**
|
|
10
|
+
* RNG outcome record for audit trail
|
|
11
|
+
*/
|
|
12
|
+
export interface RngOutcomeRecord {
|
|
13
|
+
result: number;
|
|
14
|
+
seed: number;
|
|
15
|
+
min: number;
|
|
16
|
+
max: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* RNG outcomes for a single command, keyed by action ID
|
|
20
|
+
*/
|
|
21
|
+
export type RngOutcome = {
|
|
22
|
+
[actionId: string]: RngOutcomeRecord;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* RNG Service
|
|
26
|
+
*
|
|
27
|
+
* Provides RNG operations with full audit trail tracking.
|
|
28
|
+
* Each command ID can have multiple action IDs, allowing fine-grained tracking
|
|
29
|
+
* of all RNG calls within a single game command.
|
|
30
|
+
*/
|
|
31
|
+
export declare class RngService {
|
|
32
|
+
private readonly rngClient;
|
|
33
|
+
private rngOutcomes;
|
|
34
|
+
constructor(rngClient: IRngClient);
|
|
35
|
+
/**
|
|
36
|
+
* Register a command for RNG tracking.
|
|
37
|
+
* Call this at the start of command processing.
|
|
38
|
+
*/
|
|
39
|
+
registerCommand(commandId: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Remove a command's RNG outcomes.
|
|
42
|
+
* Call this after command processing to clean up.
|
|
43
|
+
*/
|
|
44
|
+
removeCommand(commandId: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Check if a command has RNG outcomes
|
|
47
|
+
*/
|
|
48
|
+
hasCommandRngOutcome(commandId: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get the count of RNG outcomes for a command
|
|
51
|
+
*/
|
|
52
|
+
getRngOutcomeCountForCommand(commandId: string): number;
|
|
53
|
+
/**
|
|
54
|
+
* Store an RNG outcome for audit trail
|
|
55
|
+
*/
|
|
56
|
+
private storeSeedForCommand;
|
|
57
|
+
/**
|
|
58
|
+
* Get cached seed for a command/action (for replay scenarios)
|
|
59
|
+
*/
|
|
60
|
+
getSeedForCommand(commandId: string, actionId: string): number | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Get all RNG outcomes for a command
|
|
63
|
+
*/
|
|
64
|
+
getRngOutcomeForCommand(commandId: string): RngOutcome;
|
|
65
|
+
/**
|
|
66
|
+
* Get all RNG outcomes across all commands
|
|
67
|
+
*/
|
|
68
|
+
getAllRngOutcome(): {
|
|
69
|
+
[commandId: string]: RngOutcome;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Generate a single random integer in range [min, max]
|
|
73
|
+
* Tracks the outcome for audit trail
|
|
74
|
+
*/
|
|
75
|
+
getSingleNumber(min: number, max: number, commandId: string, actionId: string): Promise<{
|
|
76
|
+
value: number;
|
|
77
|
+
seed: number;
|
|
78
|
+
}>;
|
|
79
|
+
/**
|
|
80
|
+
* Generate multiple random integers in range [min, max]
|
|
81
|
+
* Each number is tracked individually with incrementing action IDs
|
|
82
|
+
*/
|
|
83
|
+
getBatchNumbers(min: number, max: number, count: number, commandId: string, actionId: string): Promise<{
|
|
84
|
+
value: number;
|
|
85
|
+
seed: number;
|
|
86
|
+
}[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Generate a weighted random selection
|
|
89
|
+
* Returns the index selected based on weights
|
|
90
|
+
*/
|
|
91
|
+
getWeightedRandomIndex(weights: number[], commandId: string, actionId: string): Promise<number>;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=rng-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rng-service.d.ts","sourceRoot":"","sources":["../../src/rng/rng-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAElE;;;;;;GAMG;AACH,qBAAa,UAAU;IAGT,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,WAAW,CAA2C;gBAEjC,SAAS,EAAE,UAAU;IAElD;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMxC;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAItC;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhD;;OAEG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAKvD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1E;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU;IAItD;;OAEG;IACH,gBAAgB,IAAI;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE;IAIvD;;;OAGG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAwB3C;;;OAGG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAgB7C;;;OAGG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;CAmBnB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spin Generator with Symbol Limitation System
|
|
3
|
+
*
|
|
4
|
+
* Generates 3x3 grids with weighted symbol distribution and limitation constraints.
|
|
5
|
+
* Each symbol type has a randomly selected maximum count (2, 4, 7, or 9).
|
|
6
|
+
*/
|
|
7
|
+
import { Symbol, SpinType } from '../config/happy-panda.config';
|
|
8
|
+
import { Grid, GameDirection, RngProvider } from '../domain/types';
|
|
9
|
+
/**
|
|
10
|
+
* Generate a grid with weighted symbols and limitation constraints.
|
|
11
|
+
*
|
|
12
|
+
* IMPORTANT: C++ logic requires limitations to be selected FIRST, then
|
|
13
|
+
* 3x3 check only happens if a symbol has limit=9 (max symbols).
|
|
14
|
+
*
|
|
15
|
+
* @param spinType Type of spin
|
|
16
|
+
* @param gameDirection Game direction
|
|
17
|
+
* @param rng RNG provider
|
|
18
|
+
* @param centerSymbol Optional fixed center symbol (for respin)
|
|
19
|
+
* @returns Generated 3x3 grid
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateGrid(spinType: SpinType, gameDirection: GameDirection, rng: RngProvider, centerSymbol?: Symbol): Promise<Grid>;
|
|
22
|
+
/**
|
|
23
|
+
* Generate cherry piece grid for jackpot bonus.
|
|
24
|
+
* Each position gets the appropriate piece symbol.
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateCherryPieceGrid(): Grid;
|
|
27
|
+
/**
|
|
28
|
+
* Check if grid is a complete cherry piece (jackpot).
|
|
29
|
+
*/
|
|
30
|
+
export declare function isCompleteCherryPiece(grid: Grid): boolean;
|
|
31
|
+
//# sourceMappingURL=spin-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spin-generator.d.ts","sourceRoot":"","sources":["../../src/rng/spin-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,MAAM,EACN,QAAQ,EA+BT,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAqHnE;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,WAAW,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAgJf;AA8ED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAM9C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAiBzD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Weighted Random Selection Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for weighted random selection using the RNG provider.
|
|
5
|
+
*/
|
|
6
|
+
import { RngProvider } from '../domain/types';
|
|
7
|
+
/**
|
|
8
|
+
* Select an index from an array of weights.
|
|
9
|
+
* @param weights Array of weights (must be positive integers)
|
|
10
|
+
* @param rng RNG provider
|
|
11
|
+
* @returns Selected index
|
|
12
|
+
*/
|
|
13
|
+
export declare function selectWeightedIndex(weights: readonly number[], rng: RngProvider): Promise<number>;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a weighted random selection succeeds.
|
|
16
|
+
* @param yesWeight Weight for "yes" outcome
|
|
17
|
+
* @param noWeight Weight for "no" outcome
|
|
18
|
+
* @param rng RNG provider
|
|
19
|
+
* @returns true if "yes" was selected
|
|
20
|
+
*/
|
|
21
|
+
export declare function weightedBoolean(yesWeight: number, noWeight: number, rng: RngProvider): Promise<boolean>;
|
|
22
|
+
/**
|
|
23
|
+
* Select multiple weighted indices (with replacement).
|
|
24
|
+
* @param weights Array of weights
|
|
25
|
+
* @param count Number of selections
|
|
26
|
+
* @param rng RNG provider
|
|
27
|
+
* @returns Array of selected indices
|
|
28
|
+
*/
|
|
29
|
+
export declare function selectMultipleWeighted(weights: readonly number[], count: number, rng: RngProvider): Promise<number[]>;
|
|
30
|
+
//# sourceMappingURL=weighted-random.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weighted-random.d.ts","sourceRoot":"","sources":["../../src/rng/weighted-random.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB"}
|