overtime-live-trading-utils 2.1.25 → 2.1.27

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.
Files changed (3) hide show
  1. package/main.js +1 -1
  2. package/package.json +2 -2
  3. package/src/utils/odds.ts +292 -254
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overtime-live-trading-utils",
3
- "version": "2.1.25",
3
+ "version": "2.1.27",
4
4
  "description": "",
5
5
  "main": "main.js",
6
6
  "scripts": {
@@ -14,7 +14,7 @@
14
14
  "dependencies": {
15
15
  "@types/node": "^20.8.10",
16
16
  "oddslib": "^2.1.1",
17
- "overtime-utils": "^0.1.37",
17
+ "overtime-utils": "^0.1.41",
18
18
  "react": "^17.0.1"
19
19
  },
20
20
  "devDependencies": {
package/src/utils/odds.ts CHANGED
@@ -523,6 +523,29 @@ export const groupAndFormatGGOdds = (oddsArray: any[]) => {
523
523
  return formattedOdds;
524
524
  };
525
525
 
526
+ /**
527
+ * Normalize a score line like "A:B" to a map-friendly key "A_B" with
528
+ * numeric normalization (removing any leading zeros).
529
+ *
530
+ * Behavior:
531
+ * - Accepts optional whitespace around the colon (e.g., "03 : 10").
532
+ * - Parses both sides as numbers to strip leading zeros:
533
+ * "13:09" → "13_9", "13:00" → "13_0", "03:10" → "3_10".
534
+ * - If the input does NOT match "<digits> : <digits>", falls back to a simple
535
+ * string replace of ":" with "_" without numeric parsing.
536
+ *
537
+ * @param {string|number} line
538
+ * A score string (e.g., "13:09") or any value coercible to string.
539
+ *
540
+ * @returns {string}
541
+ * The normalized key (e.g., "13_9"). If not a digit:digit pattern, returns
542
+ * the string with ":" replaced by "_".
543
+ */
544
+ function normalizeScoreLine(line: any) {
545
+ const m = String(line).match(/(\d+)\s*:\s*(\d+)/);
546
+ return m ? `${Number(m[1])}_${Number(m[2])}` : String(line).replace(':', '_');
547
+ }
548
+
526
549
  /**
527
550
  * Groups correct score odds by their lines and formats the result.
528
551
  *
@@ -534,265 +557,280 @@ export const groupAndFormatCorrectScoreOdds = (oddsArray: any[], commonData: Hom
534
557
  const homeTeamKey = commonData.homeTeam.toLowerCase().replace(/\s+/g, '_');
535
558
  const awayTeamKey = commonData.awayTeam.toLowerCase().replace(/\s+/g, '_');
536
559
 
537
- const oddsMap = {
538
- draw_0_0: 0,
539
- draw_1_1: 0,
540
- draw_2_2: 0,
541
- draw_3_3: 0,
542
- draw_4_4: 0,
543
- [`${homeTeamKey}_1_0`]: 0,
544
- [`${homeTeamKey}_2_0`]: 0,
545
- [`${homeTeamKey}_2_1`]: 0,
546
- [`${homeTeamKey}_3_0`]: 0,
547
- [`${homeTeamKey}_3_1`]: 0,
548
- [`${homeTeamKey}_3_2`]: 0,
549
- [`${homeTeamKey}_4_0`]: 0,
550
- [`${homeTeamKey}_4_1`]: 0,
551
- [`${homeTeamKey}_4_2`]: 0,
552
- [`${homeTeamKey}_4_3`]: 0,
553
- [`${awayTeamKey}_1_0`]: 0,
554
- [`${awayTeamKey}_2_0`]: 0,
555
- [`${awayTeamKey}_2_1`]: 0,
556
- [`${awayTeamKey}_3_0`]: 0,
557
- [`${awayTeamKey}_3_1`]: 0,
558
- [`${awayTeamKey}_3_2`]: 0,
559
- [`${awayTeamKey}_4_0`]: 0,
560
- [`${awayTeamKey}_4_1`]: 0,
561
- [`${awayTeamKey}_4_2`]: 0,
562
- [`${awayTeamKey}_4_3`]: 0,
563
- draw_5_5: 0,
564
- draw_6_6: 0,
565
- draw_7_7: 0,
566
- draw_8_8: 0,
567
- draw_9_9: 0,
568
- draw_10_10: 0,
569
- draw_11_11: 0,
570
- draw_12_12: 0,
571
- draw_13_13: 0,
572
- draw_14_14: 0,
573
- [`${homeTeamKey}_5_0`]: 0,
574
- [`${homeTeamKey}_5_1`]: 0,
575
- [`${homeTeamKey}_5_2`]: 0,
576
- [`${homeTeamKey}_5_3`]: 0,
577
- [`${homeTeamKey}_5_4`]: 0,
578
- [`${homeTeamKey}_6_0`]: 0,
579
- [`${homeTeamKey}_6_1`]: 0,
580
- [`${homeTeamKey}_6_2`]: 0,
581
- [`${homeTeamKey}_6_3`]: 0,
582
- [`${homeTeamKey}_6_4`]: 0,
583
- [`${homeTeamKey}_6_5`]: 0,
584
- [`${homeTeamKey}_7_0`]: 0,
585
- [`${homeTeamKey}_7_1`]: 0,
586
- [`${homeTeamKey}_7_2`]: 0,
587
- [`${homeTeamKey}_7_3`]: 0,
588
- [`${homeTeamKey}_7_4`]: 0,
589
- [`${homeTeamKey}_7_5`]: 0,
590
- [`${homeTeamKey}_7_6`]: 0,
591
- [`${homeTeamKey}_8_0`]: 0,
592
- [`${homeTeamKey}_8_1`]: 0,
593
- [`${homeTeamKey}_8_2`]: 0,
594
- [`${homeTeamKey}_8_3`]: 0,
595
- [`${homeTeamKey}_8_4`]: 0,
596
- [`${homeTeamKey}_8_5`]: 0,
597
- [`${homeTeamKey}_8_6`]: 0,
598
- [`${homeTeamKey}_8_7`]: 0,
599
- [`${homeTeamKey}_9_0`]: 0,
600
- [`${homeTeamKey}_9_1`]: 0,
601
- [`${homeTeamKey}_9_2`]: 0,
602
- [`${homeTeamKey}_9_3`]: 0,
603
- [`${homeTeamKey}_9_4`]: 0,
604
- [`${homeTeamKey}_9_5`]: 0,
605
- [`${homeTeamKey}_9_6`]: 0,
606
- [`${homeTeamKey}_9_7`]: 0,
607
- [`${homeTeamKey}_9_8`]: 0,
608
- [`${homeTeamKey}_10_0`]: 0,
609
- [`${homeTeamKey}_10_1`]: 0,
610
- [`${homeTeamKey}_10_2`]: 0,
611
- [`${homeTeamKey}_10_3`]: 0,
612
- [`${homeTeamKey}_10_4`]: 0,
613
- [`${homeTeamKey}_10_5`]: 0,
614
- [`${homeTeamKey}_10_6`]: 0,
615
- [`${homeTeamKey}_10_7`]: 0,
616
- [`${homeTeamKey}_10_8`]: 0,
617
- [`${homeTeamKey}_10_9`]: 0,
618
- [`${homeTeamKey}_11_0`]: 0,
619
- [`${homeTeamKey}_11_1`]: 0,
620
- [`${homeTeamKey}_11_2`]: 0,
621
- [`${homeTeamKey}_11_3`]: 0,
622
- [`${homeTeamKey}_11_4`]: 0,
623
- [`${homeTeamKey}_11_5`]: 0,
624
- [`${homeTeamKey}_11_6`]: 0,
625
- [`${homeTeamKey}_11_7`]: 0,
626
- [`${homeTeamKey}_11_8`]: 0,
627
- [`${homeTeamKey}_11_9`]: 0,
628
- [`${homeTeamKey}_11_10`]: 0,
629
- [`${homeTeamKey}_12_0`]: 0,
630
- [`${homeTeamKey}_12_1`]: 0,
631
- [`${homeTeamKey}_12_2`]: 0,
632
- [`${homeTeamKey}_12_3`]: 0,
633
- [`${homeTeamKey}_12_4`]: 0,
634
- [`${homeTeamKey}_12_5`]: 0,
635
- [`${homeTeamKey}_12_6`]: 0,
636
- [`${homeTeamKey}_12_7`]: 0,
637
- [`${homeTeamKey}_12_8`]: 0,
638
- [`${homeTeamKey}_12_9`]: 0,
639
- [`${homeTeamKey}_12_10`]: 0,
640
- [`${homeTeamKey}_12_11`]: 0,
641
- [`${homeTeamKey}_13_0`]: 0,
642
- [`${homeTeamKey}_13_1`]: 0,
643
- [`${homeTeamKey}_13_2`]: 0,
644
- [`${homeTeamKey}_13_3`]: 0,
645
- [`${homeTeamKey}_13_4`]: 0,
646
- [`${homeTeamKey}_13_5`]: 0,
647
- [`${homeTeamKey}_13_6`]: 0,
648
- [`${homeTeamKey}_13_7`]: 0,
649
- [`${homeTeamKey}_13_8`]: 0,
650
- [`${homeTeamKey}_13_9`]: 0,
651
- [`${homeTeamKey}_13_10`]: 0,
652
- [`${homeTeamKey}_13_11`]: 0,
653
- [`${homeTeamKey}_13_12`]: 0,
654
- [`${homeTeamKey}_14_0`]: 0,
655
- [`${homeTeamKey}_14_1`]: 0,
656
- [`${homeTeamKey}_14_2`]: 0,
657
- [`${homeTeamKey}_14_3`]: 0,
658
- [`${homeTeamKey}_14_4`]: 0,
659
- [`${homeTeamKey}_14_5`]: 0,
660
- [`${homeTeamKey}_14_6`]: 0,
661
- [`${homeTeamKey}_14_7`]: 0,
662
- [`${homeTeamKey}_14_8`]: 0,
663
- [`${homeTeamKey}_14_9`]: 0,
664
- [`${homeTeamKey}_14_10`]: 0,
665
- [`${homeTeamKey}_14_11`]: 0,
666
- [`${homeTeamKey}_14_12`]: 0,
667
- [`${homeTeamKey}_14_13`]: 0,
668
- [`${awayTeamKey}_5_0`]: 0,
669
- [`${awayTeamKey}_5_1`]: 0,
670
- [`${awayTeamKey}_5_2`]: 0,
671
- [`${awayTeamKey}_5_3`]: 0,
672
- [`${awayTeamKey}_5_4`]: 0,
673
- [`${awayTeamKey}_6_0`]: 0,
674
- [`${awayTeamKey}_6_1`]: 0,
675
- [`${awayTeamKey}_6_2`]: 0,
676
- [`${awayTeamKey}_6_3`]: 0,
677
- [`${awayTeamKey}_6_4`]: 0,
678
- [`${awayTeamKey}_6_5`]: 0,
679
- [`${awayTeamKey}_7_0`]: 0,
680
- [`${awayTeamKey}_7_1`]: 0,
681
- [`${awayTeamKey}_7_2`]: 0,
682
- [`${awayTeamKey}_7_3`]: 0,
683
- [`${awayTeamKey}_7_4`]: 0,
684
- [`${awayTeamKey}_7_5`]: 0,
685
- [`${awayTeamKey}_7_6`]: 0,
686
- [`${awayTeamKey}_8_0`]: 0,
687
- [`${awayTeamKey}_8_1`]: 0,
688
- [`${awayTeamKey}_8_2`]: 0,
689
- [`${awayTeamKey}_8_3`]: 0,
690
- [`${awayTeamKey}_8_4`]: 0,
691
- [`${awayTeamKey}_8_5`]: 0,
692
- [`${awayTeamKey}_8_6`]: 0,
693
- [`${awayTeamKey}_8_7`]: 0,
694
- [`${awayTeamKey}_9_0`]: 0,
695
- [`${awayTeamKey}_9_1`]: 0,
696
- [`${awayTeamKey}_9_2`]: 0,
697
- [`${awayTeamKey}_9_3`]: 0,
698
- [`${awayTeamKey}_9_4`]: 0,
699
- [`${awayTeamKey}_9_5`]: 0,
700
- [`${awayTeamKey}_9_6`]: 0,
701
- [`${awayTeamKey}_9_7`]: 0,
702
- [`${awayTeamKey}_9_8`]: 0,
703
- [`${awayTeamKey}_10_0`]: 0,
704
- [`${awayTeamKey}_10_1`]: 0,
705
- [`${awayTeamKey}_10_2`]: 0,
706
- [`${awayTeamKey}_10_3`]: 0,
707
- [`${awayTeamKey}_10_4`]: 0,
708
- [`${awayTeamKey}_10_5`]: 0,
709
- [`${awayTeamKey}_10_6`]: 0,
710
- [`${awayTeamKey}_10_7`]: 0,
711
- [`${awayTeamKey}_10_8`]: 0,
712
- [`${awayTeamKey}_10_9`]: 0,
713
- [`${awayTeamKey}_11_0`]: 0,
714
- [`${awayTeamKey}_11_1`]: 0,
715
- [`${awayTeamKey}_11_2`]: 0,
716
- [`${awayTeamKey}_11_3`]: 0,
717
- [`${awayTeamKey}_11_4`]: 0,
718
- [`${awayTeamKey}_11_5`]: 0,
719
- [`${awayTeamKey}_11_6`]: 0,
720
- [`${awayTeamKey}_11_7`]: 0,
721
- [`${awayTeamKey}_11_8`]: 0,
722
- [`${awayTeamKey}_11_9`]: 0,
723
- [`${awayTeamKey}_11_10`]: 0,
724
- [`${awayTeamKey}_12_0`]: 0,
725
- [`${awayTeamKey}_12_1`]: 0,
726
- [`${awayTeamKey}_12_2`]: 0,
727
- [`${awayTeamKey}_12_3`]: 0,
728
- [`${awayTeamKey}_12_4`]: 0,
729
- [`${awayTeamKey}_12_5`]: 0,
730
- [`${awayTeamKey}_12_6`]: 0,
731
- [`${awayTeamKey}_12_7`]: 0,
732
- [`${awayTeamKey}_12_8`]: 0,
733
- [`${awayTeamKey}_12_9`]: 0,
734
- [`${awayTeamKey}_12_10`]: 0,
735
- [`${awayTeamKey}_12_11`]: 0,
736
- [`${awayTeamKey}_13_0`]: 0,
737
- [`${awayTeamKey}_13_1`]: 0,
738
- [`${awayTeamKey}_13_2`]: 0,
739
- [`${awayTeamKey}_13_3`]: 0,
740
- [`${awayTeamKey}_13_4`]: 0,
741
- [`${awayTeamKey}_13_5`]: 0,
742
- [`${awayTeamKey}_13_6`]: 0,
743
- [`${awayTeamKey}_13_7`]: 0,
744
- [`${awayTeamKey}_13_8`]: 0,
745
- [`${awayTeamKey}_13_9`]: 0,
746
- [`${awayTeamKey}_13_10`]: 0,
747
- [`${awayTeamKey}_13_11`]: 0,
748
- [`${awayTeamKey}_13_12`]: 0,
749
- [`${awayTeamKey}_14_0`]: 0,
750
- [`${awayTeamKey}_14_1`]: 0,
751
- [`${awayTeamKey}_14_2`]: 0,
752
- [`${awayTeamKey}_14_3`]: 0,
753
- [`${awayTeamKey}_14_4`]: 0,
754
- [`${awayTeamKey}_14_5`]: 0,
755
- [`${awayTeamKey}_14_6`]: 0,
756
- [`${awayTeamKey}_14_7`]: 0,
757
- [`${awayTeamKey}_14_8`]: 0,
758
- [`${awayTeamKey}_14_9`]: 0,
759
- [`${awayTeamKey}_14_10`]: 0,
760
- [`${awayTeamKey}_14_11`]: 0,
761
- [`${awayTeamKey}_14_12`]: 0,
762
- [`${awayTeamKey}_14_13`]: 0,
763
- other: 0,
764
- };
765
-
766
- // Populate the oddsMap with the odds from the provided array
767
- oddsArray.forEach((odd) => {
768
- const normalizedSelection = `${odd.selection.toLowerCase().replace(/\s+/g, '_')}_${odd.selectionLine.replace(
769
- ':',
770
- '_'
771
- )}`;
772
- if (oddsMap.hasOwnProperty(normalizedSelection)) {
773
- oddsMap[normalizedSelection] = odd.price;
560
+ // Group odds by typeId first
561
+ const oddsByTypeId = oddsArray.reduce((acc: any, odd: any) => {
562
+ const typeId = odd.typeId || 10100;
563
+ if (!acc[typeId]) {
564
+ acc[typeId] = [];
774
565
  }
775
- });
566
+ acc[typeId].push(odd);
567
+ return acc;
568
+ }, {});
776
569
 
777
- const allOddsAreZero = Object.values(oddsMap).every((odd) => odd === ZERO);
570
+ // Create market objects for each unique typeId
571
+ const marketObjects: any[] = [];
572
+
573
+ Object.entries(oddsByTypeId).forEach(([typeId, odds]: [string, any]) => {
574
+ const oddsMap = {
575
+ draw_0_0: 0,
576
+ draw_1_1: 0,
577
+ draw_2_2: 0,
578
+ draw_3_3: 0,
579
+ draw_4_4: 0,
580
+ [`${homeTeamKey}_1_0`]: 0,
581
+ [`${homeTeamKey}_2_0`]: 0,
582
+ [`${homeTeamKey}_2_1`]: 0,
583
+ [`${homeTeamKey}_3_0`]: 0,
584
+ [`${homeTeamKey}_3_1`]: 0,
585
+ [`${homeTeamKey}_3_2`]: 0,
586
+ [`${homeTeamKey}_4_0`]: 0,
587
+ [`${homeTeamKey}_4_1`]: 0,
588
+ [`${homeTeamKey}_4_2`]: 0,
589
+ [`${homeTeamKey}_4_3`]: 0,
590
+ [`${awayTeamKey}_1_0`]: 0,
591
+ [`${awayTeamKey}_2_0`]: 0,
592
+ [`${awayTeamKey}_2_1`]: 0,
593
+ [`${awayTeamKey}_3_0`]: 0,
594
+ [`${awayTeamKey}_3_1`]: 0,
595
+ [`${awayTeamKey}_3_2`]: 0,
596
+ [`${awayTeamKey}_4_0`]: 0,
597
+ [`${awayTeamKey}_4_1`]: 0,
598
+ [`${awayTeamKey}_4_2`]: 0,
599
+ [`${awayTeamKey}_4_3`]: 0,
600
+ draw_5_5: 0,
601
+ draw_6_6: 0,
602
+ draw_7_7: 0,
603
+ draw_8_8: 0,
604
+ draw_9_9: 0,
605
+ draw_10_10: 0,
606
+ draw_11_11: 0,
607
+ draw_12_12: 0,
608
+ draw_13_13: 0,
609
+ draw_14_14: 0,
610
+ [`${homeTeamKey}_5_0`]: 0,
611
+ [`${homeTeamKey}_5_1`]: 0,
612
+ [`${homeTeamKey}_5_2`]: 0,
613
+ [`${homeTeamKey}_5_3`]: 0,
614
+ [`${homeTeamKey}_5_4`]: 0,
615
+ [`${homeTeamKey}_6_0`]: 0,
616
+ [`${homeTeamKey}_6_1`]: 0,
617
+ [`${homeTeamKey}_6_2`]: 0,
618
+ [`${homeTeamKey}_6_3`]: 0,
619
+ [`${homeTeamKey}_6_4`]: 0,
620
+ [`${homeTeamKey}_6_5`]: 0,
621
+ [`${homeTeamKey}_7_0`]: 0,
622
+ [`${homeTeamKey}_7_1`]: 0,
623
+ [`${homeTeamKey}_7_2`]: 0,
624
+ [`${homeTeamKey}_7_3`]: 0,
625
+ [`${homeTeamKey}_7_4`]: 0,
626
+ [`${homeTeamKey}_7_5`]: 0,
627
+ [`${homeTeamKey}_7_6`]: 0,
628
+ [`${homeTeamKey}_8_0`]: 0,
629
+ [`${homeTeamKey}_8_1`]: 0,
630
+ [`${homeTeamKey}_8_2`]: 0,
631
+ [`${homeTeamKey}_8_3`]: 0,
632
+ [`${homeTeamKey}_8_4`]: 0,
633
+ [`${homeTeamKey}_8_5`]: 0,
634
+ [`${homeTeamKey}_8_6`]: 0,
635
+ [`${homeTeamKey}_8_7`]: 0,
636
+ [`${homeTeamKey}_9_0`]: 0,
637
+ [`${homeTeamKey}_9_1`]: 0,
638
+ [`${homeTeamKey}_9_2`]: 0,
639
+ [`${homeTeamKey}_9_3`]: 0,
640
+ [`${homeTeamKey}_9_4`]: 0,
641
+ [`${homeTeamKey}_9_5`]: 0,
642
+ [`${homeTeamKey}_9_6`]: 0,
643
+ [`${homeTeamKey}_9_7`]: 0,
644
+ [`${homeTeamKey}_9_8`]: 0,
645
+ [`${homeTeamKey}_10_0`]: 0,
646
+ [`${homeTeamKey}_10_1`]: 0,
647
+ [`${homeTeamKey}_10_2`]: 0,
648
+ [`${homeTeamKey}_10_3`]: 0,
649
+ [`${homeTeamKey}_10_4`]: 0,
650
+ [`${homeTeamKey}_10_5`]: 0,
651
+ [`${homeTeamKey}_10_6`]: 0,
652
+ [`${homeTeamKey}_10_7`]: 0,
653
+ [`${homeTeamKey}_10_8`]: 0,
654
+ [`${homeTeamKey}_10_9`]: 0,
655
+ [`${homeTeamKey}_11_0`]: 0,
656
+ [`${homeTeamKey}_11_1`]: 0,
657
+ [`${homeTeamKey}_11_2`]: 0,
658
+ [`${homeTeamKey}_11_3`]: 0,
659
+ [`${homeTeamKey}_11_4`]: 0,
660
+ [`${homeTeamKey}_11_5`]: 0,
661
+ [`${homeTeamKey}_11_6`]: 0,
662
+ [`${homeTeamKey}_11_7`]: 0,
663
+ [`${homeTeamKey}_11_8`]: 0,
664
+ [`${homeTeamKey}_11_9`]: 0,
665
+ [`${homeTeamKey}_11_10`]: 0,
666
+ [`${homeTeamKey}_12_0`]: 0,
667
+ [`${homeTeamKey}_12_1`]: 0,
668
+ [`${homeTeamKey}_12_2`]: 0,
669
+ [`${homeTeamKey}_12_3`]: 0,
670
+ [`${homeTeamKey}_12_4`]: 0,
671
+ [`${homeTeamKey}_12_5`]: 0,
672
+ [`${homeTeamKey}_12_6`]: 0,
673
+ [`${homeTeamKey}_12_7`]: 0,
674
+ [`${homeTeamKey}_12_8`]: 0,
675
+ [`${homeTeamKey}_12_9`]: 0,
676
+ [`${homeTeamKey}_12_10`]: 0,
677
+ [`${homeTeamKey}_12_11`]: 0,
678
+ [`${homeTeamKey}_13_0`]: 0,
679
+ [`${homeTeamKey}_13_1`]: 0,
680
+ [`${homeTeamKey}_13_2`]: 0,
681
+ [`${homeTeamKey}_13_3`]: 0,
682
+ [`${homeTeamKey}_13_4`]: 0,
683
+ [`${homeTeamKey}_13_5`]: 0,
684
+ [`${homeTeamKey}_13_6`]: 0,
685
+ [`${homeTeamKey}_13_7`]: 0,
686
+ [`${homeTeamKey}_13_8`]: 0,
687
+ [`${homeTeamKey}_13_9`]: 0,
688
+ [`${homeTeamKey}_13_10`]: 0,
689
+ [`${homeTeamKey}_13_11`]: 0,
690
+ [`${homeTeamKey}_13_12`]: 0,
691
+ [`${homeTeamKey}_14_0`]: 0,
692
+ [`${homeTeamKey}_14_1`]: 0,
693
+ [`${homeTeamKey}_14_2`]: 0,
694
+ [`${homeTeamKey}_14_3`]: 0,
695
+ [`${homeTeamKey}_14_4`]: 0,
696
+ [`${homeTeamKey}_14_5`]: 0,
697
+ [`${homeTeamKey}_14_6`]: 0,
698
+ [`${homeTeamKey}_14_7`]: 0,
699
+ [`${homeTeamKey}_14_8`]: 0,
700
+ [`${homeTeamKey}_14_9`]: 0,
701
+ [`${homeTeamKey}_14_10`]: 0,
702
+ [`${homeTeamKey}_14_11`]: 0,
703
+ [`${homeTeamKey}_14_12`]: 0,
704
+ [`${homeTeamKey}_14_13`]: 0,
705
+ [`${awayTeamKey}_5_0`]: 0,
706
+ [`${awayTeamKey}_5_1`]: 0,
707
+ [`${awayTeamKey}_5_2`]: 0,
708
+ [`${awayTeamKey}_5_3`]: 0,
709
+ [`${awayTeamKey}_5_4`]: 0,
710
+ [`${awayTeamKey}_6_0`]: 0,
711
+ [`${awayTeamKey}_6_1`]: 0,
712
+ [`${awayTeamKey}_6_2`]: 0,
713
+ [`${awayTeamKey}_6_3`]: 0,
714
+ [`${awayTeamKey}_6_4`]: 0,
715
+ [`${awayTeamKey}_6_5`]: 0,
716
+ [`${awayTeamKey}_7_0`]: 0,
717
+ [`${awayTeamKey}_7_1`]: 0,
718
+ [`${awayTeamKey}_7_2`]: 0,
719
+ [`${awayTeamKey}_7_3`]: 0,
720
+ [`${awayTeamKey}_7_4`]: 0,
721
+ [`${awayTeamKey}_7_5`]: 0,
722
+ [`${awayTeamKey}_7_6`]: 0,
723
+ [`${awayTeamKey}_8_0`]: 0,
724
+ [`${awayTeamKey}_8_1`]: 0,
725
+ [`${awayTeamKey}_8_2`]: 0,
726
+ [`${awayTeamKey}_8_3`]: 0,
727
+ [`${awayTeamKey}_8_4`]: 0,
728
+ [`${awayTeamKey}_8_5`]: 0,
729
+ [`${awayTeamKey}_8_6`]: 0,
730
+ [`${awayTeamKey}_8_7`]: 0,
731
+ [`${awayTeamKey}_9_0`]: 0,
732
+ [`${awayTeamKey}_9_1`]: 0,
733
+ [`${awayTeamKey}_9_2`]: 0,
734
+ [`${awayTeamKey}_9_3`]: 0,
735
+ [`${awayTeamKey}_9_4`]: 0,
736
+ [`${awayTeamKey}_9_5`]: 0,
737
+ [`${awayTeamKey}_9_6`]: 0,
738
+ [`${awayTeamKey}_9_7`]: 0,
739
+ [`${awayTeamKey}_9_8`]: 0,
740
+ [`${awayTeamKey}_10_0`]: 0,
741
+ [`${awayTeamKey}_10_1`]: 0,
742
+ [`${awayTeamKey}_10_2`]: 0,
743
+ [`${awayTeamKey}_10_3`]: 0,
744
+ [`${awayTeamKey}_10_4`]: 0,
745
+ [`${awayTeamKey}_10_5`]: 0,
746
+ [`${awayTeamKey}_10_6`]: 0,
747
+ [`${awayTeamKey}_10_7`]: 0,
748
+ [`${awayTeamKey}_10_8`]: 0,
749
+ [`${awayTeamKey}_10_9`]: 0,
750
+ [`${awayTeamKey}_11_0`]: 0,
751
+ [`${awayTeamKey}_11_1`]: 0,
752
+ [`${awayTeamKey}_11_2`]: 0,
753
+ [`${awayTeamKey}_11_3`]: 0,
754
+ [`${awayTeamKey}_11_4`]: 0,
755
+ [`${awayTeamKey}_11_5`]: 0,
756
+ [`${awayTeamKey}_11_6`]: 0,
757
+ [`${awayTeamKey}_11_7`]: 0,
758
+ [`${awayTeamKey}_11_8`]: 0,
759
+ [`${awayTeamKey}_11_9`]: 0,
760
+ [`${awayTeamKey}_11_10`]: 0,
761
+ [`${awayTeamKey}_12_0`]: 0,
762
+ [`${awayTeamKey}_12_1`]: 0,
763
+ [`${awayTeamKey}_12_2`]: 0,
764
+ [`${awayTeamKey}_12_3`]: 0,
765
+ [`${awayTeamKey}_12_4`]: 0,
766
+ [`${awayTeamKey}_12_5`]: 0,
767
+ [`${awayTeamKey}_12_6`]: 0,
768
+ [`${awayTeamKey}_12_7`]: 0,
769
+ [`${awayTeamKey}_12_8`]: 0,
770
+ [`${awayTeamKey}_12_9`]: 0,
771
+ [`${awayTeamKey}_12_10`]: 0,
772
+ [`${awayTeamKey}_12_11`]: 0,
773
+ [`${awayTeamKey}_13_0`]: 0,
774
+ [`${awayTeamKey}_13_1`]: 0,
775
+ [`${awayTeamKey}_13_2`]: 0,
776
+ [`${awayTeamKey}_13_3`]: 0,
777
+ [`${awayTeamKey}_13_4`]: 0,
778
+ [`${awayTeamKey}_13_5`]: 0,
779
+ [`${awayTeamKey}_13_6`]: 0,
780
+ [`${awayTeamKey}_13_7`]: 0,
781
+ [`${awayTeamKey}_13_8`]: 0,
782
+ [`${awayTeamKey}_13_9`]: 0,
783
+ [`${awayTeamKey}_13_10`]: 0,
784
+ [`${awayTeamKey}_13_11`]: 0,
785
+ [`${awayTeamKey}_13_12`]: 0,
786
+ [`${awayTeamKey}_14_0`]: 0,
787
+ [`${awayTeamKey}_14_1`]: 0,
788
+ [`${awayTeamKey}_14_2`]: 0,
789
+ [`${awayTeamKey}_14_3`]: 0,
790
+ [`${awayTeamKey}_14_4`]: 0,
791
+ [`${awayTeamKey}_14_5`]: 0,
792
+ [`${awayTeamKey}_14_6`]: 0,
793
+ [`${awayTeamKey}_14_7`]: 0,
794
+ [`${awayTeamKey}_14_8`]: 0,
795
+ [`${awayTeamKey}_14_9`]: 0,
796
+ [`${awayTeamKey}_14_10`]: 0,
797
+ [`${awayTeamKey}_14_11`]: 0,
798
+ [`${awayTeamKey}_14_12`]: 0,
799
+ [`${awayTeamKey}_14_13`]: 0,
800
+ other: 0,
801
+ };
778
802
 
779
- if (allOddsAreZero) {
780
- return [];
781
- }
803
+ // Populate the oddsMap with the odds from this typeId's odds
804
+ odds.forEach((odd: any) => {
805
+ const normalizedSelection = `${odd.selection.toLowerCase().replace(/\s+/g, '_')}_${normalizeScoreLine(
806
+ odd.selectionLine
807
+ )}`;
808
+ if (oddsMap.hasOwnProperty(normalizedSelection)) {
809
+ oddsMap[normalizedSelection] = odd.price;
810
+ }
811
+ });
782
812
 
783
- const positionNames = Object.keys(oddsMap);
813
+ const allOddsAreZero = Object.values(oddsMap).every((odd) => odd === ZERO);
814
+
815
+ if (!allOddsAreZero) {
816
+ const positionNames = Object.keys(oddsMap);
817
+
818
+ // Create a market object for this typeId
819
+ const marketObject = {
820
+ homeTeam: commonData.homeTeam,
821
+ awayTeam: commonData.awayTeam,
822
+ line: 0,
823
+ positionNames: positionNames,
824
+ odds: Object.values(oddsMap),
825
+ type: odds?.[0]?.type ? odds[0].type : 'Correct Score',
826
+ typeId: Number(typeId),
827
+ sportId: odds?.[0]?.sportId ? odds[0].sportId : undefined,
828
+ };
829
+ marketObjects.push(marketObject);
830
+ }
831
+ });
784
832
 
785
- // Create the market object
786
- const marketObject = {
787
- homeTeam: commonData.homeTeam,
788
- awayTeam: commonData.awayTeam,
789
- line: 0,
790
- positionNames: positionNames,
791
- odds: Object.values(oddsMap),
792
- type: oddsArray.length > 0 && oddsArray[0].type ? oddsArray[0].type : 'Correct Score',
793
- typeId: oddsArray.length > 0 && oddsArray[0].typeId ? oddsArray[0].typeId : 10100,
794
- };
795
- return [marketObject];
833
+ return marketObjects;
796
834
  };
797
835
 
798
836
  /**