@omnitronix/bonnys-fortune-game-engine 1.3.2 → 1.5.0
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/README.md +25 -15
- package/dist/__tests__/base-game.test.js +255 -0
- package/dist/__tests__/base-game.test.js.map +1 -0
- package/dist/__tests__/bonnys-fortune-v1.game-engine.test.js +1 -1
- package/dist/__tests__/bonus-handlers.test.js +303 -0
- package/dist/__tests__/bonus-handlers.test.js.map +1 -0
- package/dist/__tests__/bonus-meters.test.js +508 -0
- package/dist/__tests__/bonus-meters.test.js.map +1 -0
- package/dist/__tests__/collect-feature-handler.test.js +386 -0
- package/dist/__tests__/collect-feature-handler.test.js.map +1 -0
- package/dist/__tests__/comprehensive.test.js +747 -0
- package/dist/__tests__/comprehensive.test.js.map +1 -0
- package/dist/__tests__/error-paths.test.js +373 -0
- package/dist/__tests__/error-paths.test.js.map +1 -0
- package/dist/__tests__/helpers/test-engine-factory.js +268 -0
- package/dist/__tests__/helpers/test-engine-factory.js.map +1 -0
- package/dist/__tests__/rng-gli19-compliance.test.js +292 -0
- package/dist/__tests__/rng-gli19-compliance.test.js.map +1 -0
- package/dist/__tests__/rng-security.test.js +383 -0
- package/dist/__tests__/rng-security.test.js.map +1 -0
- package/dist/__tests__/rtp-simulation.test.js +242 -0
- package/dist/__tests__/rtp-simulation.test.js.map +1 -0
- package/dist/__tests__/state-transitions.test.js +307 -0
- package/dist/__tests__/state-transitions.test.js.map +1 -0
- package/dist/__tests__/steering-fortune-handler.test.js +286 -0
- package/dist/__tests__/steering-fortune-handler.test.js.map +1 -0
- package/dist/__tests__/symbol-distribution.test.js +195 -0
- package/dist/__tests__/symbol-distribution.test.js.map +1 -0
- package/dist/__tests__/treasure-hunt-handler.test.js +295 -0
- package/dist/__tests__/treasure-hunt-handler.test.js.map +1 -0
- package/dist/__tests__/win-calculator.test.js +515 -0
- package/dist/__tests__/win-calculator.test.js.map +1 -0
- package/dist/bonnys-fortune-v1.game-engine.js +14 -25
- package/dist/bonnys-fortune-v1.game-engine.js.map +1 -1
- package/dist/config/game-logic-config/game-logic-config.js +0 -2
- package/dist/config/game-logic-config/game-logic-config.js.map +1 -1
- package/dist/domain/types/{cheat-trigger-bonus-command.js → debug-trigger-bonus-command.js} +1 -1
- package/dist/domain/types/debug-trigger-bonus-command.js.map +1 -0
- package/dist/domain/types/{cheat-trigger-bonus-request.dto.js → debug-trigger-bonus-request.dto.js} +1 -1
- package/dist/domain/types/debug-trigger-bonus-request.dto.js.map +1 -0
- package/dist/domain/types/{cheat-update-bonus-meter-progress-command.js → debug-update-bonus-meter-progress-command.js} +1 -1
- package/dist/domain/types/debug-update-bonus-meter-progress-command.js.map +1 -0
- package/dist/domain/types/{cheat-update-bonus-meter-progress-request.dto.js → debug-update-bonus-meter-progress-request.dto.js} +1 -1
- package/dist/domain/types/debug-update-bonus-meter-progress-request.dto.js.map +1 -0
- package/dist/index.js.map +1 -1
- package/dist/logic/bonnys-fortune.game-logic.js +37 -17
- package/dist/logic/bonnys-fortune.game-logic.js.map +1 -1
- package/dist/logic/handlers/base-game.handler.js +1 -5
- package/dist/logic/handlers/base-game.handler.js.map +1 -1
- package/dist/rng/DummyRngClient.js +8 -1
- package/dist/rng/DummyRngClient.js.map +1 -1
- package/dist/rng/rng-client.factory.js.map +1 -1
- package/dist/validation/bonnys-fortune/bonnys-fortune-config.dto.js +0 -9
- package/dist/validation/bonnys-fortune/bonnys-fortune-config.dto.js.map +1 -1
- package/package.json +6 -6
- package/dist/__tests__/bonnys-fortune-v1.game-engine.test.d.ts +0 -1
- package/dist/bonnys-fortune-v1.game-engine.d.ts +0 -36
- package/dist/config/game-logic-config/file-system.game-logic-config-loader.d.ts +0 -4
- package/dist/config/game-logic-config/game-logic-config-loader.d.ts +0 -3
- package/dist/config/game-logic-config/game-logic-config.d.ts +0 -2
- package/dist/config/reel-strips-config/file-system.reel-strips-config-loader.d.ts +0 -4
- package/dist/config/reel-strips-config/reel-strip-option.dto.d.ts +0 -4
- package/dist/config/reel-strips-config/reel-strips-config-loader.d.ts +0 -3
- package/dist/config/reel-strips-config/reel-strips-config.dto.d.ts +0 -5
- package/dist/config/reel-strips-config/reel.dto.d.ts +0 -5
- package/dist/domain/game-round.types.d.ts +0 -9
- package/dist/domain/mappers/reel-strips-config.mapper.d.ts +0 -4
- package/dist/domain/reel-strip-option.d.ts +0 -7
- package/dist/domain/reel-strips-config.d.ts +0 -9
- package/dist/domain/reel.d.ts +0 -8
- package/dist/domain/types/cheat-trigger-bonus-command.d.ts +0 -5
- package/dist/domain/types/cheat-trigger-bonus-command.js.map +0 -1
- package/dist/domain/types/cheat-trigger-bonus-request.dto.d.ts +0 -5
- package/dist/domain/types/cheat-trigger-bonus-request.dto.js.map +0 -1
- package/dist/domain/types/cheat-update-bonus-meter-progress-command.d.ts +0 -5
- package/dist/domain/types/cheat-update-bonus-meter-progress-command.js.map +0 -1
- package/dist/domain/types/cheat-update-bonus-meter-progress-request.dto.d.ts +0 -5
- package/dist/domain/types/cheat-update-bonus-meter-progress-request.dto.js.map +0 -1
- package/dist/domain/types/game-spin-command.d.ts +0 -8
- package/dist/domain/types/game-spin-input.dto.d.ts +0 -8
- package/dist/domain/types/game-spin-output.dto.d.ts +0 -119
- package/dist/domain/types/game-symbols.response.dto.d.ts +0 -10
- package/dist/domain/types/reel-strip-option.dto.d.ts +0 -4
- package/dist/domain/types/reel-strips-config.dto.d.ts +0 -5
- package/dist/domain/types/reel.dto.d.ts +0 -5
- package/dist/domain/types/start-bonus-round-command.d.ts +0 -8
- package/dist/domain/types/start-bonus-round-input.dto.d.ts +0 -10
- package/dist/game-engine.interface.d.ts +0 -41
- package/dist/helpers/generate-hash.d.ts +0 -1
- package/dist/helpers/number-helper.d.ts +0 -23
- package/dist/helpers/optional-boolean-mapper.d.ts +0 -1
- package/dist/helpers/uuid-helper.d.ts +0 -3
- package/dist/helpers/validation-helper.d.ts +0 -14
- package/dist/index.d.ts +0 -2
- package/dist/logger/logger.d.ts +0 -22
- package/dist/logger/logger.js +0 -140
- package/dist/logger/logger.js.map +0 -1
- package/dist/logic/bonnys-fortune.game-logic.d.ts +0 -32
- package/dist/logic/bonnys-fortune.spin-generator.d.ts +0 -19
- package/dist/logic/bonnys-fortune.types.d.ts +0 -170
- package/dist/logic/bonnys-fortune.win-calculator.d.ts +0 -10
- package/dist/logic/game-logic-config.interface.d.ts +0 -180
- package/dist/logic/handlers/base-game.handler.d.ts +0 -15
- package/dist/logic/handlers/collect-feature-bonus.handler.d.ts +0 -13
- package/dist/logic/handlers/free-spins-bonus.handler.d.ts +0 -11
- package/dist/logic/handlers/steering-to-the-fortune-bonus.handler.d.ts +0 -11
- package/dist/logic/handlers/treasure-hunt-bonus.handler.d.ts +0 -15
- package/dist/rng/DummyRngClient.d.ts +0 -18
- package/dist/rng/rng-client.factory.d.ts +0 -7
- package/dist/rng/rng-client.interface.d.ts +0 -16
- package/dist/rng/rng-service.d.ts +0 -26
- package/dist/validation/abstract-game-logic-config.validator.d.ts +0 -4
- package/dist/validation/bonnys-fortune/bonnys-fortune-config.dto.d.ts +0 -131
- package/dist/validation/bonnys-fortune/bonnys-fortune-config.validator.d.ts +0 -5
- package/dist/validation/custom-decorators/IsNestedIntArray.d.ts +0 -2
- package/dist/validation/game-logic-config-validation.service.d.ts +0 -8
- package/dist/validation/reel-strips-config-validation.service.d.ts +0 -5
- package/src/__tests__/bonnys-fortune-v1.game-engine.test.ts +0 -80
- package/src/bonnys-fortune-v1.game-engine.ts +0 -314
- package/src/config/game-logic-config/file-system.game-logic-config-loader.ts +0 -27
- package/src/config/game-logic-config/game-logic-config-loader.ts +0 -3
- package/src/config/game-logic-config/game-logic-config.ts +0 -382
- package/src/config/reel-strips-config/file-system.reel-strips-config-loader.ts +0 -43
- package/src/config/reel-strips-config/reel-strip-option.dto.ts +0 -13
- package/src/config/reel-strips-config/reel-strips-config-loader.ts +0 -9
- package/src/config/reel-strips-config/reel-strips-config.dto.ts +0 -16
- package/src/config/reel-strips-config/reel.dto.ts +0 -16
- package/src/config/reel-strips-config/reels-BASE.csv +0 -52
- package/src/config/reel-strips-config/reels-BONUS.csv +0 -52
- package/src/domain/game-round.types.ts +0 -10
- package/src/domain/mappers/reel-strips-config.mapper.ts +0 -16
- package/src/domain/reel-strip-option.ts +0 -15
- package/src/domain/reel-strips-config.ts +0 -21
- package/src/domain/reel.ts +0 -17
- package/src/domain/types/cheat-trigger-bonus-command.ts +0 -5
- package/src/domain/types/cheat-trigger-bonus-request.dto.ts +0 -5
- package/src/domain/types/cheat-update-bonus-meter-progress-command.ts +0 -6
- package/src/domain/types/cheat-update-bonus-meter-progress-request.dto.ts +0 -5
- package/src/domain/types/game-spin-command.ts +0 -8
- package/src/domain/types/game-spin-input.dto.ts +0 -8
- package/src/domain/types/game-spin-output.dto.ts +0 -142
- package/src/domain/types/game-symbols.response.dto.ts +0 -11
- package/src/domain/types/reel-strip-option.dto.ts +0 -13
- package/src/domain/types/reel-strips-config.dto.ts +0 -15
- package/src/domain/types/reel.dto.ts +0 -15
- package/src/domain/types/start-bonus-round-command.ts +0 -8
- package/src/domain/types/start-bonus-round-input.dto.ts +0 -10
- package/src/game-engine.interface.ts +0 -59
- package/src/helpers/generate-hash.ts +0 -5
- package/src/helpers/number-helper.ts +0 -41
- package/src/helpers/optional-boolean-mapper.ts +0 -5
- package/src/helpers/uuid-helper.ts +0 -7
- package/src/helpers/validation-helper.ts +0 -27
- package/src/index.ts +0 -3
- package/src/logger/logger.ts +0 -178
- package/src/logic/bonnys-fortune.game-logic.ts +0 -490
- package/src/logic/bonnys-fortune.spin-generator.ts +0 -277
- package/src/logic/bonnys-fortune.types.ts +0 -223
- package/src/logic/bonnys-fortune.win-calculator.ts +0 -210
- package/src/logic/game-logic-config.interface.ts +0 -176
- package/src/logic/handlers/base-game.handler.ts +0 -221
- package/src/logic/handlers/collect-feature-bonus.handler.ts +0 -301
- package/src/logic/handlers/free-spins-bonus.handler.ts +0 -119
- package/src/logic/handlers/steering-to-the-fortune-bonus.handler.ts +0 -118
- package/src/logic/handlers/treasure-hunt-bonus.handler.ts +0 -232
- package/src/rng/DummyRngClient.ts +0 -108
- package/src/rng/rng-client.factory.ts +0 -27
- package/src/rng/rng-client.interface.ts +0 -38
- package/src/rng/rng-service.ts +0 -130
- package/src/validation/abstract-game-logic-config.validator.ts +0 -20
- package/src/validation/bonnys-fortune/bonnys-fortune-config.dto.ts +0 -379
- package/src/validation/bonnys-fortune/bonnys-fortune-config.validator.ts +0 -8
- package/src/validation/custom-decorators/IsNestedIntArray.ts +0 -29
- package/src/validation/game-logic-config-validation.service.ts +0 -28
- package/src/validation/reel-strips-config-validation.service.ts +0 -29
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { BonnysFortunePrivateState, BonnysFortunePublicState } from './logic/bonnys-fortune.types';
|
|
2
|
-
import { CommandProcessingResult, GameActionCommand, GameEngine, GameEngineConfig, GameEngineInfo } from './game-engine.interface';
|
|
3
|
-
import { BonnysFortuneGameLogic } from './logic/bonnys-fortune.game-logic';
|
|
4
|
-
import { GameLogicConfigLoader } from './config/game-logic-config/game-logic-config-loader';
|
|
5
|
-
import { GameLogicConfigValidationService } from './validation/game-logic-config-validation.service';
|
|
6
|
-
import { Logger } from './logger/logger';
|
|
7
|
-
import { ReelStripsConfigLoader } from './config/reel-strips-config/reel-strips-config-loader';
|
|
8
|
-
import { ReelStripsConfigMapper } from './domain/mappers/reel-strips-config.mapper';
|
|
9
|
-
import { ReelStripsConfigValidationService } from './validation/reel-strips-config-validation.service';
|
|
10
|
-
import { RngService } from './rng/rng-service';
|
|
11
|
-
export declare class BonnysFortuneV1GameEngine implements GameEngine<BonnysFortunePublicState, BonnysFortunePrivateState, any> {
|
|
12
|
-
private readonly gameCode;
|
|
13
|
-
private readonly version;
|
|
14
|
-
private readonly rtp;
|
|
15
|
-
private readonly gameType;
|
|
16
|
-
private readonly gameName;
|
|
17
|
-
private readonly provider;
|
|
18
|
-
private config;
|
|
19
|
-
private reels;
|
|
20
|
-
readonly configOutPort: GameLogicConfigLoader;
|
|
21
|
-
readonly reelsOutPort: ReelStripsConfigLoader;
|
|
22
|
-
readonly configValidator: GameLogicConfigValidationService;
|
|
23
|
-
readonly reelsValidator: ReelStripsConfigValidationService;
|
|
24
|
-
readonly reelMapper: ReelStripsConfigMapper;
|
|
25
|
-
readonly gameLogic: BonnysFortuneGameLogic;
|
|
26
|
-
readonly rngService: RngService;
|
|
27
|
-
readonly logger: Logger;
|
|
28
|
-
constructor(config?: GameEngineConfig);
|
|
29
|
-
getGameEngineInfo(): GameEngineInfo;
|
|
30
|
-
private preload;
|
|
31
|
-
processCommand(publicState: BonnysFortunePublicState, privateState: BonnysFortunePrivateState, command: GameActionCommand): Promise<CommandProcessingResult<BonnysFortunePublicState, BonnysFortunePrivateState, any>>;
|
|
32
|
-
/**
|
|
33
|
-
* Resolves init session params from payload, falling back to game logic config when values are missing or invalid.
|
|
34
|
-
*/
|
|
35
|
-
private resolveInitGameConfig;
|
|
36
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ReelStripsConfigLoader } from './reel-strips-config-loader';
|
|
2
|
-
export declare class FileSystemReelStripsConfigLoader implements ReelStripsConfigLoader {
|
|
3
|
-
loadConfig(gameId: string, variantId: string, reelSetName: string, reelsCount: number, optionsCount: number): Promise<number[][][]>;
|
|
4
|
-
}
|
package/dist/domain/reel.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ReelStripOption } from './reel-strip-option';
|
|
2
|
-
export declare class Reel {
|
|
3
|
-
readonly options: ReelStripOption[];
|
|
4
|
-
constructor(options: ReelStripOption[]);
|
|
5
|
-
getOptions(): ReelStripOption[];
|
|
6
|
-
getOption(index: number): ReelStripOption;
|
|
7
|
-
get numberOfOptions(): number;
|
|
8
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cheat-trigger-bonus-command.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-trigger-bonus-command.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cheat-trigger-bonus-request.dto.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-trigger-bonus-request.dto.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cheat-update-bonus-meter-progress-command.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-update-bonus-meter-progress-command.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cheat-update-bonus-meter-progress-request.dto.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-update-bonus-meter-progress-request.dto.ts"],"names":[],"mappings":""}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
export declare enum SpinType {
|
|
2
|
-
BASE_GAME_SPIN = "BASE_GAME_SPIN",
|
|
3
|
-
BONUS_GAME_1_SPIN = "BONUS_GAME_1_SPIN",
|
|
4
|
-
BONUS_GAME_2_SPIN = "BONUS_GAME_2_SPIN",
|
|
5
|
-
BONUS_GAME_3_SPIN = "BONUS_GAME_3_SPIN",
|
|
6
|
-
COLLECT_FEATURE_SPIN = "COLLECT_FEATURE_SPIN"
|
|
7
|
-
}
|
|
8
|
-
export declare enum PrizeType {
|
|
9
|
-
MULTIPLIER = "MULTIPLIER",
|
|
10
|
-
BONUS = "BONUS"
|
|
11
|
-
}
|
|
12
|
-
/** Triggered bonus */
|
|
13
|
-
export interface TriggeredBonusDto {
|
|
14
|
-
bonusId: string;
|
|
15
|
-
bonusType: string;
|
|
16
|
-
betAmount: number;
|
|
17
|
-
}
|
|
18
|
-
/** Winning line */
|
|
19
|
-
export interface WinningLineDto {
|
|
20
|
-
win: number;
|
|
21
|
-
ways: number;
|
|
22
|
-
symbol: number;
|
|
23
|
-
positions: number[][];
|
|
24
|
-
multiplier: number;
|
|
25
|
-
consecutiveReels: number;
|
|
26
|
-
}
|
|
27
|
-
/** Win result */
|
|
28
|
-
export interface WinResultDto {
|
|
29
|
-
totalWin: number;
|
|
30
|
-
winningLines: WinningLineDto[];
|
|
31
|
-
}
|
|
32
|
-
/** Bonus meter */
|
|
33
|
-
export interface BonusMeterDto {
|
|
34
|
-
progress: number;
|
|
35
|
-
symbolId: number;
|
|
36
|
-
threshold: number;
|
|
37
|
-
symbolName: string;
|
|
38
|
-
}
|
|
39
|
-
/** Public state */
|
|
40
|
-
export interface PublicStateDto {
|
|
41
|
-
bonusMeters: Record<string, BonusMeterDto>;
|
|
42
|
-
}
|
|
43
|
-
/** Base Game Spin */
|
|
44
|
-
export interface BaseGameSpinResultDto {
|
|
45
|
-
spinType: SpinType;
|
|
46
|
-
screen: number[][];
|
|
47
|
-
winResult: WinResultDto;
|
|
48
|
-
playerWinning: number;
|
|
49
|
-
nextSpinType: SpinType;
|
|
50
|
-
triggeredBonus?: TriggeredBonusDto;
|
|
51
|
-
}
|
|
52
|
-
/** Treasure Hunt (Bonus Game 1) */
|
|
53
|
-
export interface TreasureHuntSpinResultDto {
|
|
54
|
-
spinType: SpinType;
|
|
55
|
-
selection: string;
|
|
56
|
-
multiplier: number;
|
|
57
|
-
multiplierCounts: Record<string, number>;
|
|
58
|
-
winningMultiplier: number | null;
|
|
59
|
-
winningCount: number;
|
|
60
|
-
totalMultiplier: number;
|
|
61
|
-
}
|
|
62
|
-
/** Free Spin (Bonus Game 2) */
|
|
63
|
-
export interface FreeSpinResultDto {
|
|
64
|
-
spinType: SpinType;
|
|
65
|
-
screen: number[][];
|
|
66
|
-
playerWinning: number;
|
|
67
|
-
nextSpinType: SpinType;
|
|
68
|
-
multiplier: number;
|
|
69
|
-
}
|
|
70
|
-
/** Steering to the Fortune (Bonus Game 3) */
|
|
71
|
-
export interface SteeringToTheFortuneResultDto {
|
|
72
|
-
spinType: SpinType;
|
|
73
|
-
playerWinning: number;
|
|
74
|
-
nextSpinType: SpinType;
|
|
75
|
-
prizeType: PrizeType;
|
|
76
|
-
prizeValue?: number | string;
|
|
77
|
-
totalMultiplier: number;
|
|
78
|
-
triggeredBonus?: TriggeredBonusDto;
|
|
79
|
-
}
|
|
80
|
-
/** Collect Feature Spin */
|
|
81
|
-
export interface CollectFeatureSpinResultDto {
|
|
82
|
-
spinIndex?: number;
|
|
83
|
-
spinType: SpinType;
|
|
84
|
-
symbols?: string[];
|
|
85
|
-
slashed?: boolean[];
|
|
86
|
-
currentValues?: number;
|
|
87
|
-
currentMultipliers?: number;
|
|
88
|
-
totalValues?: number;
|
|
89
|
-
totalMultipliers?: number;
|
|
90
|
-
playerWinning: number;
|
|
91
|
-
totalWin?: number;
|
|
92
|
-
spinsLeft?: number;
|
|
93
|
-
nextSpinType: SpinType;
|
|
94
|
-
}
|
|
95
|
-
export interface BaseGameSpinResultWrapperDto {
|
|
96
|
-
result: BaseGameSpinResultDto;
|
|
97
|
-
}
|
|
98
|
-
export interface FreeSpinResultWrapperDto {
|
|
99
|
-
result: FreeSpinResultDto;
|
|
100
|
-
}
|
|
101
|
-
export interface TreasureHuntSpinResultWrapperDto {
|
|
102
|
-
result: TreasureHuntSpinResultDto;
|
|
103
|
-
}
|
|
104
|
-
export interface SteeringToTheFortuneResultWrapperDto {
|
|
105
|
-
result: SteeringToTheFortuneResultDto;
|
|
106
|
-
}
|
|
107
|
-
export interface CollectFeatureSpinResultWrapperDto {
|
|
108
|
-
result: CollectFeatureSpinResultDto;
|
|
109
|
-
}
|
|
110
|
-
/** Game Spin Output DTO */
|
|
111
|
-
export interface GameSpinOutputDto {
|
|
112
|
-
sessionId: string;
|
|
113
|
-
balance: number;
|
|
114
|
-
betAmount: number;
|
|
115
|
-
balanceBeforeSpin: number;
|
|
116
|
-
outcome: BaseGameSpinResultWrapperDto;
|
|
117
|
-
publicState: PublicStateDto;
|
|
118
|
-
lastSpin: BaseGameSpinResultWrapperDto | FreeSpinResultWrapperDto | TreasureHuntSpinResultWrapperDto | SteeringToTheFortuneResultWrapperDto | CollectFeatureSpinResultWrapperDto | null;
|
|
119
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { RngClientConfig } from '@omnitronix/rng-client-core';
|
|
2
|
-
export type GameEngineMetricsHandlers = RngClientConfig['metrics']['handlers'];
|
|
3
|
-
export interface GameEngineConfig {
|
|
4
|
-
metrics?: {
|
|
5
|
-
handlers: GameEngineMetricsHandlers;
|
|
6
|
-
};
|
|
7
|
-
}
|
|
8
|
-
export interface GameEngineInfo {
|
|
9
|
-
gameCode: string;
|
|
10
|
-
version: string;
|
|
11
|
-
rtp: number;
|
|
12
|
-
gameType: string;
|
|
13
|
-
gameName: string;
|
|
14
|
-
provider: string;
|
|
15
|
-
}
|
|
16
|
-
export interface RngOutcomeRecord {
|
|
17
|
-
result: number;
|
|
18
|
-
seed: number;
|
|
19
|
-
min: number;
|
|
20
|
-
max: number;
|
|
21
|
-
}
|
|
22
|
-
export type RngOutcome = {
|
|
23
|
-
[actionId: string]: RngOutcomeRecord;
|
|
24
|
-
};
|
|
25
|
-
export interface CommandProcessingResult<TPublicState = any, TPrivateState = any, TOutcome = any> {
|
|
26
|
-
success: boolean;
|
|
27
|
-
publicState: TPublicState;
|
|
28
|
-
privateState: TPrivateState;
|
|
29
|
-
outcome?: TOutcome;
|
|
30
|
-
message?: string;
|
|
31
|
-
rngOutcome?: RngOutcome;
|
|
32
|
-
}
|
|
33
|
-
export interface GameActionCommand<TPayload = any> {
|
|
34
|
-
id: string;
|
|
35
|
-
type: string;
|
|
36
|
-
payload?: TPayload;
|
|
37
|
-
}
|
|
38
|
-
export interface GameEngine<TPublicState = any, TPrivateState = any, TOutcome = any> {
|
|
39
|
-
processCommand(publicState: TPublicState, privateState: TPrivateState, command: GameActionCommand): Promise<CommandProcessingResult<TPublicState, TPrivateState, TOutcome>>;
|
|
40
|
-
getGameEngineInfo(): GameEngineInfo;
|
|
41
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const generateHash: (input: string) => string;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare class NumberHelper {
|
|
2
|
-
/**
|
|
3
|
-
* Safely formats a number to the specified decimal places,
|
|
4
|
-
* minimizing floating-point issues.
|
|
5
|
-
*/
|
|
6
|
-
static toFixedNumber(value: number, decimals: number): number;
|
|
7
|
-
/**
|
|
8
|
-
* Safely adds two numbers and formats result.
|
|
9
|
-
*/
|
|
10
|
-
static safeSum(a: number, b: number, decimals: number): number;
|
|
11
|
-
/**
|
|
12
|
-
* Safely multiplies two numbers and formats result.
|
|
13
|
-
*/
|
|
14
|
-
static safeMultiply(a: number, b: number, decimals: number): number;
|
|
15
|
-
/**
|
|
16
|
-
* Clamps a number between min and max.
|
|
17
|
-
*/
|
|
18
|
-
static clamp(value: number, min: number, max: number): number;
|
|
19
|
-
/**
|
|
20
|
-
* Safely divides two numbers.
|
|
21
|
-
*/
|
|
22
|
-
static safeDivide(a: number, b: number, decimals: number): number;
|
|
23
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const optionalBooleanMapper: Map<string, boolean>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ValidationError } from 'class-validator';
|
|
2
|
-
export declare class ValidationHelper {
|
|
3
|
-
static readonly validationOptions: {
|
|
4
|
-
whitelist: boolean;
|
|
5
|
-
forbidNonWhitelisted: boolean;
|
|
6
|
-
};
|
|
7
|
-
static readonly validationOptionsWithoutForbidden: {
|
|
8
|
-
whitelist: boolean;
|
|
9
|
-
forbidNonWhitelisted: boolean;
|
|
10
|
-
};
|
|
11
|
-
static validate<T extends object>(dto: T): Promise<ValidationError[]>;
|
|
12
|
-
static validateWithoutForbidden<T extends object>(dto: T): Promise<ValidationError[]>;
|
|
13
|
-
static isPlainObject(value: unknown): value is Record<string, any>;
|
|
14
|
-
}
|
package/dist/index.d.ts
DELETED
package/dist/logger/logger.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
type LogFormat = 'json' | 'pretty';
|
|
2
|
-
export declare class Logger {
|
|
3
|
-
private readonly logger;
|
|
4
|
-
private context;
|
|
5
|
-
constructor(context: string, logFormat?: LogFormat);
|
|
6
|
-
private detectLogFormat;
|
|
7
|
-
private createWinstonLogger;
|
|
8
|
-
private getLogFormat;
|
|
9
|
-
private selectFormat;
|
|
10
|
-
private getJsonFormat;
|
|
11
|
-
private getPrettyFormat;
|
|
12
|
-
private safeStringify;
|
|
13
|
-
private getTransports;
|
|
14
|
-
log(message: any, { level, ...rest }?: {
|
|
15
|
-
level?: string;
|
|
16
|
-
} & Record<string, any>): void;
|
|
17
|
-
error(message: any, ...optionalParams: any[]): void;
|
|
18
|
-
warn(message: any, ...optionalParams: any[]): void;
|
|
19
|
-
debug(message: any, ...optionalParams: any[]): void;
|
|
20
|
-
verbose(message: any, ...optionalParams: any[]): void;
|
|
21
|
-
}
|
|
22
|
-
export {};
|
package/dist/logger/logger.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Logger = void 0;
|
|
4
|
-
const winston_1 = require("winston");
|
|
5
|
-
class Logger {
|
|
6
|
-
constructor(context, logFormat) {
|
|
7
|
-
this.context = context;
|
|
8
|
-
const format = logFormat ?? this.detectLogFormat();
|
|
9
|
-
this.logger = this.createWinstonLogger(format);
|
|
10
|
-
}
|
|
11
|
-
detectLogFormat() {
|
|
12
|
-
const envFormat = process.env.LOG_FORMAT?.toLowerCase();
|
|
13
|
-
switch (envFormat) {
|
|
14
|
-
case 'pretty':
|
|
15
|
-
return 'pretty';
|
|
16
|
-
case 'json':
|
|
17
|
-
return 'json';
|
|
18
|
-
default:
|
|
19
|
-
return 'json';
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
createWinstonLogger(logFormat) {
|
|
23
|
-
const winstonFormat = this.getLogFormat(logFormat);
|
|
24
|
-
return (0, winston_1.createLogger)({
|
|
25
|
-
level: 'info',
|
|
26
|
-
format: winstonFormat,
|
|
27
|
-
transports: this.getTransports(),
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
getLogFormat(logFormat) {
|
|
31
|
-
return winston_1.format.combine(winston_1.format.timestamp(), this.selectFormat(logFormat));
|
|
32
|
-
}
|
|
33
|
-
selectFormat(logFormat) {
|
|
34
|
-
switch (logFormat) {
|
|
35
|
-
case 'pretty':
|
|
36
|
-
return this.getPrettyFormat();
|
|
37
|
-
case 'json':
|
|
38
|
-
return this.getJsonFormat();
|
|
39
|
-
default:
|
|
40
|
-
return this.getJsonFormat();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
getJsonFormat() {
|
|
44
|
-
return winston_1.format.combine((0, winston_1.format)((info) => {
|
|
45
|
-
if (this.context) {
|
|
46
|
-
info.message = `[${this.context}] ${info.message}`;
|
|
47
|
-
}
|
|
48
|
-
return info;
|
|
49
|
-
})(), winston_1.format.json());
|
|
50
|
-
}
|
|
51
|
-
getPrettyFormat() {
|
|
52
|
-
return winston_1.format.combine(winston_1.format.colorize(), winston_1.format.printf(({ timestamp, level, message, error, ...meta }) => {
|
|
53
|
-
const contextStr = this.context ? `[${this.context}] ` : '';
|
|
54
|
-
let output = `${timestamp} ${level}: ${contextStr}${message}`;
|
|
55
|
-
if (error &&
|
|
56
|
-
typeof error === 'object' &&
|
|
57
|
-
'name' in error &&
|
|
58
|
-
'message' in error) {
|
|
59
|
-
output += `\n Error: ${error.name}: ${error.message}`;
|
|
60
|
-
if (error.name === 'DomainException' && 'errorCode' in error) {
|
|
61
|
-
output += `\n Internal Code: ${error.errorCode}`;
|
|
62
|
-
}
|
|
63
|
-
if ('stack' in error && error.stack) {
|
|
64
|
-
output += `\n Stack: ${error.stack}`;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
const metaKeys = Object.keys(meta).filter((key) => key !== 'timestamp' && key !== 'level' && key !== 'message');
|
|
68
|
-
if (metaKeys.length > 0) {
|
|
69
|
-
output += `\n Meta: ${JSON.stringify(meta, null, 2)}`;
|
|
70
|
-
}
|
|
71
|
-
return output;
|
|
72
|
-
}));
|
|
73
|
-
}
|
|
74
|
-
safeStringify(obj) {
|
|
75
|
-
try {
|
|
76
|
-
return JSON.stringify(obj, (key, value) => {
|
|
77
|
-
if (typeof value === 'bigint') {
|
|
78
|
-
return value.toString();
|
|
79
|
-
}
|
|
80
|
-
return value;
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
return '[Object cannot be serialized]';
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
getTransports() {
|
|
88
|
-
return [
|
|
89
|
-
new winston_1.transports.Console(),
|
|
90
|
-
new winston_1.transports.File({ filename: 'logs/app.log' }),
|
|
91
|
-
];
|
|
92
|
-
}
|
|
93
|
-
log(message, { level = 'info', ...rest } = {}) {
|
|
94
|
-
switch (level) {
|
|
95
|
-
case 'error':
|
|
96
|
-
this.logger.error(message, rest);
|
|
97
|
-
break;
|
|
98
|
-
case 'warn':
|
|
99
|
-
this.logger.warn(message, rest);
|
|
100
|
-
break;
|
|
101
|
-
case 'debug':
|
|
102
|
-
this.logger.debug(message, rest);
|
|
103
|
-
break;
|
|
104
|
-
case 'verbose':
|
|
105
|
-
this.logger.verbose(message, rest);
|
|
106
|
-
break;
|
|
107
|
-
default:
|
|
108
|
-
this.logger.info(message, rest);
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
error(message, ...optionalParams) {
|
|
113
|
-
if (optionalParams.length > 0 && optionalParams[0] instanceof Error) {
|
|
114
|
-
const error = optionalParams[0];
|
|
115
|
-
const errorData = {
|
|
116
|
-
name: error.name,
|
|
117
|
-
message: error.message,
|
|
118
|
-
stack: error.stack,
|
|
119
|
-
};
|
|
120
|
-
this.logger.error(message, {
|
|
121
|
-
error: errorData,
|
|
122
|
-
...optionalParams.slice(1),
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
this.logger.error(message, ...optionalParams);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
warn(message, ...optionalParams) {
|
|
130
|
-
this.logger.warn(message, ...optionalParams);
|
|
131
|
-
}
|
|
132
|
-
debug(message, ...optionalParams) {
|
|
133
|
-
this.logger.debug(message, ...optionalParams);
|
|
134
|
-
}
|
|
135
|
-
verbose(message, ...optionalParams) {
|
|
136
|
-
this.logger.verbose(message, ...optionalParams);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
exports.Logger = Logger;
|
|
140
|
-
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"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"}
|