# tsch-ej-numbers

### Last Draw: 31.01.2025

<hr/>

## Abstract

This is an API to analyze the EuroJackpot draws.

https://en.wikipedia.org/wiki/Eurojackpot

<hr/>

<br/>

## Important

There is no guarantee that the data collected is correct or that the API methods are correct.
<br/>
<br/>
The results of API functions depend on the data set of the draws.
<br/>
<br/>

<hr/>

# Use in a Demo-App

[Demo-App (NextJS - Vercel)](https://next-ejb-thebuoyants-projects.vercel.app/)

<hr/>

# Installation

npm install --save tsch-ej-numbers

<hr/>

### Record Type (TRecord)

```
export type TRecord = {
  date: string;
  wn1: number;
  wn2: number;
  wn3: number;
  wn4: number;
  wn5: number;
  en1: number;
  en2: number;
  stake: number;
  countCl1: number;
  quotaCl1: number;
  countCl2: number;
  quotaCl2: number;
  countCl3: number;
  quotaCl3: number;
  countCl4: number;
  quotaCl4: number;
  countCl5: number;
  quotaCl5: number;
  countCl6: number;
  quotaCl6: number;
  countCl7: number;
  quotaCl7: number;
  countCl8: number;
  quotaCl8: number;
  countCl9: number;
  quotaCl9: number;
  countCl10: number;
  quotaCl10: number;
  countCl11: number;
  quotaCl11: number;
  countCl12: number;
  quotaCl12: number;
  day: string;
};
```

<hr/>

# API

| Function                   | Version |
| -------------------------- | ------- |
| getRecords                 | 1.0.x   |
| getLastDraw                | 1.0.x   |
| getFirstDraw               | 1.0.x   |
| getClassOneDraws           | 1.0.x   |
| getMaxJackpotDraws         | 1.0.x   |
| getWinningNumbersCount     | 1.0.x   |
| getEuroNumbersCount        | 1.0.x   |
| getDecadesCount            | 1.0.x   |
| getLowHighCount            | 1.0.x   |
| getMinMaxQuotaCount        | 1.1.x   |
| getTopNumbers              | 1.1.x   |
| getFlopNumbers             | 1.1.x   |
| getRecordByDate            | 1.2.x   |
| getTuesdayFridayCount      | 1.3.x   |
| getCountries               | 1.4.x   |
| getEvaluationPerYear       | 1.5.x   |
| getWinningNumberFrequency  | 1.6.x   |
| getEuroNumberFrequency     | 1.6.x   |
| getAverages                | 1.7.x   |
| getLastDrawOfWinningNumber | 1.8.x   |
| getLastDrawOfEuroNumber    | 1.8.x   |
| getWinningNumbersOverdue   | 1.9.x   |
| getEuroNumbersOverdue      | 1.9.x   |

<hr/>

## API-Details

### getRecords(limit)

Returns all records of available draws.

- limit
  - optional
  - number of last records
- return type: TRecord[]

Code:

```
import { getRecords } from "tsch-ej-numbers";

console.log(getRecords()); // all records
console.log(getRecords(0)); // all records
console.log(getRecords(10)); // last 10 records
```

<hr/>

### getLastDraw()

Returns the last current record.

- return type: TRecord

Code:

```
import { getLastDraw } from "tsch-ej-numbers";

console.log(getLastDraw());
```

<hr/>

### getFirstDraw()

Returns the first record.

- return type: TRecord

Code:

```
import { getFirstDraw } from "tsch-ej-numbers";

console.log(getFirstDraw());
```

<hr/>

### getClassOneDraws(limit)

Returns all records with success in class one.

- limit
  - optional
  - number of last records
- return type: TRecord[]

Code:

```
import { getClassOneDraws } from "tsch-ej-numbers";

console.log(getClassOneDraws(100));
```

<hr/>

### getMaxJackpotDraws(limit)

Returns all records with success in class one and a quota of 120.000.000,00 €.

- limit
  - optional
  - number of last records
- return type: TRecord[]

Code:

```
import { getMaxJackpotDraws } from "tsch-ej-numbers";

console.log(getMaxJackpotDraws());
console.log(getMaxJackpotDraws(0));
console.log(getMaxJackpotDraws(100));
```

<hr/>

### getWinningNumbersCount(limit)

Returns a key / value array for all winning numbers.

- limit
  - optional
  - number of last records
- return type: TWinningNumbersKeyValue[]

Code:

```
import { getWinningNumbersCount } from "tsch-ej-numbers";

console.log(getWinningNumbersCount());
console.log(getWinningNumbersCount(0));
console.log(getWinningNumbersCount(100));
```

<hr/>

### getEuroNumbersCount(limit)

Returns a key / value array for all euro numbers.

- limit
  - optional
  - number of last records
- return type: TEuroNumbersKeyValue[]

Code:

```
import { getEuroNumbersCount } from "tsch-ej-numbers";

console.log(getEuroNumbersCount());
console.log(getEuroNumbersCount(0));
console.log(getEuroNumbersCount(100));
```

<hr/>

### getDecadesCount()

Returns an object for decades with according count for all draws.

- countDecadeOne (winning numbers 1 - 10)
- countDecadeTwo (winning numbers 11 - 20)
- countDecadeThree (winning numbers 21 - 30)
- countDecadeFour (winning numbers 31 - 40)
- countDecadeFive (winning numbers 41 - 50)

Code:

```
import { getDecadesCount } from "tsch-ej-numbers";

console.log(getDecadesCount());
```

<hr/>

### getLowHighCount()

Returns an object for low and high sections with according count for all draws.

- countLow (winning numbers 1 - 25)
- countHigh (winning numbers 26 - 50)

Code:

```
import { getLowHighCount } from "tsch-ej-numbers";

console.log(getLowHighCount());
```

<hr/>

### getMinMaxQuotaCount()

Returns an object for all winning classes (1...12) with all corresponding sub-objects (min/max). These sub-objects return the date and the corresponding value for all draws.

Code:

```
import { getMinMaxQuotaCount } from "tsch-ej-numbers";

console.log(getMinMaxQuotaCount());
```

<hr/>

### getTopNumbers()

Returns an object with key-values for top winning and euro numbers for all draws.

- winning number (wn)
- euro number (en)

Code:

```
import { getTopNumbers } from "tsch-ej-numbers";

console.log(getTopNumbers());
```

<hr/>

### getFlopNumbers()

Returns an object with key-values for flop winning and euro numbers for all draws.

- winning number (wn)
- euro number (en)

Code:

```
import { getFlopNumbers } from "tsch-ej-numbers";

console.log(getFlopNumbers());
```

<hr/>

### getRecordByDate()

Returns a record for a given date.

- return type: TRecord | undefined
- undefined >>> no record available

Code:

```
import { getRecordByDate } from "tsch-ej-numbers";

console.log(getRecordByDate());
console.log(getRecordByDate("31.01.2020"));
console.log(getRecordByDate("32.01.2020"));
```

<hr/>

### getTuesdayFridayCount()

Returns an object for Tuesday and Friday with according count for all draws.

- countTuesday (number greater than 0)
- countFriday (number greater than 0)

Code:

```
import { getTuesdayFridayCount } from "tsch-ej-numbers";

console.log(getTuesdayFridayCount());
```

<hr/>

### getCountries()

Returns an array of objects for EuroJackpot countries with according codes.

- result example: [... {
  name: "Germany",
  alpha2Code: "DE",
  alpha3Code: "DEU",
  numericValue: "276",
  }, ...]

Code:

```
import { getCountries } from "tsch-ej-numbers";

console.log(getCountries());
```

<hr/>

### getEvaluationPerYear()

Returns an object for evaluation evaluation per year.

- result example: {...
  '2013': {
  numberOfDraws: 52,
  numberOfWinsClass1: 8,
  stakeTotal: 893232174,
  distributionTotal: 4321870.3,
  profitTotal: 888910303.7
  }, ...}

Code:

```
import { getEvaluationPerYear } from "tsch-ej-numbers";

console.log(getEvaluationPerYear());
```

<hr/>

### getWinningNumberFrequency(winningNumber)

Returns an array of strings for the selected number. If the array contains a date, then this exact number was drawn on that date. Otherwise, an empty value placeholder is shown.

- winningNumber (type: number) 1 ... 50

Code:

```
import { getWinningNumberFrequency } from "tsch-ej-numbers";

console.log(getWinningNumberFrequency(1));
console.log(getWinningNumberFrequency(50));
console.log(getWinningNumberFrequency());
```

<hr/>

### getEuroNumberFrequency(winningNumber)

Returns an array of strings for the selected number. If the array contains a date, then this exact number was drawn on that date. Otherwise, an empty value placeholder is shown.

- winningNumber (type: number) 1 ... 12

Code:

```
import { getEuroNumberFrequency } from "tsch-ej-numbers";

console.log(getEuroNumberFrequency(1));
console.log(getEuroNumberFrequency(12));
console.log(getEuroNumberFrequency());
```

<hr/>

### getAverages()

Returns two arrays for the average drawing of winning numbers and Euro numbers.

- key: winning or euro number
- drawingAvg: drawing average for according number
- drawingTotal: all draws for according number

Result:

```
{
  winningNumbers: [
    ...
    { key: '5', drawingAvg: 11, drawingTotal: 72 },
    ...
  ],
  euroNumbers: [
    ...
    { key: '5', drawingAvg: 5, drawingTotal: 174 },
    ...
  ]
}
```

Code:

```
import { getAverages } from "tsch-ej-numbers";

console.log(getAverages());
```

<hr/>

### getLastDrawOfWinningNumber(winningNumber)

Returns an object with key for according winning number and last draw:

- winning number (1 ... 50)
- type: number

Code:

```
import { getLastDrawOfWinningNumber } from "tsch-ej-numbers";

console.log(getLastDrawOfWinningNumber(5));


// result:   { key: '5', beforeDrawings: 7 }
```

<hr/>

### getLastDrawOfEuroNumber(euroNumber)

Returns an object with key for according euro number and last draw:

- euro number (1 ... 12)
- type: number

Code:

```
import { getLastDrawOfWinningNumber } from "tsch-ej-numbers";

console.log(getLastDrawOfEuroNumber(3));


// result:   { key: '3', beforeDrawings: 5 }
```

<hr/>

### getWinningNumbersOverdue()

Returns an array of objects with key and overdue (sorted):

- key as string for according winning number
- overdue as boolean (true/false)

Code:

```
import { getWinningNumbersOverdue } from "tsch-ej-numbers";

console.log(getWinningNumbersOverdue());


// result (sorted):   [
  { key: '1', overdue: false },
    ...
  { key: '25', overdue: false },
    ...
  { key: '5', overdue: true },
    ...
  { key: '48', overdue: true }
]
```

<hr/>

### getEuroNumbersOverdue()

Returns an array of objects with key and overdue (sorted):

- key as string for according euro number
- overdue as boolean (true/false)

Code:

```
import { getEuroNumbersOverdue } from "tsch-ej-numbers";

console.log(getEuroNumbersOverdue());


// result (sorted):   [
  { key: '1', overdue: false },
    ...
  { key: '7', overdue: false },
    ...
  { key: '2', overdue: true },
    ...
  { key: '10', overdue: true }
]
```
