gatsby-matrix-theme 53.17.3 → 53.18.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.
package/.ci.yml CHANGED
@@ -44,6 +44,8 @@ Theme Publish:
44
44
  - yarn
45
45
  - cd matrix-theme/
46
46
  - yarn
47
+ - rm -rf /root/.npmrc /root/.npm
48
+ - npm cache clean --force
47
49
  - npx semantic-release@22.0.0 -b $CI_COMMIT_REF_NAME
48
50
  when: manual
49
51
  only:
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # [53.18.0](https://gitlab.com/g2m-gentoo/team-floyd/themes/matrix-theme/compare/v53.17.4...v53.18.0) (2026-05-21)
2
+
3
+
4
+ * Merge branch 'EN-534/sportstake-data-fixes' into 'master' ([605ec4c](https://gitlab.com/g2m-gentoo/team-floyd/themes/matrix-theme/commit/605ec4c5a7c682565a9f2fc24f794dbda4bb94d9))
5
+
6
+
7
+ ### Features
8
+
9
+ * refactor and fix sportstake data ([60e980c](https://gitlab.com/g2m-gentoo/team-floyd/themes/matrix-theme/commit/60e980ca8de6cd6a3222b586d9b875b234e7a169))
10
+ * refactor results ([a9f9389](https://gitlab.com/g2m-gentoo/team-floyd/themes/matrix-theme/commit/a9f9389da7308cfd4342c977ee78efa46a3e2535))
11
+
12
+ ## [53.17.4](https://gitlab.com/g2m-gentoo/team-floyd/themes/matrix-theme/compare/v53.17.3...v53.17.4) (2026-05-20)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * remove cashe on ci ([7306c15](https://gitlab.com/g2m-gentoo/team-floyd/themes/matrix-theme/commit/7306c15f0cc708e03a1f7ab64608c2975a936166))
18
+ * update core theme version ([c63dead](https://gitlab.com/g2m-gentoo/team-floyd/themes/matrix-theme/commit/c63dead4177bce839546b91feb24e756ceb806af))
19
+
1
20
  ## [53.17.3](https://gitlab.com/g2m-gentoo/team-floyd/themes/matrix-theme/compare/v53.17.2...v53.17.3) (2026-05-18)
2
21
 
3
22
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-matrix-theme",
3
- "version": "53.17.3",
3
+ "version": "53.18.0",
4
4
  "main": "index.js",
5
5
  "description": "Matrix Theme NPM Package",
6
6
  "author": "",
@@ -26,7 +26,7 @@
26
26
  "@react-icons/all-files": "^4.1.0",
27
27
  "@gigmedia/enigma-utils": "^1.20.0",
28
28
  "gatsby": "^5.11.0",
29
- "gatsby-core-theme": "^44.24.2",
29
+ "gatsby-core-theme": "^44.25.0",
30
30
  "gatsby-plugin-sharp": "^5.11.0",
31
31
  "gatsby-plugin-sitemap": "^6.13.1",
32
32
  "gatsby-transformer-sharp": "^5.11.0",
@@ -43,13 +43,13 @@ const Fixtures = ({ module, serverData }) => {
43
43
  }
44
44
  }, []);
45
45
 
46
- const mutateObjectAtributes = (obj) => {
46
+ const mutateObjectAtributes = (obj, fallbackDate) => {
47
47
  obj.forEach((element, index) => {
48
48
  obj[index] = {
49
49
  homeTeam: element.homeTeam,
50
50
  awayTeam: element.awayTeam,
51
51
  toss: element.toss_winner,
52
- dateTime: element.eventDate || element.dateTime,
52
+ dateTime: element.eventDate || element.dateTime || element.date || fallbackDate,
53
53
  };
54
54
  });
55
55
  };
@@ -73,19 +73,23 @@ const Fixtures = ({ module, serverData }) => {
73
73
  ? Object.values(games).slice(...query.firstTable)
74
74
  : Object.values(games)
75
75
  : [];
76
- mutateObjectAtributes(firstTableGames);
76
+ mutateObjectAtributes(firstTableGames, activeFixture?.drawDate);
77
77
 
78
78
  const secondTableGames = games ? Object.values(games).slice(...query.secondTable) : [];
79
- mutateObjectAtributes(secondTableGames);
79
+ mutateObjectAtributes(secondTableGames, activeFixture?.drawDate);
80
80
 
81
81
  const isLatestTab = (index === 0);
82
+ const drawDate = res?.drawDate ? new Date(res.drawDate) : null;
83
+ const hasValidDrawDate = drawDate && !Number.isNaN(drawDate.getTime());
82
84
  const label = isLatestTab
83
85
  ? 'Latest'
84
- : daysOfWeek[new Date(res.drawDate).getDay()];
86
+ : hasValidDrawDate
87
+ ? daysOfWeek[drawDate.getDay()]
88
+ : '';
85
89
 
86
- const results = `${monthsOfYear[new Date(res.drawDate).getMonth()]} ${new Date(
87
- res.drawDate
88
- ).getDate()}`;
90
+ const results = hasValidDrawDate
91
+ ? `${monthsOfYear[drawDate.getMonth()]} ${drawDate.getDate()}`
92
+ : '';
89
93
 
90
94
  return (
91
95
  <div label={label} results={results} key={res} className={`${styles.sportstake} ${hasTwoTables && styles.twoHalfs}`}>
@@ -30,10 +30,8 @@ const Results = ({ module, serverData }) => {
30
30
  }
31
31
 
32
32
  const isCricket = moduleName.includes('cricket');
33
- const isRugby = moduleName.includes('rugby');
34
33
  const isSportstake4 = moduleName.includes('sportstake4');
35
34
  const hasTwoTables = moduleName.includes('sportstake8') || isSportstake4;
36
- const newSportStakes = isCricket || isSportstake4 || isRugby;
37
35
  const query = getApiQueryParams(moduleName);
38
36
  const headerList = isCricket ? tableHeaderCricket : tableHeader;
39
37
 
@@ -42,17 +40,21 @@ const Results = ({ module, serverData }) => {
42
40
  const monthsOfYear = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',];
43
41
  const tabs = Object.values(serverData?.data[moduleName]);
44
42
 
45
- const mutateObjectAtributes = (obj) => {
43
+ const mutateObjectAtributes = (obj, fallbackDate) => {
46
44
  obj.forEach((element, index) => {
45
+ const fallbackScore =
46
+ element?.homeScore !== undefined && element?.awayScore !== undefined
47
+ ? `${element.homeScore}-${element.awayScore}`
48
+ : '';
47
49
  obj[index] = {
48
50
  homeTeam: element.homeTeam,
49
51
  awayTeam: element.awayTeam,
50
- toss: element.toss_winner,
51
- dateTime: element.eventDate,
52
+ toss: element.toss_winner || element.toss,
53
+ dateTime: element.eventDate || element.dateTime || fallbackDate,
52
54
  score: isCricket
53
- ? `${element.homeScore || '0/0'}`
54
- : `${element.homeScore}-${element.awayScore}`,
55
- results: element.result,
55
+ ? `${element.homeScore || element.score || '0/0'}`
56
+ : element.score || fallbackScore,
57
+ results: element.result || element.results,
56
58
  };
57
59
  });
58
60
  };
@@ -75,19 +77,23 @@ const Results = ({ module, serverData }) => {
75
77
  ? Object.values(games).slice(...query.firstTable)
76
78
  : Object.values(games)
77
79
  : [];
78
- newSportStakes && mutateObjectAtributes(firstTableGames);
80
+ mutateObjectAtributes(firstTableGames, activeFixture?.drawDate);
79
81
 
80
82
  const secondTableGames = games ? Object.values(games).slice(...query.secondTable) : [];
81
- newSportStakes && mutateObjectAtributes(secondTableGames);
83
+ mutateObjectAtributes(secondTableGames, activeFixture?.drawDate);
82
84
 
83
85
  const isLatestTab = (index === 0);
86
+ const drawDate = res?.drawDate ? new Date(res.drawDate) : null;
87
+ const hasValidDrawDate = drawDate && !Number.isNaN(drawDate.getTime());
84
88
  const label = isLatestTab
85
89
  ? 'Latest'
86
- : daysOfWeek[new Date(res.drawDate).getDay()];
90
+ : hasValidDrawDate
91
+ ? daysOfWeek[drawDate.getDay()]
92
+ : '';
87
93
 
88
- const results = res ? `${monthsOfYear[new Date(res.drawDate).getMonth()]} ${new Date(
89
- res.drawDate
90
- ).getDate()}` : '';
94
+ const results = hasValidDrawDate
95
+ ? `${monthsOfYear[drawDate.getMonth()]} ${drawDate.getDate()}`
96
+ : '';
91
97
 
92
98
  return (
93
99
  <div label={label} results={results} key={res} className={`${styles.sportstake} ${hasTwoTables && styles.twoHalfs}`}>
@@ -17,7 +17,23 @@ const SportstakeTable = ({
17
17
  const { divs } = fixture?.drawDetails || {};
18
18
  const { winnerData } = fixture?.more_info || {};
19
19
  const { totalPrizePool, estimatedJackpot, nextEstimatedJackpotAmt } = fixture?.more_info || {};
20
- const divsList = divs ? Object.values(divs) : winnerData ? Object.values(winnerData) : [];
20
+
21
+ const normalizeCurrencyValue = (value) => {
22
+ if (value === null || value === undefined || value === '') return null;
23
+ if (typeof value === 'number') return value;
24
+ const parsedValue = parseFloat(String(value).replace(/,/g, '').replace(/[^\d.-]/g, ''));
25
+ return Number.isNaN(parsedValue) ? null : parsedValue;
26
+ };
27
+
28
+ const rawDivsList = divs ? Object.values(divs) : winnerData ? Object.values(winnerData) : [];
29
+ const divsList = rawDivsList.map((item) => ({
30
+ ...item,
31
+ winners: item?.winners ?? item?.no_of_winners,
32
+ payout:
33
+ normalizeCurrencyValue(item?.payout) ??
34
+ normalizeCurrencyValue(item?.payout_per_winner_system) ??
35
+ normalizeCurrencyValue(item?.prizeAmount),
36
+ }));
21
37
 
22
38
  return (
23
39
  <div className={styles.divTable}>
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable no-prototype-builtins */
2
2
  /* eslint-disable no-nested-ternary */
3
+ /* eslint-disable no-underscore-dangle */
3
4
  /* eslint-disable import/prefer-default-export */
4
5
  // eslint-disable-next-line import/no-extraneous-dependencies
5
6
  import chalk from 'chalk';
@@ -177,22 +178,21 @@ export async function getAPIData(page, url, header, preview) {
177
178
  const previousMonth = month === 1 ? 12 : month - 1;
178
179
 
179
180
  const calendarData = await getCalendarData(query.lotteryName, month, date.getFullYear());
180
-
181
- const prevMonth =
181
+ const prevMonthData =
182
182
  calendarData.length <= 2
183
183
  ? await getCalendarData(query.lotteryName, previousMonth, date.getFullYear())
184
184
  : [];
185
185
 
186
186
  const orderedPrevMonth =
187
187
  calendarData.length === 0
188
- ? [prevMonth[prevMonth.length - 1], ...prevMonth.slice(0, prevMonth.length - 1)]
189
- : prevMonth;
188
+ ? [prevMonthData[prevMonthData.length - 1], ...prevMonthData.slice(0, prevMonthData.length - 1)]
189
+ : prevMonthData;
190
190
 
191
191
  const reorderedResultData = [
192
192
  calendarData[calendarData.length - 1],
193
193
  ...calendarData.slice(0, calendarData.length - 1),
194
194
  ...orderedPrevMonth,
195
- ].filter((item) => item && !Array.isArray(item));
195
+ ].filter((item) => item && !Array.isArray(item) && item._id);
196
196
 
197
197
  reorderedResultData.sort((a, b) => {
198
198
  const dateA = new Date(a.drawDate);
@@ -200,10 +200,10 @@ export async function getAPIData(page, url, header, preview) {
200
200
  return dateB.getTime() - dateA.getTime();
201
201
  });
202
202
 
203
- reorderedResultData[0] = reorderedResultData[0]
204
- ? // eslint-disable-next-line no-underscore-dangle
205
- await getResultsById(reorderedResultData[0]._id)
206
- : {};
203
+ if (reorderedResultData[0]?._id) {
204
+ const latestResult = await getResultsById(reorderedResultData[0]._id);
205
+ if (latestResult) reorderedResultData[0] = latestResult;
206
+ }
207
207
 
208
208
  return { [moduleName]: reorderedResultData };
209
209
  })
@@ -233,23 +233,21 @@ export async function getAPIData(page, url, header, preview) {
233
233
 
234
234
  const calendarData = await getCalendarData(query.lotteryName, month, date.getFullYear());
235
235
 
236
- if (!calendarData) return;
237
-
238
- const prevMonth =
236
+ const prevMonthData =
239
237
  calendarData.length <= 2
240
238
  ? await getCalendarData(query.lotteryName, previousMonth, date.getFullYear())
241
239
  : [];
242
240
 
243
241
  const orderedPrevMonth =
244
242
  calendarData.length === 0
245
- ? [prevMonth[prevMonth.length - 1], ...prevMonth.slice(0, prevMonth.length - 1)]
246
- : prevMonth;
243
+ ? [prevMonthData[prevMonthData.length - 1], ...prevMonthData.slice(0, prevMonthData.length - 1)]
244
+ : prevMonthData;
247
245
 
248
246
  const reorderedResultData = [
249
247
  calendarData[calendarData.length - 1],
250
248
  ...calendarData.slice(0, calendarData.length - 1),
251
249
  ...orderedPrevMonth,
252
- ].filter((item) => item && !Array.isArray(item));
250
+ ].filter((item) => item && !Array.isArray(item) && item._id);
253
251
 
254
252
  reorderedResultData.sort((a, b) => {
255
253
  const dateA = new Date(a.drawDate);
@@ -257,10 +255,10 @@ export async function getAPIData(page, url, header, preview) {
257
255
  return dateB.getTime() - dateA.getTime();
258
256
  });
259
257
 
260
- reorderedResultData[0] = reorderedResultData[0]
261
- ? // eslint-disable-next-line no-underscore-dangle
262
- await getResultsById(reorderedResultData[0]._id)
263
- : null;
258
+ if (reorderedResultData[0]?._id) {
259
+ const latestResult = await getResultsById(reorderedResultData[0]._id);
260
+ if (latestResult) reorderedResultData[0] = latestResult;
261
+ }
264
262
 
265
263
  return { [moduleName]: reorderedResultData };
266
264
  })
@@ -292,17 +290,15 @@ export async function getAPIData(page, url, header, preview) {
292
290
 
293
291
  const availableDates = await getAvailableDrawDays(apiBaseNames[0], 'WEEKEND', month, year);
294
292
 
295
- if (!availableDates) return;
296
-
297
- const prevMonth =
293
+ const prevMonthData =
298
294
  availableDates.length <= 2
299
295
  ? await getAvailableDrawDays(apiBaseNames[0], 'WEEKEND', previousMonth, year)
300
296
  : [];
301
297
 
302
298
  const orderedPrevMonth =
303
299
  availableDates.length === 0
304
- ? [prevMonth[prevMonth.length - 1], ...prevMonth.slice(0, prevMonth.length - 1)]
305
- : prevMonth;
300
+ ? [prevMonthData[prevMonthData.length - 1], ...prevMonthData.slice(0, prevMonthData.length - 1)]
301
+ : prevMonthData;
306
302
 
307
303
  const reorderedDates = [
308
304
  availableDates[availableDates.length - 1],
@@ -342,10 +338,10 @@ export async function getAPIData(page, url, header, preview) {
342
338
  types.map(async (type) => {
343
339
  const data = await getLottoUKdata(true, false, type);
344
340
  const calendarData = await getCalendarData(type, month, year);
345
- const prevMonth =
341
+ const prevMonthData =
346
342
  calendarData.length <= 2 ? await getCalendarData(type, previousMonth, year) : [];
347
343
 
348
- const reorderedDates = [...calendarData, ...prevMonth].filter(
344
+ const reorderedDates = [...calendarData, ...prevMonthData].filter(
349
345
  (item) => item && !Array.isArray(item)
350
346
  );
351
347
 
@@ -53,7 +53,7 @@ export const getAvailableDrawDays = async (
53
53
 
54
54
  const data = res ? await res.json() : { success: false };
55
55
 
56
- return data.data;
56
+ return Array.isArray(data?.data) ? data.data : [];
57
57
  };
58
58
 
59
59
  /* -------------------------------------------------------------------------- */
@@ -76,5 +76,5 @@ export const getCalendarData = async (type, month, year) => {
76
76
  `${process.env.LOTTERY_API_URL}calendar/${type}?month=${month}&year=${year}`
77
77
  ).catch(() => null);
78
78
  const data = res ? await res.json() : { success: false };
79
- return data.data;
79
+ return Array.isArray(data?.data) ? data.data : [];
80
80
  };
@@ -1,11 +1,13 @@
1
1
  export const formatScore = (val) => {
2
2
  let scores = val?.split('-');
3
3
  scores = scores?.map((score) => {
4
- if (score.length === 2 && score.charAt(0) === '0') {
5
- return score.substring(1);
4
+ const trimmedScore = score?.trim();
5
+
6
+ if (/^0\d$/.test(trimmedScore)) {
7
+ return trimmedScore.substring(1);
6
8
  }
7
9
 
8
- return score;
10
+ return trimmedScore;
9
11
  });
10
12
 
11
13
  return scores?.join(' - ');