gambling-bot-shared 0.1.44 → 0.1.46
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,13 +1,15 @@
|
|
|
1
|
+
import { defaultCasinoSettings } from './defaultConfig';
|
|
1
2
|
export declare const PLINKO_BIN_COUNT = 9;
|
|
2
3
|
export declare const PLINKO_ROW_COUNT: number;
|
|
3
4
|
export declare const PLINKO_CENTER_BIN = 5;
|
|
4
5
|
export declare const PLINKO_EDITABLE_BINS: readonly [1, 2, 3, 4, 5];
|
|
5
6
|
export type PlinkoEditableBin = (typeof PLINKO_EDITABLE_BINS)[number];
|
|
7
|
+
export type PlinkoBinMultipliers = (typeof defaultCasinoSettings)['plinko']['binMultipliers'];
|
|
6
8
|
export declare const getPlinkoMirrorBin: (bin: number) => number;
|
|
7
9
|
export declare const pathIndexToPlinkoBin: (pathIndex: number) => number;
|
|
8
10
|
export declare const plinkoBinToPathIndex: (bin: number) => number;
|
|
9
|
-
export declare const expandPlinkoBinMultipliers: (editable: Record<string | number, number | string>) =>
|
|
11
|
+
export declare const expandPlinkoBinMultipliers: (editable: Record<string | number, number | string>) => PlinkoBinMultipliers;
|
|
10
12
|
/** Migrate legacy 0-indexed bins and enforce symmetric 1–9 layout. */
|
|
11
|
-
export declare const normalizePlinkoBinMultipliers: (input: Record<string | number, number | string> | null | undefined) =>
|
|
13
|
+
export declare const normalizePlinkoBinMultipliers: (input: Record<string | number, number | string> | null | undefined) => PlinkoBinMultipliers;
|
|
12
14
|
export declare const getPlinkoMultiplierAtPathIndex: (binMultipliers: Record<string | number, number | string>, pathIndex: number) => number;
|
|
13
15
|
export declare const formatPlinkoBinMultipliersForDisplay: (binMultipliers: Record<string | number, number | string>) => Record<string, number>;
|
|
@@ -19,12 +19,13 @@ const toNumber = (val) => {
|
|
|
19
19
|
return val;
|
|
20
20
|
return 0;
|
|
21
21
|
};
|
|
22
|
+
const plinkoBinAt = (multipliers, bin) => multipliers[bin] ?? 0;
|
|
22
23
|
const defaultBinMultipliers = () => defaultConfig_1.defaultCasinoSettings.plinko.binMultipliers;
|
|
23
24
|
const expandPlinkoBinMultipliers = (editable) => {
|
|
24
25
|
const defaults = defaultBinMultipliers();
|
|
25
26
|
const result = {};
|
|
26
27
|
for (const bin of exports.PLINKO_EDITABLE_BINS) {
|
|
27
|
-
result[String(bin)] = toNumber(editable[bin] ?? editable[String(bin)] ?? defaults
|
|
28
|
+
result[String(bin)] = toNumber(editable[bin] ?? editable[String(bin)] ?? plinkoBinAt(defaults, bin));
|
|
28
29
|
}
|
|
29
30
|
for (let bin = exports.PLINKO_CENTER_BIN + 1; bin <= exports.PLINKO_BIN_COUNT; bin++) {
|
|
30
31
|
const mirror = (0, exports.getPlinkoMirrorBin)(bin);
|
|
@@ -50,12 +51,12 @@ const normalizePlinkoBinMultipliers = (input) => {
|
|
|
50
51
|
const defaults = defaultBinMultipliers();
|
|
51
52
|
if (usesZeroIndex) {
|
|
52
53
|
for (let bin = 1; bin <= exports.PLINKO_CENTER_BIN; bin++) {
|
|
53
|
-
editable[bin] = raw[bin - 1] ??
|
|
54
|
+
editable[bin] = raw[bin - 1] ?? plinkoBinAt(defaults, bin);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
else {
|
|
57
58
|
for (const bin of exports.PLINKO_EDITABLE_BINS) {
|
|
58
|
-
editable[bin] = raw[bin] ??
|
|
59
|
+
editable[bin] = raw[bin] ?? plinkoBinAt(defaults, bin);
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
return (0, exports.expandPlinkoBinMultipliers)(editable);
|
|
@@ -63,11 +64,11 @@ const normalizePlinkoBinMultipliers = (input) => {
|
|
|
63
64
|
exports.normalizePlinkoBinMultipliers = normalizePlinkoBinMultipliers;
|
|
64
65
|
const getPlinkoMultiplierAtPathIndex = (binMultipliers, pathIndex) => {
|
|
65
66
|
const normalized = (0, exports.normalizePlinkoBinMultipliers)(binMultipliers);
|
|
66
|
-
return normalized
|
|
67
|
+
return plinkoBinAt(normalized, (0, exports.pathIndexToPlinkoBin)(pathIndex));
|
|
67
68
|
};
|
|
68
69
|
exports.getPlinkoMultiplierAtPathIndex = getPlinkoMultiplierAtPathIndex;
|
|
69
70
|
const formatPlinkoBinMultipliersForDisplay = (binMultipliers) => {
|
|
70
71
|
const normalized = (0, exports.normalizePlinkoBinMultipliers)(binMultipliers);
|
|
71
|
-
return Object.fromEntries(exports.PLINKO_EDITABLE_BINS.map((bin) => [String(bin), normalized
|
|
72
|
+
return Object.fromEntries(exports.PLINKO_EDITABLE_BINS.map((bin) => [String(bin), plinkoBinAt(normalized, bin)]));
|
|
72
73
|
};
|
|
73
74
|
exports.formatPlinkoBinMultipliersForDisplay = formatPlinkoBinMultipliersForDisplay;
|
package/dist/schemas/forms.d.ts
CHANGED
|
@@ -33,57 +33,67 @@ export declare const channelsFormSchema: z.ZodObject<{
|
|
|
33
33
|
}, z.core.$strip>;
|
|
34
34
|
export declare const casinoSettingsSchema: z.ZodObject<{
|
|
35
35
|
dice: z.ZodObject<{
|
|
36
|
-
winMultiplier: z.ZodNumber
|
|
37
|
-
minBet: z.ZodNumber
|
|
38
|
-
maxBet: z.ZodNumber
|
|
36
|
+
winMultiplier: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
37
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
38
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
39
39
|
}, z.core.$strip>;
|
|
40
40
|
coinflip: z.ZodObject<{
|
|
41
|
-
winMultiplier: z.ZodNumber
|
|
42
|
-
minBet: z.ZodNumber
|
|
43
|
-
maxBet: z.ZodNumber
|
|
41
|
+
winMultiplier: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
42
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
43
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
44
44
|
}, z.core.$strip>;
|
|
45
45
|
slots: z.ZodObject<{
|
|
46
|
-
winMultipliers: z.ZodRecord<z.ZodString, z.ZodNumber
|
|
47
|
-
symbolWeights: z.ZodRecord<z.ZodString, z.ZodNumber
|
|
48
|
-
minBet: z.ZodNumber
|
|
49
|
-
maxBet: z.ZodNumber
|
|
46
|
+
winMultipliers: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>>;
|
|
47
|
+
symbolWeights: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>>;
|
|
48
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
49
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
50
50
|
}, z.core.$strip>;
|
|
51
51
|
lottery: z.ZodObject<{
|
|
52
|
-
winMultipliers: z.ZodRecord<z.ZodString, z.ZodNumber
|
|
53
|
-
minBet: z.ZodNumber
|
|
54
|
-
maxBet: z.ZodNumber
|
|
52
|
+
winMultipliers: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>>;
|
|
53
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
54
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
55
55
|
}, z.core.$strip>;
|
|
56
56
|
roulette: z.ZodObject<{
|
|
57
|
-
winMultipliers: z.ZodRecord<z.ZodString, z.ZodNumber
|
|
58
|
-
minBet: z.ZodNumber
|
|
59
|
-
maxBet: z.ZodNumber
|
|
57
|
+
winMultipliers: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>>;
|
|
58
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
59
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
60
60
|
}, z.core.$strip>;
|
|
61
61
|
rps: z.ZodObject<{
|
|
62
|
-
casinoCut: z.ZodNumber
|
|
63
|
-
minBet: z.ZodNumber
|
|
64
|
-
maxBet: z.ZodNumber
|
|
62
|
+
casinoCut: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
63
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
64
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
65
65
|
}, z.core.$strip>;
|
|
66
66
|
goldenJackpot: z.ZodObject<{
|
|
67
|
-
winMultiplier: z.ZodNumber
|
|
68
|
-
oneInChance: z.ZodNumber
|
|
69
|
-
minBet: z.ZodNumber
|
|
70
|
-
maxBet: z.ZodNumber
|
|
67
|
+
winMultiplier: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
68
|
+
oneInChance: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
69
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
70
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
71
71
|
}, z.core.$strip>;
|
|
72
72
|
blackjack: z.ZodObject<{
|
|
73
|
-
minBet: z.ZodNumber
|
|
74
|
-
maxBet: z.ZodNumber
|
|
73
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
74
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
75
75
|
}, z.core.$strip>;
|
|
76
76
|
prediction: z.ZodObject<{
|
|
77
|
-
minBet: z.ZodNumber
|
|
78
|
-
maxBet: z.ZodNumber
|
|
77
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
78
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
79
79
|
}, z.core.$strip>;
|
|
80
80
|
raffle: z.ZodObject<{
|
|
81
|
-
casinoCut: z.ZodNumber
|
|
81
|
+
casinoCut: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
82
82
|
}, z.core.$strip>;
|
|
83
83
|
plinko: z.ZodObject<{
|
|
84
|
-
binMultipliers: z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodNumber>, z.ZodTransform<
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
binMultipliers: z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>>, z.ZodTransform<{
|
|
85
|
+
1: number;
|
|
86
|
+
2: number;
|
|
87
|
+
3: number;
|
|
88
|
+
4: number;
|
|
89
|
+
5: number;
|
|
90
|
+
6: number;
|
|
91
|
+
7: number;
|
|
92
|
+
8: number;
|
|
93
|
+
9: number;
|
|
94
|
+
}, Record<string, number>>>;
|
|
95
|
+
minBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
96
|
+
maxBet: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>, z.ZodNumber>;
|
|
87
97
|
}, z.core.$strip>;
|
|
88
98
|
}, z.core.$strip>;
|
|
89
99
|
export declare const vipSettingsFormSchema: z.ZodObject<{
|
|
@@ -105,7 +115,7 @@ export declare const bonusFormSchema: z.ZodObject<{
|
|
|
105
115
|
}>;
|
|
106
116
|
baseReward: z.ZodNumber;
|
|
107
117
|
streakIncrement: z.ZodOptional<z.ZodNumber>;
|
|
108
|
-
streakMultiplier: z.
|
|
118
|
+
streakMultiplier: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>, z.ZodTransform<number | undefined, string | number | undefined>>, z.ZodOptional<z.ZodNumber>>;
|
|
109
119
|
maxReward: z.ZodNumber;
|
|
110
120
|
resetOnMax: z.ZodBoolean;
|
|
111
121
|
milestoneBonus: z.ZodObject<{
|
package/dist/schemas/forms.js
CHANGED
|
@@ -31,7 +31,15 @@ exports.channelsFormSchema = zod_1.default.object({
|
|
|
31
31
|
prediction: exports.predictionChannelsFormSchema,
|
|
32
32
|
raffle: exports.raffleChannelsFormSchema
|
|
33
33
|
});
|
|
34
|
-
const num = zod_1.default
|
|
34
|
+
const num = zod_1.default
|
|
35
|
+
.union([zod_1.default.number(), zod_1.default.string()])
|
|
36
|
+
.transform((val) => {
|
|
37
|
+
if (val === '' || val === undefined || val === null)
|
|
38
|
+
return 0;
|
|
39
|
+
const parsed = typeof val === 'string' ? Number(val) : val;
|
|
40
|
+
return Number.isNaN(parsed) ? 0 : parsed;
|
|
41
|
+
})
|
|
42
|
+
.pipe(zod_1.default.number());
|
|
35
43
|
exports.casinoSettingsSchema = zod_1.default.object({
|
|
36
44
|
dice: zod_1.default.object({
|
|
37
45
|
winMultiplier: num,
|
|
@@ -105,21 +113,26 @@ const bonusAmountSchema = zod_1.default
|
|
|
105
113
|
.number()
|
|
106
114
|
.min(0, 'Must be ≥ 0')
|
|
107
115
|
.max(bonusLimits_1.BONUS_MAX_AMOUNT, `Must be ≤ ${bonusLimits_1.BONUS_MAX_AMOUNT.toLocaleString()}`);
|
|
116
|
+
const bonusMultiplierSchema = zod_1.default
|
|
117
|
+
.number()
|
|
118
|
+
.min(0, 'Must be ≥ 0')
|
|
119
|
+
.max(bonusLimits_1.BONUS_MAX_STREAK_MULTIPLIER, `Must be ≤ ${bonusLimits_1.BONUS_MAX_STREAK_MULTIPLIER}`)
|
|
120
|
+
.optional();
|
|
121
|
+
const bonusMultiplierInputSchema = zod_1.default
|
|
122
|
+
.union([zod_1.default.number(), zod_1.default.string()])
|
|
123
|
+
.optional()
|
|
124
|
+
.transform((val) => {
|
|
125
|
+
if (val === '' || val === undefined || val === null)
|
|
126
|
+
return undefined;
|
|
127
|
+
const num = typeof val === 'string' ? Number(val) : val;
|
|
128
|
+
return Number.isNaN(num) ? undefined : num;
|
|
129
|
+
})
|
|
130
|
+
.pipe(bonusMultiplierSchema);
|
|
108
131
|
exports.bonusFormSchema = zod_1.default.object({
|
|
109
132
|
rewardMode: zod_1.default.enum(['linear', 'exponential']),
|
|
110
133
|
baseReward: bonusAmountSchema,
|
|
111
134
|
streakIncrement: bonusAmountSchema.optional(),
|
|
112
|
-
streakMultiplier:
|
|
113
|
-
if (val === '' || val === undefined || val === null)
|
|
114
|
-
return undefined;
|
|
115
|
-
if (typeof val === 'string')
|
|
116
|
-
return Number(val);
|
|
117
|
-
return val;
|
|
118
|
-
}, zod_1.default
|
|
119
|
-
.number()
|
|
120
|
-
.min(0, 'Must be ≥ 0')
|
|
121
|
-
.max(bonusLimits_1.BONUS_MAX_STREAK_MULTIPLIER, `Must be ≤ ${bonusLimits_1.BONUS_MAX_STREAK_MULTIPLIER}`)
|
|
122
|
-
.optional()),
|
|
135
|
+
streakMultiplier: bonusMultiplierInputSchema,
|
|
123
136
|
maxReward: bonusAmountSchema,
|
|
124
137
|
resetOnMax: zod_1.default.boolean(),
|
|
125
138
|
milestoneBonus: zod_1.default.object({
|