@omnitronix/lucky-sharky-game-engine 1.0.3 → 1.0.4
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 +1 -3
- package/dist/__tests__/comprehensive.test.d.ts +15 -0
- package/dist/__tests__/comprehensive.test.d.ts.map +1 -0
- package/dist/__tests__/comprehensive.test.js +510 -0
- package/dist/__tests__/comprehensive.test.js.map +1 -0
- package/dist/__tests__/debug-trigger-bonus.test.d.ts +8 -0
- package/dist/__tests__/debug-trigger-bonus.test.d.ts.map +1 -0
- package/dist/__tests__/{cheat-trigger-bonus.test.js → debug-trigger-bonus.test.js} +71 -73
- package/dist/__tests__/debug-trigger-bonus.test.js.map +1 -0
- package/dist/domain/types/debug-trigger-bonus-command.d.ts +10 -0
- package/dist/domain/types/debug-trigger-bonus-command.d.ts.map +1 -0
- 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/logic/lucky-sharky.game-logic.d.ts +9 -5
- package/dist/logic/lucky-sharky.game-logic.d.ts.map +1 -1
- package/dist/logic/lucky-sharky.game-logic.js +36 -5
- package/dist/logic/lucky-sharky.game-logic.js.map +1 -1
- package/dist/logic/lucky-sharky.types.d.ts +1 -0
- package/dist/logic/lucky-sharky.types.d.ts.map +1 -1
- package/dist/logic/lucky-sharky.types.js.map +1 -1
- package/dist/lucky-sharky-v1.game-engine.d.ts.map +1 -1
- package/dist/lucky-sharky-v1.game-engine.js +10 -22
- package/dist/lucky-sharky-v1.game-engine.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/cheat-trigger-bonus.test.d.ts +0 -10
- package/dist/__tests__/cheat-trigger-bonus.test.d.ts.map +0 -1
- package/dist/__tests__/cheat-trigger-bonus.test.js.map +0 -1
- package/dist/domain/types/cheat-trigger-bonus-command.d.ts +0 -15
- package/dist/domain/types/cheat-trigger-bonus-command.d.ts.map +0 -1
- package/dist/domain/types/cheat-trigger-bonus-command.js.map +0 -1
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
* DEBUG_TRIGGER_BONUS Command Tests (GLI-19 compliant terminology)
|
|
4
4
|
*
|
|
5
5
|
* Tests for the dev-tools debug command that triggers bonus rounds for testing.
|
|
6
|
-
* Tests the LuckySharkyGameLogic.
|
|
7
|
-
* Note: Method name kept as cheatTriggerBonus for backward compatibility,
|
|
8
|
-
* but command type is DEBUG_TRIGGER_BONUS (with CHEAT_TRIGGER_BONUS supported for legacy).
|
|
6
|
+
* Tests the LuckySharkyGameLogic.debugTriggerBonus method directly.
|
|
9
7
|
*/
|
|
10
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
9
|
const lucky_sharky_game_logic_1 = require("../logic/lucky-sharky.game-logic");
|
|
@@ -53,9 +51,9 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
53
51
|
};
|
|
54
52
|
}
|
|
55
53
|
/**
|
|
56
|
-
* Creates a
|
|
54
|
+
* Creates a DebugTriggerBonusCommand payload
|
|
57
55
|
*/
|
|
58
|
-
function
|
|
56
|
+
function createDebugTriggerBonusParams(bonusType, betAmount = 1, sessionId = 'test-session-123') {
|
|
59
57
|
return {
|
|
60
58
|
sessionId,
|
|
61
59
|
bonusType,
|
|
@@ -66,8 +64,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
66
64
|
it('should successfully trigger FREE_SPINS bonus', () => {
|
|
67
65
|
const publicState = createInitializedPublicState();
|
|
68
66
|
const privateState = createInitializedPrivateState();
|
|
69
|
-
const params =
|
|
70
|
-
const result = gameLogic.
|
|
67
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
68
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
71
69
|
expect(result).toBeDefined();
|
|
72
70
|
expect(result.publicState).toBeDefined();
|
|
73
71
|
expect(result.privateState).toBeDefined();
|
|
@@ -76,15 +74,15 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
76
74
|
it('should set nextSpinType to FREE_SPIN', () => {
|
|
77
75
|
const publicState = createInitializedPublicState();
|
|
78
76
|
const privateState = createInitializedPrivateState();
|
|
79
|
-
const params =
|
|
80
|
-
const result = gameLogic.
|
|
77
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
78
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
81
79
|
expect(result.privateState.nextSpinType).toBe(lucky_sharky_types_1.SpinType.FREE_SPIN);
|
|
82
80
|
});
|
|
83
81
|
it('should add FREE_SPINS bonus to pendingBonuses array', () => {
|
|
84
82
|
const publicState = createInitializedPublicState();
|
|
85
83
|
const privateState = createInitializedPrivateState();
|
|
86
|
-
const params =
|
|
87
|
-
const result = gameLogic.
|
|
84
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
85
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
88
86
|
expect(result.privateState.pendingBonuses).toHaveLength(1);
|
|
89
87
|
expect(result.privateState.pendingBonuses[0].bonusType).toBe(lucky_sharky_types_1.BonusType.FREE_SPINS);
|
|
90
88
|
});
|
|
@@ -92,14 +90,14 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
92
90
|
const publicState = createInitializedPublicState();
|
|
93
91
|
const privateState = createInitializedPrivateState();
|
|
94
92
|
const betAmount = 5;
|
|
95
|
-
const params =
|
|
96
|
-
const result = gameLogic.
|
|
93
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', betAmount);
|
|
94
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
97
95
|
expect(result.outcome).toBeDefined();
|
|
98
96
|
expect(result.outcome.triggeredBonus).toBeDefined();
|
|
99
97
|
expect(result.outcome.triggeredBonus.bonusType).toBe('FREE_SPINS');
|
|
100
98
|
expect(result.outcome.triggeredBonus.betAmount).toBe(betAmount);
|
|
101
99
|
expect(result.outcome.triggeredBonus.bonusId).toBeDefined();
|
|
102
|
-
expect(result.outcome.triggeredBonus.bonusId).toMatch(/^
|
|
100
|
+
expect(result.outcome.triggeredBonus.bonusId).toMatch(/^debug-/);
|
|
103
101
|
});
|
|
104
102
|
it('should preserve existing publicState', () => {
|
|
105
103
|
const publicState = {
|
|
@@ -108,8 +106,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
108
106
|
coinValues: [1, 2, 3],
|
|
109
107
|
};
|
|
110
108
|
const privateState = createInitializedPrivateState();
|
|
111
|
-
const params =
|
|
112
|
-
const result = gameLogic.
|
|
109
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
110
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
113
111
|
expect(result.publicState.boosterLevel).toBe(5);
|
|
114
112
|
expect(result.publicState.freeSpinsRemaining).toBe(3);
|
|
115
113
|
expect(result.publicState.coinValues).toEqual([1, 2, 3]);
|
|
@@ -118,8 +116,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
118
116
|
const publicState = createInitializedPublicState();
|
|
119
117
|
const privateState = createInitializedPrivateState();
|
|
120
118
|
const betAmount = 10;
|
|
121
|
-
const params =
|
|
122
|
-
const result = gameLogic.
|
|
119
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', betAmount);
|
|
120
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
123
121
|
expect(result.privateState.pendingBonuses[0].betAmount).toBe(betAmount);
|
|
124
122
|
});
|
|
125
123
|
});
|
|
@@ -127,8 +125,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
127
125
|
it('should successfully trigger HOLD_WIN_BONUS', () => {
|
|
128
126
|
const publicState = createInitializedPublicState();
|
|
129
127
|
const privateState = createInitializedPrivateState();
|
|
130
|
-
const params =
|
|
131
|
-
const result = gameLogic.
|
|
128
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', 1);
|
|
129
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
132
130
|
expect(result).toBeDefined();
|
|
133
131
|
expect(result.publicState).toBeDefined();
|
|
134
132
|
expect(result.privateState).toBeDefined();
|
|
@@ -137,15 +135,15 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
137
135
|
it('should set nextSpinType to HOLD_WIN_BONUS_SPIN', () => {
|
|
138
136
|
const publicState = createInitializedPublicState();
|
|
139
137
|
const privateState = createInitializedPrivateState();
|
|
140
|
-
const params =
|
|
141
|
-
const result = gameLogic.
|
|
138
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', 1);
|
|
139
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
142
140
|
expect(result.privateState.nextSpinType).toBe(lucky_sharky_types_1.SpinType.HOLD_WIN_BONUS_SPIN);
|
|
143
141
|
});
|
|
144
142
|
it('should add HOLD_WIN_BONUS to pendingBonuses array', () => {
|
|
145
143
|
const publicState = createInitializedPublicState();
|
|
146
144
|
const privateState = createInitializedPrivateState();
|
|
147
|
-
const params =
|
|
148
|
-
const result = gameLogic.
|
|
145
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', 1);
|
|
146
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
149
147
|
expect(result.privateState.pendingBonuses).toHaveLength(1);
|
|
150
148
|
expect(result.privateState.pendingBonuses[0].bonusType).toBe(lucky_sharky_types_1.BonusType.HOLD_WIN_BONUS);
|
|
151
149
|
});
|
|
@@ -153,8 +151,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
153
151
|
const publicState = createInitializedPublicState();
|
|
154
152
|
const privateState = createInitializedPrivateState();
|
|
155
153
|
const betAmount = 20;
|
|
156
|
-
const params =
|
|
157
|
-
const result = gameLogic.
|
|
154
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', betAmount);
|
|
155
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
158
156
|
expect(result.outcome).toBeDefined();
|
|
159
157
|
expect(result.outcome.triggeredBonus).toBeDefined();
|
|
160
158
|
expect(result.outcome.triggeredBonus.bonusType).toBe('HOLD_WIN_BONUS');
|
|
@@ -172,8 +170,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
172
170
|
...createInitializedPrivateState(),
|
|
173
171
|
pendingBonuses: [existingBonus],
|
|
174
172
|
};
|
|
175
|
-
const params =
|
|
176
|
-
const result = gameLogic.
|
|
173
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', 10);
|
|
174
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
177
175
|
expect(result.privateState.pendingBonuses).toHaveLength(2);
|
|
178
176
|
expect(result.privateState.pendingBonuses[0]).toEqual(existingBonus);
|
|
179
177
|
expect(result.privateState.pendingBonuses[1].bonusType).toBe(lucky_sharky_types_1.BonusType.HOLD_WIN_BONUS);
|
|
@@ -182,8 +180,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
182
180
|
const publicState = createInitializedPublicState();
|
|
183
181
|
const privateState = createInitializedPrivateState();
|
|
184
182
|
const betAmount = 100;
|
|
185
|
-
const params =
|
|
186
|
-
const result = gameLogic.
|
|
183
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', betAmount);
|
|
184
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
187
185
|
expect(result.privateState.pendingBonuses[0].betAmount).toBe(betAmount);
|
|
188
186
|
});
|
|
189
187
|
});
|
|
@@ -198,7 +196,7 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
198
196
|
betAmount: 1,
|
|
199
197
|
};
|
|
200
198
|
expect(() => {
|
|
201
|
-
gameLogic.
|
|
199
|
+
gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
202
200
|
}).toThrow('Unknown bonus type: UNKNOWN_BONUS');
|
|
203
201
|
});
|
|
204
202
|
it('should throw error for empty bonusType', () => {
|
|
@@ -210,7 +208,7 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
210
208
|
betAmount: 1,
|
|
211
209
|
};
|
|
212
210
|
expect(() => {
|
|
213
|
-
gameLogic.
|
|
211
|
+
gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
214
212
|
}).toThrow('Unknown bonus type:');
|
|
215
213
|
});
|
|
216
214
|
it('should throw error for null bonusType', () => {
|
|
@@ -222,47 +220,47 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
222
220
|
betAmount: 1,
|
|
223
221
|
};
|
|
224
222
|
expect(() => {
|
|
225
|
-
gameLogic.
|
|
223
|
+
gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
226
224
|
}).toThrow('Unknown bonus type');
|
|
227
225
|
});
|
|
228
226
|
});
|
|
229
227
|
describe('State not initialized', () => {
|
|
230
228
|
it('should handle null publicState by returning null publicState', () => {
|
|
231
229
|
const privateState = createInitializedPrivateState();
|
|
232
|
-
const params =
|
|
233
|
-
// The
|
|
234
|
-
const result = gameLogic.
|
|
230
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
231
|
+
// The debugTriggerBonus method returns publicState as-is
|
|
232
|
+
const result = gameLogic.debugTriggerBonus(null, privateState, params);
|
|
235
233
|
expect(result.publicState).toBeNull();
|
|
236
234
|
expect(result.privateState).toBeDefined();
|
|
237
235
|
});
|
|
238
236
|
it('should handle undefined publicState by returning undefined publicState', () => {
|
|
239
237
|
const privateState = createInitializedPrivateState();
|
|
240
|
-
const params =
|
|
241
|
-
const result = gameLogic.
|
|
238
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
239
|
+
const result = gameLogic.debugTriggerBonus(undefined, privateState, params);
|
|
242
240
|
expect(result.publicState).toBeUndefined();
|
|
243
241
|
});
|
|
244
242
|
it('should throw error when privateState is null', () => {
|
|
245
243
|
const publicState = createInitializedPublicState();
|
|
246
|
-
const params =
|
|
244
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
247
245
|
// When privateState is null, spreading pendingBonuses will throw
|
|
248
246
|
expect(() => {
|
|
249
|
-
gameLogic.
|
|
247
|
+
gameLogic.debugTriggerBonus(publicState, null, params);
|
|
250
248
|
}).toThrow();
|
|
251
249
|
});
|
|
252
250
|
it('should throw error when privateState is undefined', () => {
|
|
253
251
|
const publicState = createInitializedPublicState();
|
|
254
|
-
const params =
|
|
252
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
255
253
|
expect(() => {
|
|
256
|
-
gameLogic.
|
|
254
|
+
gameLogic.debugTriggerBonus(publicState, undefined, params);
|
|
257
255
|
}).toThrow();
|
|
258
256
|
});
|
|
259
257
|
it('should throw error when privateState has no pendingBonuses array', () => {
|
|
260
258
|
const publicState = createInitializedPublicState();
|
|
261
259
|
const emptyPrivateState = {};
|
|
262
|
-
const params =
|
|
260
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
263
261
|
// Spreading undefined pendingBonuses will cause issues
|
|
264
262
|
expect(() => {
|
|
265
|
-
gameLogic.
|
|
263
|
+
gameLogic.debugTriggerBonus(publicState, emptyPrivateState, params);
|
|
266
264
|
}).toThrow();
|
|
267
265
|
});
|
|
268
266
|
});
|
|
@@ -272,18 +270,18 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
272
270
|
const publicState = createInitializedPublicState();
|
|
273
271
|
const privateState1 = createInitializedPrivateState();
|
|
274
272
|
const privateState2 = createInitializedPrivateState();
|
|
275
|
-
const params1 =
|
|
276
|
-
const params2 =
|
|
277
|
-
const result1 = gameLogic.
|
|
278
|
-
const result2 = gameLogic.
|
|
273
|
+
const params1 = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
274
|
+
const params2 = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
275
|
+
const result1 = gameLogic.debugTriggerBonus(publicState, privateState1, params1);
|
|
276
|
+
const result2 = gameLogic.debugTriggerBonus(publicState, privateState2, params2);
|
|
279
277
|
expect(result1.outcome.triggeredBonus.bonusId).not.toBe(result2.outcome.triggeredBonus.bonusId);
|
|
280
278
|
});
|
|
281
279
|
it('should correctly set pendingBonus with all required fields', () => {
|
|
282
280
|
const publicState = createInitializedPublicState();
|
|
283
281
|
const privateState = createInitializedPrivateState();
|
|
284
282
|
const betAmount = 50;
|
|
285
|
-
const params =
|
|
286
|
-
const result = gameLogic.
|
|
283
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', betAmount);
|
|
284
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
287
285
|
const pendingBonus = result.privateState.pendingBonuses[0];
|
|
288
286
|
expect(pendingBonus).toHaveProperty('bonusId');
|
|
289
287
|
expect(pendingBonus).toHaveProperty('bonusType');
|
|
@@ -303,8 +301,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
303
301
|
screen: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 1, 2], [3, 4, 5]],
|
|
304
302
|
lastBetAmount: 10,
|
|
305
303
|
};
|
|
306
|
-
const params =
|
|
307
|
-
const result = gameLogic.
|
|
304
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', 1);
|
|
305
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
308
306
|
// Verify other fields are preserved
|
|
309
307
|
expect(result.privateState.boosterLevel).toBe(3);
|
|
310
308
|
expect(result.privateState.boosterMemory).toBe(2);
|
|
@@ -317,8 +315,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
317
315
|
it('should match bonusId between outcome and pendingBonuses', () => {
|
|
318
316
|
const publicState = createInitializedPublicState();
|
|
319
317
|
const privateState = createInitializedPrivateState();
|
|
320
|
-
const params =
|
|
321
|
-
const result = gameLogic.
|
|
318
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
319
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
322
320
|
expect(result.outcome.triggeredBonus.bonusId).toBe(result.privateState.pendingBonuses[result.privateState.pendingBonuses.length - 1].bonusId);
|
|
323
321
|
});
|
|
324
322
|
});
|
|
@@ -328,8 +326,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
328
326
|
const betAmounts = [0.1, 1, 5, 10, 50, 100, 1000];
|
|
329
327
|
for (const betAmount of betAmounts) {
|
|
330
328
|
const privateState = createInitializedPrivateState();
|
|
331
|
-
const params =
|
|
332
|
-
const result = gameLogic.
|
|
329
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', betAmount);
|
|
330
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
333
331
|
expect(result.outcome.triggeredBonus.betAmount).toBe(betAmount);
|
|
334
332
|
expect(result.privateState.pendingBonuses[0].betAmount).toBe(betAmount);
|
|
335
333
|
}
|
|
@@ -337,17 +335,17 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
337
335
|
it('should work with zero bet amount', () => {
|
|
338
336
|
const publicState = createInitializedPublicState();
|
|
339
337
|
const privateState = createInitializedPrivateState();
|
|
340
|
-
const params =
|
|
341
|
-
const result = gameLogic.
|
|
338
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 0);
|
|
339
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
342
340
|
expect(result.outcome.triggeredBonus.betAmount).toBe(0);
|
|
343
341
|
expect(result.privateState.pendingBonuses[0].betAmount).toBe(0);
|
|
344
342
|
});
|
|
345
343
|
it('should work with negative bet amount (edge case)', () => {
|
|
346
344
|
const publicState = createInitializedPublicState();
|
|
347
345
|
const privateState = createInitializedPrivateState();
|
|
348
|
-
const params =
|
|
346
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', -5);
|
|
349
347
|
// Method does not validate bet amount
|
|
350
|
-
const result = gameLogic.
|
|
348
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
351
349
|
expect(result.outcome.triggeredBonus.betAmount).toBe(-5);
|
|
352
350
|
});
|
|
353
351
|
});
|
|
@@ -356,24 +354,24 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
356
354
|
const publicState = createInitializedPublicState();
|
|
357
355
|
const privateState = createInitializedPrivateState();
|
|
358
356
|
const sessionId = 'custom-session-abc-123';
|
|
359
|
-
const params =
|
|
360
|
-
const result = gameLogic.
|
|
357
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', 1, sessionId);
|
|
358
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
361
359
|
expect(result).toBeDefined();
|
|
362
360
|
expect(result.outcome.triggeredBonus).toBeDefined();
|
|
363
361
|
});
|
|
364
362
|
it('should work with empty session ID', () => {
|
|
365
363
|
const publicState = createInitializedPublicState();
|
|
366
364
|
const privateState = createInitializedPrivateState();
|
|
367
|
-
const params =
|
|
368
|
-
const result = gameLogic.
|
|
365
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', 1, '');
|
|
366
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
369
367
|
expect(result).toBeDefined();
|
|
370
368
|
});
|
|
371
369
|
it('should work with very long session ID', () => {
|
|
372
370
|
const publicState = createInitializedPublicState();
|
|
373
371
|
const privateState = createInitializedPrivateState();
|
|
374
372
|
const longSessionId = 'a'.repeat(1000);
|
|
375
|
-
const params =
|
|
376
|
-
const result = gameLogic.
|
|
373
|
+
const params = createDebugTriggerBonusParams('HOLD_WIN_BONUS', 1, longSessionId);
|
|
374
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
377
375
|
expect(result).toBeDefined();
|
|
378
376
|
});
|
|
379
377
|
});
|
|
@@ -382,12 +380,12 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
382
380
|
const publicState = createInitializedPublicState();
|
|
383
381
|
let privateState = createInitializedPrivateState();
|
|
384
382
|
// First trigger
|
|
385
|
-
const params1 =
|
|
386
|
-
const result1 = gameLogic.
|
|
383
|
+
const params1 = createDebugTriggerBonusParams('FREE_SPINS', 1);
|
|
384
|
+
const result1 = gameLogic.debugTriggerBonus(publicState, privateState, params1);
|
|
387
385
|
privateState = result1.privateState;
|
|
388
386
|
// Second trigger on the updated state
|
|
389
|
-
const params2 =
|
|
390
|
-
const result2 = gameLogic.
|
|
387
|
+
const params2 = createDebugTriggerBonusParams('HOLD_WIN_BONUS', 5);
|
|
388
|
+
const result2 = gameLogic.debugTriggerBonus(publicState, privateState, params2);
|
|
391
389
|
expect(result2.privateState.pendingBonuses).toHaveLength(2);
|
|
392
390
|
expect(result2.privateState.pendingBonuses[0].bonusType).toBe(lucky_sharky_types_1.BonusType.FREE_SPINS);
|
|
393
391
|
expect(result2.privateState.pendingBonuses[1].bonusType).toBe(lucky_sharky_types_1.BonusType.HOLD_WIN_BONUS);
|
|
@@ -398,8 +396,8 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
398
396
|
const publicState = createInitializedPublicState();
|
|
399
397
|
let privateState = createInitializedPrivateState();
|
|
400
398
|
for (let i = 0; i < 3; i++) {
|
|
401
|
-
const params =
|
|
402
|
-
const result = gameLogic.
|
|
399
|
+
const params = createDebugTriggerBonusParams('FREE_SPINS', i + 1);
|
|
400
|
+
const result = gameLogic.debugTriggerBonus(publicState, privateState, params);
|
|
403
401
|
privateState = result.privateState;
|
|
404
402
|
}
|
|
405
403
|
expect(privateState.pendingBonuses).toHaveLength(3);
|
|
@@ -409,4 +407,4 @@ describe('DEBUG_TRIGGER_BONUS Command', () => {
|
|
|
409
407
|
});
|
|
410
408
|
});
|
|
411
409
|
});
|
|
412
|
-
//# sourceMappingURL=
|
|
410
|
+
//# sourceMappingURL=debug-trigger-bonus.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-trigger-bonus.test.js","sourceRoot":"","sources":["../../src/__tests__/debug-trigger-bonus.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command payload for DEBUG_TRIGGER_BONUS
|
|
3
|
+
* GLI-19 compliant terminology for authorized testing
|
|
4
|
+
*/
|
|
5
|
+
export interface DebugTriggerBonusCommand {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
bonusType: 'FREE_SPINS' | 'HOLD_WIN_BONUS';
|
|
8
|
+
betAmount: number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=debug-trigger-bonus-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-trigger-bonus-command.d.ts","sourceRoot":"","sources":["../../../src/domain/types/debug-trigger-bonus-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,YAAY,GAAG,gBAAgB,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-trigger-bonus-command.js","sourceRoot":"","sources":["../../../src/domain/types/debug-trigger-bonus-command.ts"],"names":[],"mappings":""}
|
|
@@ -3,8 +3,8 @@ import { RngService } from '../rng/rng-service';
|
|
|
3
3
|
import { LuckySharkyGameLogicConfigInterface } from './game-logic-config.interface';
|
|
4
4
|
import { GameSpinInputDto } from '../domain/types/game-spin-input.dto';
|
|
5
5
|
import { StartBonusRoundInputDto } from '../domain/types/start-bonus-round-input.dto';
|
|
6
|
-
import { BaseGameSpinResult, BonusType, GetSymbolsResult, LuckySharkyGameLogicSpinResult, LuckySharkyPrivateState, LuckySharkyPublicState, SpinResultResponse } from './lucky-sharky.types';
|
|
7
|
-
import {
|
|
6
|
+
import { BaseGameSpinResult, BonusTrigger, BonusType, GetSymbolsResult, LuckySharkyGameLogicSpinResult, LuckySharkyPrivateState, LuckySharkyPublicState, SpinResultResponse } from './lucky-sharky.types';
|
|
7
|
+
import { DebugTriggerBonusCommand } from '../domain/types/debug-trigger-bonus-command';
|
|
8
8
|
export interface LuckySharkySessionStateInterface {
|
|
9
9
|
publicState: LuckySharkyPublicState;
|
|
10
10
|
privateState: LuckySharkyPrivateState;
|
|
@@ -17,7 +17,12 @@ export declare class LuckySharkyGameLogic {
|
|
|
17
17
|
defaultBetAmount: number;
|
|
18
18
|
}, commandId: string): Promise<LuckySharkySessionStateInterface>;
|
|
19
19
|
spin(params: GameSpinInputDto, publicState: LuckySharkyPublicState, privateState: LuckySharkyPrivateState, config: LuckySharkyGameLogicConfigInterface, reelStripsConfig: ReelStripsConfig, commandId: string): Promise<SpinResultResponse<BaseGameSpinResult>>;
|
|
20
|
-
startBonusRound(params: StartBonusRoundInputDto, publicState: LuckySharkyPublicState, privateState: LuckySharkyPrivateState, config: LuckySharkyGameLogicConfigInterface, reelStripsConfig: ReelStripsConfig, commandId: string): Promise<
|
|
20
|
+
startBonusRound(params: StartBonusRoundInputDto, publicState: LuckySharkyPublicState, privateState: LuckySharkyPrivateState, config: LuckySharkyGameLogicConfigInterface, reelStripsConfig: ReelStripsConfig, commandId: string): Promise<{
|
|
21
|
+
results: LuckySharkyGameLogicSpinResult;
|
|
22
|
+
activeBonus: BonusTrigger;
|
|
23
|
+
publicState: LuckySharkyPublicState;
|
|
24
|
+
privateState: LuckySharkyPrivateState;
|
|
25
|
+
}>;
|
|
21
26
|
private handleBetAmountChange;
|
|
22
27
|
private handleFreeSpinsBonus;
|
|
23
28
|
private handleHoldWinBonus;
|
|
@@ -26,9 +31,8 @@ export declare class LuckySharkyGameLogic {
|
|
|
26
31
|
/**
|
|
27
32
|
* Debug command to trigger a bonus round directly (GLI-19 compliant)
|
|
28
33
|
* Used by dev-tools for testing bonus mechanics
|
|
29
|
-
* Note: Method name kept as cheatTriggerBonus for backward compatibility
|
|
30
34
|
*/
|
|
31
|
-
|
|
35
|
+
debugTriggerBonus(publicState: LuckySharkyPublicState, privateState: LuckySharkyPrivateState, params: DebugTriggerBonusCommand): {
|
|
32
36
|
publicState: LuckySharkyPublicState;
|
|
33
37
|
privateState: LuckySharkyPrivateState;
|
|
34
38
|
outcome: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucky-sharky.game-logic.d.ts","sourceRoot":"","sources":["../../src/logic/lucky-sharky.game-logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,mCAAmC,EAAE,MAAM,+BAA+B,CAAC;AAKpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAEvF,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,EAAE,uBAAuB,CAAC;CACvC;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEtC,gBAAgB,CAC3B,eAAe,EAAE,mCAAmC,EACpD,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE;QAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EACvE,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gCAAgC,CAAC;IA6B/B,IAAI,CACf,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,mCAAmC,EAC3C,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAmErC,eAAe,CAC1B,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,mCAAmC,EAC3C,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"lucky-sharky.game-logic.d.ts","sourceRoot":"","sources":["../../src/logic/lucky-sharky.game-logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,mCAAmC,EAAE,MAAM,+BAA+B,CAAC;AAKpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAEvF,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,EAAE,uBAAuB,CAAC;CACvC;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEtC,gBAAgB,CAC3B,eAAe,EAAE,mCAAmC,EACpD,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE;QAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EACvE,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gCAAgC,CAAC;IA6B/B,IAAI,CACf,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,mCAAmC,EAC3C,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAmErC,eAAe,CAC1B,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,mCAAmC,EAC3C,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,OAAO,EAAE,8BAA8B,CAAC;QACxC,WAAW,EAAE,YAAY,CAAC;QAC1B,WAAW,EAAE,sBAAsB,CAAC;QACpC,YAAY,EAAE,uBAAuB,CAAC;KACvC,CAAC;IAsEF,OAAO,CAAC,qBAAqB;YAqBf,oBAAoB;YA+BpB,kBAAkB;IAwBzB,UAAU,CACf,eAAe,EAAE,mCAAmC,GACnD,gBAAgB;WAYL,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAWlE;;;OAGG;IACI,iBAAiB,CACtB,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,wBAAwB,GAC/B;QACD,WAAW,EAAE,sBAAsB,CAAC;QACpC,YAAY,EAAE,uBAAuB,CAAC;QACtC,OAAO,EAAE;YACP,cAAc,EAAE;gBACd,OAAO,EAAE,MAAM,CAAC;gBAChB,SAAS,EAAE,MAAM,CAAC;gBAClB,SAAS,EAAE,MAAM,CAAC;aACnB,CAAC;SACH,CAAC;KACH;CA0CF"}
|
|
@@ -58,16 +58,48 @@ class LuckySharkyGameLogic {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
async startBonusRound(params, publicState, privateState, config, reelStripsConfig, commandId) {
|
|
61
|
+
// Extract activeBonus from pendingBonuses
|
|
62
|
+
const activeBonus = privateState.pendingBonuses.find((b) => b.bonusId === params.bonusId);
|
|
63
|
+
if (!activeBonus) {
|
|
64
|
+
throw new Error(`No pending bonus found with ID: ${params.bonusId}`);
|
|
65
|
+
}
|
|
66
|
+
// Update privateState to move bonus from pending to active
|
|
67
|
+
const updatedPrivateState = {
|
|
68
|
+
...privateState,
|
|
69
|
+
pendingBonuses: privateState.pendingBonuses.filter((b) => b.bonusId !== params.bonusId),
|
|
70
|
+
activeBonus,
|
|
71
|
+
};
|
|
72
|
+
let result;
|
|
61
73
|
switch (params.bonusType) {
|
|
62
74
|
case 'freeSpins':
|
|
63
75
|
case 'FREE_SPINS':
|
|
64
|
-
|
|
76
|
+
result = await this.handleFreeSpinsBonus(params, publicState, updatedPrivateState, config, reelStripsConfig, commandId);
|
|
77
|
+
break;
|
|
65
78
|
case 'holdWinBonus':
|
|
66
79
|
case 'HOLD_WIN_BONUS':
|
|
67
|
-
|
|
80
|
+
result = await this.handleHoldWinBonus(params, publicState, updatedPrivateState, config, commandId);
|
|
81
|
+
break;
|
|
68
82
|
default:
|
|
69
83
|
throw new Error(`Unknown bonus type: ${params.bonusType}`);
|
|
70
84
|
}
|
|
85
|
+
// Extract final state from results
|
|
86
|
+
let finalPublicState = publicState;
|
|
87
|
+
let finalPrivateState = updatedPrivateState;
|
|
88
|
+
if (Array.isArray(result) && result.length > 0) {
|
|
89
|
+
const lastResult = result[result.length - 1];
|
|
90
|
+
finalPublicState = lastResult.publicState || publicState;
|
|
91
|
+
finalPrivateState = lastResult.privateState || updatedPrivateState;
|
|
92
|
+
}
|
|
93
|
+
else if (!Array.isArray(result) && result.publicState) {
|
|
94
|
+
finalPublicState = result.publicState;
|
|
95
|
+
finalPrivateState = result.privateState;
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
results: result,
|
|
99
|
+
activeBonus,
|
|
100
|
+
publicState: finalPublicState,
|
|
101
|
+
privateState: finalPrivateState,
|
|
102
|
+
};
|
|
71
103
|
}
|
|
72
104
|
handleBetAmountChange(params, privateState, config) {
|
|
73
105
|
const lastBetAmount = privateState.lastBetAmount;
|
|
@@ -129,10 +161,9 @@ class LuckySharkyGameLogic {
|
|
|
129
161
|
/**
|
|
130
162
|
* Debug command to trigger a bonus round directly (GLI-19 compliant)
|
|
131
163
|
* Used by dev-tools for testing bonus mechanics
|
|
132
|
-
* Note: Method name kept as cheatTriggerBonus for backward compatibility
|
|
133
164
|
*/
|
|
134
|
-
|
|
135
|
-
const bonusId = `
|
|
165
|
+
debugTriggerBonus(publicState, privateState, params) {
|
|
166
|
+
const bonusId = `debug-${Date.now()}-${Math.random().toString(36).substring(7)}`;
|
|
136
167
|
// Determine the next spin type based on bonus type
|
|
137
168
|
let nextSpinType;
|
|
138
169
|
switch (params.bonusType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucky-sharky.game-logic.js","sourceRoot":"","sources":["../../src/logic/lucky-sharky.game-logic.ts"],"names":[],"mappings":";;;AAGA,+EAAyE;AACzE,oEAA+D;AAC/D,sEAAiE;AACjE,8EAAwE;AAGxE,
|
|
1
|
+
{"version":3,"file":"lucky-sharky.game-logic.js","sourceRoot":"","sources":["../../src/logic/lucky-sharky.game-logic.ts"],"names":[],"mappings":";;;AAGA,+EAAyE;AACzE,oEAA+D;AAC/D,sEAAiE;AACjE,8EAAwE;AAGxE,6DAU8B;AAQ9B,MAAa,oBAAoB;IAC/B,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEhD,KAAK,CAAC,gBAAgB,CAC3B,eAAoD,EACpD,gBAAkC,EAClC,UAAuE,EACvE,SAAiB;QAEjB,MAAM,WAAW,GAA2B;YAC1C,YAAY,EAAE,CAAC;YACf,kBAAkB,EAAE,CAAC;YACrB,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,IAAI,sDAAwB,CACtD,IAAI,CAAC,UAAU,CAChB,CAAC,kBAAkB,CAClB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,aAAa,CACd,CAAC;QAEF,MAAM,YAAY,GAA4B;YAC5C,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,6BAAQ,CAAC,cAAc;YACrC,cAAc,EAAE,EAAE;YAClB,kBAAkB,EAAE,CAAC;YACrB,MAAM,EAAE,aAAa;YACrB,aAAa,EAAE,SAAS;SACzB,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,MAAwB,EACxB,WAAmC,EACnC,YAAqC,EACrC,MAA2C,EAC3C,gBAAkC,EAClC,SAAiB;QAEjB,IAAI,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CACnD,MAAM,EACN,YAAY,EACZ,MAAM,CACP,CAAC;QAEF,oBAAoB,GAAG;YACrB,GAAG,oBAAoB;YACvB,aAAa,EAAE,MAAM,CAAC,SAAS;SAChC,CAAC;QAEF,QAAQ,oBAAoB,CAAC,YAAY,EAAE,CAAC;YAC1C,KAAK,6BAAQ,CAAC,cAAc;gBAC1B,OAAO,IAAI,mCAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CACpD,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;YAEJ,KAAK,6BAAQ,CAAC,SAAS;gBACrB,OAAO,IAAI,mCAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CACpD,MAAM,EACN;oBACE,GAAG,WAAW;oBACd,YAAY,EAAE,oBAAoB,CAAC,YAAY;iBAChD,EACD;oBACE,GAAG,oBAAoB;oBACvB,YAAY,EAAE,6BAAQ,CAAC,cAAc;iBACtC,EACD,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;YAEJ,KAAK,6BAAQ,CAAC,mBAAmB;gBAC/B,OAAO,IAAI,mCAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CACpD,MAAM,EACN;oBACE,GAAG,WAAW;oBACd,YAAY,EAAE,oBAAoB,CAAC,YAAY;iBAChD,EACD;oBACE,GAAG,oBAAoB;oBACvB,YAAY,EAAE,6BAAQ,CAAC,cAAc;iBACtC,EACD,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;YAEJ;gBACE,OAAO,IAAI,mCAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CACpD,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;QACN,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,MAA+B,EAC/B,WAAmC,EACnC,YAAqC,EACrC,MAA2C,EAC3C,gBAAkC,EAClC,SAAiB;QAOjB,0CAA0C;QAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CACpC,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,2DAA2D;QAC3D,MAAM,mBAAmB,GAA4B;YACnD,GAAG,YAAY;YACf,cAAc,EAAE,YAAY,CAAC,cAAc,CAAC,MAAM,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CACpC;YACD,WAAW;SACZ,CAAC;QAEF,IAAI,MAAsC,CAAC;QAE3C,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;YACzB,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY;gBACf,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CACtC,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;gBACF,MAAM;YAER,KAAK,cAAc,CAAC;YACpB,KAAK,gBAAgB;gBACnB,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACpC,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,SAAS,CACV,CAAC;gBACF,MAAM;YAER;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,mCAAmC;QACnC,IAAI,gBAAgB,GAAG,WAAW,CAAC;QACnC,IAAI,iBAAiB,GAAG,mBAAmB,CAAC;QAE5C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7C,gBAAgB,GAAG,UAAU,CAAC,WAAW,IAAI,WAAW,CAAC;YACzD,iBAAiB,GAAG,UAAU,CAAC,YAAY,IAAI,mBAAmB,CAAC;QACrE,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACxD,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC;YACtC,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC;QAC1C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM;YACf,WAAW;YACX,WAAW,EAAE,gBAAgB;YAC7B,YAAY,EAAE,iBAAiB;SAChC,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAC3B,MAAwB,EACxB,YAAqC,EACrC,MAA2C;QAE3C,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;QACjD,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1C,MAAM,UAAU,GACd,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,gBAAgB,CAAC;QAEpE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,GAAG,YAAY;gBACf,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,YAAY,CAAC,YAAY;aACzC,CAAC;QACJ,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,MAA+B,EAC/B,WAAmC,EACnC,YAAqC,EACrC,MAA2C,EAC3C,gBAAkC,EAClC,SAAiB;QAEjB,MAAM,mBAAmB,GAA4B;YACnD,GAAG,YAAY;YACf,aAAa,EAAE,YAAY,CAAC,YAAY;SACzC,CAAC;QAEF,MAAM,aAAa,GAAqB;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,cAAc;YACtB,WAAW,EAAE,OAAO;SACrB,CAAC;QAEF,OAAO,IAAI,qCAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,0BAA0B,CACrE,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,MAA+B,EAC/B,WAAmC,EACnC,YAAqC,EACrC,MAA2C,EAC3C,SAAiB;QAEjB,MAAM,aAAa,GAAqB;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,cAAc;YACtB,WAAW,EAAE,OAAO;SACrB,CAAC;QAEF,OAAO,IAAI,4CAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,yBAAyB,CACvE,aAAa,EACb,WAAW,EACX,YAAY,EACZ,MAAM,EACN,SAAS,CACV,CAAC;IACJ,CAAC;IAEM,UAAU,CACf,eAAoD;QAEpD,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1E,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,SAAoB;QACvD,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,8BAAS,CAAC,UAAU;gBACvB,OAAO,WAAW,CAAC;YACrB,KAAK,8BAAS,CAAC,cAAc;gBAC3B,OAAO,cAAc,CAAC;YACxB;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,iBAAiB,CACtB,WAAmC,EACnC,YAAqC,EACrC,MAAgC;QAYhC,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjF,mDAAmD;QACnD,IAAI,YAAsB,CAAC;QAC3B,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;YACzB,KAAK,YAAY;gBACf,YAAY,GAAG,6BAAQ,CAAC,SAAS,CAAC;gBAClC,MAAM;YACR,KAAK,gBAAgB;gBACnB,YAAY,GAAG,6BAAQ,CAAC,mBAAmB,CAAC;gBAC5C,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,2BAA2B;QAC3B,MAAM,YAAY,GAAG;YACnB,OAAO;YACP,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,8BAAS,CAAC,UAAU,CAAC,CAAC,CAAC,8BAAS,CAAC,cAAc;YAC9F,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QAEF,4CAA4C;QAC5C,MAAM,mBAAmB,GAA4B;YACnD,GAAG,YAAY;YACf,YAAY;YACZ,cAAc,EAAE,CAAC,GAAG,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;SAC/D,CAAC;QAEF,OAAO;YACL,WAAW;YACX,YAAY,EAAE,mBAAmB;YACjC,OAAO,EAAE;gBACP,cAAc,EAAE;oBACd,OAAO;oBACP,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAlWD,oDAkWC"}
|