shufflecom-calculations 3.3.19 → 4.0.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.
@@ -1,15 +1,21 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- export declare const LOTTERY_PRIMARY_BALL_MAX_NUMBER = 55;
4
- export declare const LOTTERY_POWER_BALL_MAX_NUMBER = 18;
5
- export declare const LOTTERY_PRIMARY_BALL_COUNT = 5;
3
+ export declare enum LotteryVersion {
4
+ V1 = "V1",
5
+ V2 = "V2"
6
+ }
7
+ type LotteryConfig = {
8
+ maxPrimaryBall: number;
9
+ maxPowerBall: number;
10
+ primaryBallCount: number;
11
+ };
12
+ export declare const LOTTERY_VERSION_RECORD: Record<LotteryVersion, LotteryConfig>;
6
13
  export declare class Lottery {
7
- static generateBalls(hexStr: string): number[];
14
+ static readonly version = LotteryVersion.V2;
15
+ static getConfig(version: LotteryVersion): LotteryConfig;
16
+ static generateBalls(version: LotteryVersion, hexStr: string): number[];
17
+ static generateRandomBalls(version: LotteryVersion): number[];
18
+ static batchGenerateTicketNumbers(version: LotteryVersion, count: number): number[][];
8
19
  static shuffleBalls(balls: number[], hashBuffer: Buffer): number[];
9
- static generateRandomBalls(): number[];
10
- static batchGenerateTicketNumbers(count: number): number[][];
11
- static validateTicketNumbers({ ticketData, hasPowerBall }: {
12
- ticketData: number[][];
13
- hasPowerBall: boolean;
14
- }): boolean;
15
20
  }
21
+ export {};
@@ -1,54 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Lottery = exports.LOTTERY_PRIMARY_BALL_COUNT = exports.LOTTERY_POWER_BALL_MAX_NUMBER = exports.LOTTERY_PRIMARY_BALL_MAX_NUMBER = void 0;
3
+ exports.Lottery = exports.LOTTERY_VERSION_RECORD = exports.LotteryVersion = void 0;
4
4
  const fisher_yates_shuffle_1 = require("../utils/fisher-yates-shuffle");
5
- exports.LOTTERY_PRIMARY_BALL_MAX_NUMBER = 55;
6
- exports.LOTTERY_POWER_BALL_MAX_NUMBER = 18;
7
- exports.LOTTERY_PRIMARY_BALL_COUNT = 5;
5
+ var LotteryVersion;
6
+ (function (LotteryVersion) {
7
+ LotteryVersion["V1"] = "V1";
8
+ LotteryVersion["V2"] = "V2";
9
+ })(LotteryVersion || (exports.LotteryVersion = LotteryVersion = {}));
10
+ exports.LOTTERY_VERSION_RECORD = {
11
+ [LotteryVersion.V1]: { maxPrimaryBall: 55, maxPowerBall: 18, primaryBallCount: 5 },
12
+ [LotteryVersion.V2]: { maxPrimaryBall: 74, maxPowerBall: 18, primaryBallCount: 5 },
13
+ };
8
14
  class Lottery {
9
- static generateBalls(hexStr) {
15
+ static getConfig(version) {
16
+ return exports.LOTTERY_VERSION_RECORD[version];
17
+ }
18
+ static generateBalls(version, hexStr) {
10
19
  const hashed = Buffer.from(hexStr, 'hex');
11
- const shuffledPrimaryBalls = this.shuffleBalls(Array.from({ length: exports.LOTTERY_PRIMARY_BALL_MAX_NUMBER }, (_, i) => i + 1), hashed);
12
- const shuffledPowerBalls = this.shuffleBalls(Array.from({ length: exports.LOTTERY_POWER_BALL_MAX_NUMBER }, (_, i) => i + 1), hashed);
20
+ const config = this.getConfig(version);
21
+ const shuffledPrimaryBalls = this.shuffleBalls(Array.from({ length: config.maxPrimaryBall }, (_, i) => i + 1), hashed);
22
+ const shuffledPowerBalls = this.shuffleBalls(Array.from({ length: config.maxPowerBall }, (_, i) => i + 1), hashed);
13
23
  return [...shuffledPrimaryBalls.slice(0, 5), shuffledPowerBalls[0]];
14
24
  }
15
- static shuffleBalls(balls, hashBuffer) {
16
- return (0, fisher_yates_shuffle_1.fisherYatesShuffle)(balls, hashBuffer);
17
- }
18
- static generateRandomBalls() {
25
+ static generateRandomBalls(version) {
19
26
  const primaryBalls = new Set();
20
- while (primaryBalls.size < exports.LOTTERY_PRIMARY_BALL_COUNT) {
21
- const randomNumber = Math.floor(Math.random() * exports.LOTTERY_PRIMARY_BALL_MAX_NUMBER) + 1;
27
+ const config = this.getConfig(version);
28
+ while (primaryBalls.size < config.primaryBallCount) {
29
+ const randomNumber = Math.floor(Math.random() * config.maxPrimaryBall) + 1;
22
30
  primaryBalls.add(randomNumber);
23
31
  }
24
- const powerball = Math.floor(Math.random() * exports.LOTTERY_POWER_BALL_MAX_NUMBER) + 1;
32
+ const powerball = Math.floor(Math.random() * config.maxPowerBall) + 1;
25
33
  return [...Array.from(primaryBalls), powerball];
26
34
  }
27
- static batchGenerateTicketNumbers(count) {
28
- return Array.from({ length: count }, () => this.generateRandomBalls());
35
+ static batchGenerateTicketNumbers(version, count) {
36
+ return Array.from({ length: count }, () => this.generateRandomBalls(version));
29
37
  }
30
- static validateTicketNumbers({ ticketData, hasPowerBall }) {
31
- const endIndex = exports.LOTTERY_PRIMARY_BALL_COUNT;
32
- const betterSet = new Uint8Array(exports.LOTTERY_PRIMARY_BALL_MAX_NUMBER + 1);
33
- for (let i = 0; i < ticketData.length; i++) {
34
- const ticket = ticketData[i];
35
- if (ticket.length !== exports.LOTTERY_PRIMARY_BALL_COUNT + (hasPowerBall ? 1 : 0))
36
- return false;
37
- if (hasPowerBall) {
38
- const powerball = ticket[endIndex];
39
- if (powerball < 1 || powerball > exports.LOTTERY_POWER_BALL_MAX_NUMBER)
40
- return false;
41
- }
42
- betterSet.fill(0);
43
- for (let j = 0; j < endIndex; j++) {
44
- const ball = ticket[j];
45
- if (ball < 1 || ball > exports.LOTTERY_PRIMARY_BALL_MAX_NUMBER || betterSet[ball])
46
- return false;
47
- betterSet[ball] = 1;
48
- }
49
- }
50
- return true;
38
+ static shuffleBalls(balls, hashBuffer) {
39
+ return (0, fisher_yates_shuffle_1.fisherYatesShuffle)(balls, hashBuffer);
51
40
  }
52
41
  }
53
42
  exports.Lottery = Lottery;
43
+ Lottery.version = LotteryVersion.V2;
54
44
  //# sourceMappingURL=lottery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lottery.js","sourceRoot":"","sources":["../../src/lottery/lottery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lottery.js","sourceRoot":"","sources":["../../src/lottery/lottery.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,2BAAS,CAAA;IACT,2BAAS,CAAA;AACX,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAQY,QAAA,sBAAsB,GAA0C;IAC3E,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE;IAClF,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE;CACnF,CAAC;AAEF,MAAa,OAAO;IAGlB,MAAM,CAAC,SAAS,CAAC,OAAuB;QACtC,OAAO,8BAAsB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,OAAuB,EAAE,MAAc;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAC9D,MAAM,CACP,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAC5D,MAAM,CACP,CAAC;QAEF,OAAO,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,OAAuB;QAChD,MAAM,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC3E,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAEtE,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,0BAA0B,CAAC,OAAuB,EAAE,KAAa;QACtE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAe,EAAE,UAAkB;QACrD,OAAO,IAAA,yCAAkB,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;;AA3CH,0BA4CC;AA3CiB,eAAO,GAAG,cAAc,CAAC,EAAE,CAAC"}
@@ -91,6 +91,7 @@ export interface SportsBetLegV3 {
91
91
  id: string;
92
92
  type: SportsBetLegType;
93
93
  oddsDecimal: string;
94
+ displayStatus: SportsBetSelectionStatus;
94
95
  updatedAt: string;
95
96
  createdAt: string;
96
97
  selections: SportsBetSelectionV3[];