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>) => Record<string, number>;
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) => Record<string, number>;
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[String(bin)] ?? 0);
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] ?? toNumber(defaults[String(bin)]);
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] ?? toNumber(defaults[String(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[String((0, exports.pathIndexToPlinkoBin)(pathIndex))] ?? 0;
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[String(bin)]]));
72
+ return Object.fromEntries(exports.PLINKO_EDITABLE_BINS.map((bin) => [String(bin), plinkoBinAt(normalized, bin)]));
72
73
  };
73
74
  exports.formatPlinkoBinMultipliersForDisplay = formatPlinkoBinMultipliersForDisplay;
@@ -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<Record<string, number>, Record<string, number>>>;
85
- minBet: z.ZodNumber;
86
- maxBet: z.ZodNumber;
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.ZodPreprocess<z.ZodOptional<z.ZodNumber>>;
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<{
@@ -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.number();
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: zod_1.default.preprocess((val) => {
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({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gambling-bot-shared",
3
- "version": "0.1.44",
3
+ "version": "0.1.46",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",