gatsby-core-theme 44.2.5 → 44.2.7
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/CHANGELOG.md +39 -0
- package/gatsby-node.mjs +83 -275
- package/package.json +1 -1
- package/src/components/organisms/anchor/template-one/anchor.stories.js +1 -1
- package/src/components/organisms/anchor/template-one/anchor.test.js +1 -1
- package/src/components/organisms/anchor/template-two/template-two.stories.js +1 -1
- package/src/components/organisms/anchor/template-two/template-two.test.js +1 -1
- package/src/constants/site-settings/main.mjs +1 -1
- package/src/helpers/server-data.js +2 -2
- package/src/resolver/archive.mjs +216 -0
- package/src/resolver/archive.test.js +179 -0
- package/src/{helpers/processor → resolver}/common.mjs +2 -2
- package/src/{helpers/processor → resolver}/cryptos.mjs +1 -1
- package/src/{helpers/processor → resolver}/cryptos.test.js +2 -2
- package/src/{helpers/processor → resolver}/games.mjs +1 -1
- package/src/{helpers/processor → resolver}/index.mjs +9 -11
- package/src/{helpers/processor → resolver}/index.test.js +1 -1
- package/src/{helpers/processor → resolver}/modules.mjs +16 -14
- package/src/{helpers/processor → resolver}/modules.test.js +1 -1
- package/src/{helpers/processor → resolver}/operators.mjs +1 -1
- package/src/{helpers/processor → resolver}/operators.test.js +2 -2
- package/src/{helpers/processor → resolver}/page.mjs +1 -1
- package/src/{helpers/processor → resolver}/payment.mjs +2 -2
- package/src/{helpers/processor → resolver}/providers.mjs +1 -1
- package/src/resolver/redirect.mjs +52 -0
- package/src/resolver/redirect.test.js +99 -0
- package/src/{helpers/processor → resolver}/relations.mjs +22 -1
- package/src/{helpers/processor → resolver}/sports-relations.mjs +1 -1
- package/src/{helpers/processor → resolver}/sports-relations.test.js +1 -1
- package/src/{helpers → services}/api.mjs +5 -6
- package/src/{helpers/fetch-site-settings.mjs → services/fetch.mjs} +14 -10
- package/tests/factories/modules/modules.factory.js +2 -3
- /package/src/helpers/{keygen.js → keygen.mjs} +0 -0
- /package/src/{helpers/processor → resolver}/common.test.js +0 -0
- /package/src/{helpers/processor → resolver}/games.test.js +0 -0
- /package/src/{helpers/processor → resolver}/page.test.js +0 -0
- /package/src/{helpers/processor → resolver}/processor.test.js +0 -0
- /package/src/{helpers/processor → resolver}/relations.test.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
## [44.2.7](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v44.2.6...v44.2.7) (2025-06-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* add license and map for pages that needs that path ([62ffa4b](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/62ffa4babe54d969b7513fe06bbcda0368f82e9b))
|
|
7
|
+
* enable reading time in rocket theme ([01b0e50](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/01b0e5049052196fa4154a8f762e580c3e5d294d))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
* Merge branch 'tm-5535-mapp-providers-license' into 'master' ([8ea899b](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/8ea899b2773c3a69c9f5d39cdec8acae1a6324ce))
|
|
11
|
+
|
|
12
|
+
## [44.2.6](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v44.2.5...v44.2.6) (2025-06-12)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* aligned branch with master ([96fa2db](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/96fa2db7af60fa9447c9ebe4e7beecb824efb290))
|
|
18
|
+
* folder structure ([6a630c9](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/6a630c916d1f5dc2b00792083e8f1ccf4079b4a1))
|
|
19
|
+
* merge conflicts ([40aad8d](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/40aad8d63c21721414f398be454a27ca3a4a9ad0))
|
|
20
|
+
* move hasArchive function to a helper ([cb1718c](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/cb1718cbf6c1e379c758bff468f7813e692068d1))
|
|
21
|
+
* remove unecessary coments ([a18c2e8](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/a18c2e87dff916f466f0c3a55f5fe0962ad13f00))
|
|
22
|
+
* remove unecessary constant ([197caf8](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/197caf89c65fc78bac6c487749fb67e3ceb3cc7c))
|
|
23
|
+
* rename files ([447e024](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/447e024c7da7c9c9253cc752985fc5d159c2dbaa))
|
|
24
|
+
* rename resolver components ([fb0dbf1](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/fb0dbf17e64b4b2c36b4789c9a7491e40a9c51f0))
|
|
25
|
+
* resolve conflicts ([236fc8e](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/236fc8e161d0a53efd3057ec2841b20dffd2d6b8))
|
|
26
|
+
* resolve conflicts ([a0d7004](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/a0d70044077ab7facfc80e96eba1a719e20e01c1))
|
|
27
|
+
* revert back the create page logic and tracking links logic back to gatsby-node file ([990a347](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/990a34728168bb27c60501fca078425d583515de))
|
|
28
|
+
* sameAs issue ([3b889c2](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/3b889c2a6139b91c7f9f56236c909cf0cb8a4d01))
|
|
29
|
+
* update build error ([7972c98](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/7972c9812f3d2bc24f4519e4c3a58a97912fd036))
|
|
30
|
+
* update createpage component as requested by reviewer ([35e04df](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/35e04df73315928777892926bbd39b097e08a748))
|
|
31
|
+
* update gatsby node by moving destructring it on smaller parts ([5b71b24](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/5b71b241f783960a2bc5735403cf4657d39ba906))
|
|
32
|
+
* update page an tracker components and their tests ([65577b9](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/65577b95b4ffe1bbecdecb1ea8f59b4f4fa4b1a5))
|
|
33
|
+
* update page context when 404 page ([5714135](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/571413596015baceaf97ef4cdc6b0341042978a1))
|
|
34
|
+
* update page context when 404 page ([dddb52d](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/dddb52dc088b10f2bcd4bfad4b191d9d885cc75b))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
* Merge branch 'tm-5125-gatsby-node-update' into 'master' ([c54609f](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/c54609f0bba05bb9fdd45113758e5c31644bec4a))
|
|
38
|
+
* Merge branch 'master' into tm-5125-gatsby-node-update ([262ee42](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/262ee4233e902827398e41ad927267c78c5ce9c5))
|
|
39
|
+
|
|
1
40
|
## [44.2.5](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v44.2.4...v44.2.5) (2025-06-11)
|
|
2
41
|
|
|
3
42
|
|
package/gatsby-node.mjs
CHANGED
|
@@ -10,18 +10,21 @@ import chalk from "chalk";
|
|
|
10
10
|
import fs from "fs";
|
|
11
11
|
import { dirname } from "path";
|
|
12
12
|
import { fileURLToPath } from "url";
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
13
|
+
import keygen from "./src/helpers/keygen.mjs";
|
|
14
|
+
import { getTranslations } from "./src/services/api.mjs";
|
|
15
|
+
import { fetchSiteSettings } from "./src/services/fetch.mjs";
|
|
15
16
|
import { generateTrackerLink } from "./src/helpers/generators.mjs";
|
|
16
17
|
import processor, {
|
|
17
18
|
processSitemapPages,
|
|
18
|
-
} from "./src/
|
|
19
|
+
} from "./src/resolver/index.mjs";
|
|
19
20
|
import settings from "./src/constants/settings.mjs";
|
|
20
|
-
import { translate, is404Page } from "./src/helpers/getters.mjs";
|
|
21
21
|
import {
|
|
22
22
|
clean,
|
|
23
23
|
removeUnwantedSections,
|
|
24
|
-
} from "./src/
|
|
24
|
+
} from "./src/resolver/common.mjs";
|
|
25
|
+
import { generateRedirects } from "./src/resolver/redirect.mjs";
|
|
26
|
+
import { translate, is404Page } from "./src/helpers/getters.mjs";
|
|
27
|
+
import { getArchivePages, hasArchiveModule } from "./src/resolver/archive.mjs";
|
|
25
28
|
|
|
26
29
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
27
30
|
const { cloneDeep, chunk, pick } = loadash;
|
|
@@ -32,7 +35,8 @@ let htmlSitemapPages = null;
|
|
|
32
35
|
let prefilledModules = [];
|
|
33
36
|
let operators = null;
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
const contextHolder = { context404: null };
|
|
39
|
+
|
|
36
40
|
let siteSchema = null;
|
|
37
41
|
let authors = null;
|
|
38
42
|
|
|
@@ -45,217 +49,23 @@ let siteSettingsData = null;
|
|
|
45
49
|
let siteGeneralData = null;
|
|
46
50
|
let allMarketsData = null;
|
|
47
51
|
let providersData = null;
|
|
52
|
+
let licensesData = null;
|
|
48
53
|
let gamesData = null;
|
|
49
54
|
let sportsData = null;
|
|
50
55
|
let ribbonsData = null;
|
|
51
56
|
let operatorData = null;
|
|
52
57
|
let cryptoExchangesData = null;
|
|
53
58
|
let cryptoBrokersData = null;
|
|
54
|
-
let countriesData = null
|
|
59
|
+
let countriesData = null;
|
|
55
60
|
let paymentData = null;
|
|
56
61
|
let allMarketPrefixes = [];
|
|
57
62
|
let allMarketSectionsData = null;
|
|
58
63
|
let schemaData = null;
|
|
59
64
|
let templatesData = null;
|
|
60
65
|
let defaultLanguage = null;
|
|
66
|
+
const pagesToCreate = [];
|
|
61
67
|
const relations = {};
|
|
62
68
|
|
|
63
|
-
function createArchivePage(
|
|
64
|
-
pageObject,
|
|
65
|
-
marketSections,
|
|
66
|
-
prefilledModules,
|
|
67
|
-
createPage
|
|
68
|
-
) {
|
|
69
|
-
const archiveModuleIndex = pageObject.sections.main.modules.findIndex(
|
|
70
|
-
(module) => module.name === "archive"
|
|
71
|
-
);
|
|
72
|
-
const archiveModule = pageObject.sections.main.modules[archiveModuleIndex];
|
|
73
|
-
let archivePages = cloneDeep(
|
|
74
|
-
pages[pageObject.market][archiveModule.model_type]
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
if (archiveModule.sort_by !== "random") {
|
|
78
|
-
archivePages = archivePages.sort((a, b) => {
|
|
79
|
-
const key = archiveModule.sort_by;
|
|
80
|
-
const dateA = new Date(a[key].replace(" ", "T"));
|
|
81
|
-
const dateB = new Date(b[key].replace(" ", "T"));
|
|
82
|
-
|
|
83
|
-
return archiveModule.sort_order === "ascending"
|
|
84
|
-
? dateA - dateB
|
|
85
|
-
: dateB - dateA;
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (process.env.CUSTOM_CONTENT_PAGES_PATH && archivePages) {
|
|
90
|
-
// eslint-disable-next-line array-callback-return
|
|
91
|
-
archivePages = archivePages && archivePages.filter((item) => {
|
|
92
|
-
if (item.path.includes(process.env.CUSTOM_CONTENT_PAGES_PATH)) {
|
|
93
|
-
return item;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
if (!archivePages) {
|
|
98
|
-
console.log(`Archive for ${pageObject.path} broken`);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (archiveModule.pagination_type !== "load_more") {
|
|
102
|
-
const numOfColumns = archiveModule.desktop_num_of_columns;
|
|
103
|
-
const calDefaultNrOfItems = (numOfColumns !== null ? numOfColumns : 4) * 3;
|
|
104
|
-
const numOfItemsPerPage = Math.sign(archiveModule.num_of_items)
|
|
105
|
-
? archiveModule.num_of_items
|
|
106
|
-
: calDefaultNrOfItems;
|
|
107
|
-
const chunked =
|
|
108
|
-
archivePages && chunk(cloneDeep(archivePages), numOfItemsPerPage);
|
|
109
|
-
|
|
110
|
-
if (chunked) {
|
|
111
|
-
chunked.forEach((value, index) => {
|
|
112
|
-
let activeItems = value;
|
|
113
|
-
if (value.type === "operator") {
|
|
114
|
-
activeItems = value.filter(
|
|
115
|
-
(item) => item.relation?.status === "active"
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
const page = cloneDeep(pageObject);
|
|
120
|
-
page.hasArchive = true;
|
|
121
|
-
const numOfPages = chunked.length;
|
|
122
|
-
const archive = cloneDeep(
|
|
123
|
-
page.sections.main.modules[archiveModuleIndex]
|
|
124
|
-
);
|
|
125
|
-
const pageTitleFromHercules = page.title;
|
|
126
|
-
archive.currentPage = 1 + index; // 0 skip 0
|
|
127
|
-
archive.numOfPages = numOfPages;
|
|
128
|
-
archive.rootPath =
|
|
129
|
-
pageObject.path.charAt(0) !== "/"
|
|
130
|
-
? `/${pageObject.path}`
|
|
131
|
-
: pageObject.path;
|
|
132
|
-
|
|
133
|
-
archive.items = activeItems.map((item) =>
|
|
134
|
-
processor.clonePage(item, false)
|
|
135
|
-
);
|
|
136
|
-
switch (archive.currentPage) {
|
|
137
|
-
case 1:
|
|
138
|
-
page.path = pageObject.path;
|
|
139
|
-
break;
|
|
140
|
-
default:
|
|
141
|
-
page.path = `${pageObject.path}/${translate(
|
|
142
|
-
translationsData[pageObject.language],
|
|
143
|
-
"archive_page_path",
|
|
144
|
-
"page"
|
|
145
|
-
)}/${archive.currentPage}`;
|
|
146
|
-
|
|
147
|
-
page.title = `
|
|
148
|
-
${pageTitleFromHercules}
|
|
149
|
-
${translate(
|
|
150
|
-
translationsData[pageObject.language],
|
|
151
|
-
"archive_page_title_suffix",
|
|
152
|
-
""
|
|
153
|
-
).replace("[number]", archive.currentPage)}
|
|
154
|
-
`;
|
|
155
|
-
|
|
156
|
-
page.meta_title = `${translate(
|
|
157
|
-
translationsData[pageObject.language],
|
|
158
|
-
"archive_title_prefix",
|
|
159
|
-
""
|
|
160
|
-
).replace("[number]", archive.currentPage)} ${page.meta_title} ${
|
|
161
|
-
process.env.ARCHIVE_SHOW_SUFFIX === "true"
|
|
162
|
-
? translate(
|
|
163
|
-
translationsData[pageObject.language],
|
|
164
|
-
"archive_title_prefix",
|
|
165
|
-
" - Page [number]"
|
|
166
|
-
).replace("[number]", archive.currentPage)
|
|
167
|
-
: ""
|
|
168
|
-
}`;
|
|
169
|
-
|
|
170
|
-
page.meta_description = `${translate(
|
|
171
|
-
translationsData[pageObject.language],
|
|
172
|
-
"archive_description_prefix",
|
|
173
|
-
""
|
|
174
|
-
).replace("[number]", archive.currentPage)} ${
|
|
175
|
-
page.meta_description
|
|
176
|
-
} ${
|
|
177
|
-
process.env.ARCHIVE_SHOW_SUFFIX === "true"
|
|
178
|
-
? translate(
|
|
179
|
-
translationsData[pageObject.language],
|
|
180
|
-
"archive_description_suffix",
|
|
181
|
-
" - Page [number]"
|
|
182
|
-
).replace("[number]", archive.currentPage)
|
|
183
|
-
: ""
|
|
184
|
-
}`;
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
page.sections.main.modules[archiveModuleIndex] = archive;
|
|
188
|
-
|
|
189
|
-
createPage({
|
|
190
|
-
path: page.path,
|
|
191
|
-
component: `${__dirname}/src/components/app.js`,
|
|
192
|
-
context: {
|
|
193
|
-
page,
|
|
194
|
-
marketSections,
|
|
195
|
-
prefilledModules,
|
|
196
|
-
siteGeneralData,
|
|
197
|
-
allMarkets: allMarketsData,
|
|
198
|
-
},
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
|
-
} else {
|
|
202
|
-
const page = cloneDeep(pageObject);
|
|
203
|
-
page.hasArchive = true;
|
|
204
|
-
createPage({
|
|
205
|
-
path: page.path,
|
|
206
|
-
component: `${__dirname}/src/components/app.js`,
|
|
207
|
-
context: {
|
|
208
|
-
page,
|
|
209
|
-
marketSections,
|
|
210
|
-
prefilledModules,
|
|
211
|
-
siteGeneralData,
|
|
212
|
-
allMarkets: allMarketsData,
|
|
213
|
-
},
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
} else {
|
|
217
|
-
const page = cloneDeep(pageObject);
|
|
218
|
-
const numOfItemsPerPage = Math.sign(archiveModule.num_of_items);
|
|
219
|
-
|
|
220
|
-
const archive = cloneDeep(page.sections.main.modules[archiveModuleIndex]);
|
|
221
|
-
archive.items = cloneDeep(archivePages)
|
|
222
|
-
.filter((item) =>
|
|
223
|
-
item.type === "operator" ? item.relation?.status === "active" : true
|
|
224
|
-
)
|
|
225
|
-
.map((item) => processor.clonePage(item));
|
|
226
|
-
|
|
227
|
-
page.sections.main.modules[archiveModuleIndex] = archive;
|
|
228
|
-
createPage({
|
|
229
|
-
path: page.path,
|
|
230
|
-
component: `${__dirname}/src/components/app.js`,
|
|
231
|
-
context: {
|
|
232
|
-
page,
|
|
233
|
-
marketSections,
|
|
234
|
-
prefilledModules,
|
|
235
|
-
siteGeneralData,
|
|
236
|
-
allMarkets: allMarketsData,
|
|
237
|
-
},
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
function hasArchiveModule(page) {
|
|
243
|
-
if (!page.sections) return false;
|
|
244
|
-
return Object.keys(page.sections).find((sectionKey) => {
|
|
245
|
-
if (!page.sections[sectionKey] || !page.sections[sectionKey].modules)
|
|
246
|
-
return false;
|
|
247
|
-
return page.sections[sectionKey].modules.find(
|
|
248
|
-
(module) => module.name === "archive"
|
|
249
|
-
);
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
function keygen() {
|
|
254
|
-
const chr4 = () => Math.random().toString(16).slice(-4);
|
|
255
|
-
|
|
256
|
-
return `${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}`;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
69
|
// eslint-disable-next-line import/prefer-default-export
|
|
260
70
|
export const createPages = async (
|
|
261
71
|
{ actions: { createPage } },
|
|
@@ -263,41 +73,7 @@ export const createPages = async (
|
|
|
263
73
|
) => {
|
|
264
74
|
process.env.GATSBY_SITE_NAME = String(themeOptions.siteName);
|
|
265
75
|
|
|
266
|
-
|
|
267
|
-
console.log(
|
|
268
|
-
chalk.magenta("info") + chalk.whiteBright(" creating rewrite rules")
|
|
269
|
-
);
|
|
270
|
-
if (siteSettingsData.redirects) {
|
|
271
|
-
Object.entries(siteSettingsData.redirects).forEach(([key, value]) => {
|
|
272
|
-
const normalizedFrom = value.from.replace(
|
|
273
|
-
`https://www.${process.env.GATSBY_SITE_NAME}`,
|
|
274
|
-
""
|
|
275
|
-
);
|
|
276
|
-
const normalizedTo = value.to.replace(
|
|
277
|
-
`https://www.${process.env.GATSBY_SITE_NAME}`,
|
|
278
|
-
""
|
|
279
|
-
);
|
|
280
|
-
|
|
281
|
-
if (![301, 302, 410].includes(parseInt(value.type))) return;
|
|
282
|
-
if ([301, 302].includes(parseInt(value.type))) {
|
|
283
|
-
const redirectName =
|
|
284
|
-
parseInt(value.type) === 301 ? "permanent" : "redirect";
|
|
285
|
-
|
|
286
|
-
const toSanitized = normalizedTo !== "/" ? normalizedTo.replace(/\/$/, '') : normalizedTo;
|
|
287
|
-
const to = toSanitized !== "/" ? (process.env.TRAILING_SLASH === 'true' ? `${toSanitized}/` : toSanitized) : toSanitized;
|
|
288
|
-
|
|
289
|
-
stream.write(
|
|
290
|
-
`rewrite (?i)^${normalizedFrom}/?$ ${to} ${redirectName}; \n`
|
|
291
|
-
);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
if (parseInt(value.type) === 410) {
|
|
295
|
-
stream.write(`location ~ /${normalizedFrom} { return 410; } \n`);
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
stream.end();
|
|
300
|
-
|
|
76
|
+
generateRedirects(siteSettingsData);
|
|
301
77
|
preconnectLinks = themeOptions.preconnectLinks || [];
|
|
302
78
|
console.log(chalk.magenta("info") + chalk.whiteBright(" starting processor"));
|
|
303
79
|
|
|
@@ -321,6 +97,7 @@ export const createPages = async (
|
|
|
321
97
|
crypto_exchanges: cryptoExchangesData,
|
|
322
98
|
crypto_brokers: cryptoBrokersData,
|
|
323
99
|
countries: countriesData,
|
|
100
|
+
operators_license: licensesData,
|
|
324
101
|
},
|
|
325
102
|
},
|
|
326
103
|
themeOptions,
|
|
@@ -347,12 +124,12 @@ export const createPages = async (
|
|
|
347
124
|
|
|
348
125
|
// create every single page
|
|
349
126
|
Object.keys(processed.site_markets).forEach((siteMarket) => {
|
|
350
|
-
if (!processed.pages[siteMarket]["page"])
|
|
127
|
+
if (!processed.pages[siteMarket]["page"]) {
|
|
351
128
|
processed.pages[siteMarket]["page"] = [];
|
|
352
|
-
|
|
129
|
+
}
|
|
130
|
+
|
|
353
131
|
Object.keys(processed.pages[siteMarket]).forEach((pageType) => {
|
|
354
132
|
processed.pages[siteMarket][pageType].forEach((page) => {
|
|
355
|
-
count += 1;
|
|
356
133
|
const marketSection = allMarketSectionsData[siteMarket];
|
|
357
134
|
prefilledModules = processed.prefilled_market_modules[siteMarket];
|
|
358
135
|
|
|
@@ -360,28 +137,40 @@ export const createPages = async (
|
|
|
360
137
|
processedPage.preconnect_links = preconnectLinks;
|
|
361
138
|
|
|
362
139
|
siteSchema = schemaData[page["market_id"]];
|
|
363
|
-
authors = siteSettingsData
|
|
140
|
+
authors = siteSettingsData;
|
|
364
141
|
|
|
365
|
-
// siteInfo, siteSchema and authors are added to page for schemaGenerator()
|
|
366
142
|
page.siteInfo = siteGeneralData;
|
|
367
143
|
page.siteSchema = siteSchema;
|
|
368
144
|
|
|
369
145
|
if (hasArchiveModule(page)) {
|
|
370
|
-
|
|
146
|
+
const archivePages = getArchivePages(
|
|
147
|
+
page,
|
|
148
|
+
marketSection,
|
|
149
|
+
prefilledModules,
|
|
150
|
+
translate,
|
|
151
|
+
translationsData,
|
|
152
|
+
processed.pages,
|
|
153
|
+
siteGeneralData,
|
|
154
|
+
allMarketsData,
|
|
155
|
+
__dirname
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
pagesToCreate.push(...archivePages);
|
|
371
159
|
return;
|
|
372
160
|
}
|
|
373
|
-
|
|
374
|
-
// TO DO: Move this logic in sports relation
|
|
375
161
|
if (page.relation_type === "event" && !page.relation) {
|
|
376
162
|
return;
|
|
377
163
|
}
|
|
378
|
-
|
|
379
164
|
const template = templatesData[page.template_id];
|
|
380
165
|
const autogenerated = template && template.autogenerated_content;
|
|
381
166
|
const contextData = clean({
|
|
382
167
|
page,
|
|
383
168
|
allMarkets: allMarketsData,
|
|
384
|
-
marketSections: removeUnwantedSections(
|
|
169
|
+
marketSections: removeUnwantedSections(
|
|
170
|
+
marketSection,
|
|
171
|
+
page.type,
|
|
172
|
+
ribbonsData
|
|
173
|
+
),
|
|
385
174
|
prefilledModules,
|
|
386
175
|
siteGeneralData,
|
|
387
176
|
autogenerated,
|
|
@@ -396,17 +185,17 @@ export const createPages = async (
|
|
|
396
185
|
: null;
|
|
397
186
|
|
|
398
187
|
if (page.path === "404") {
|
|
399
|
-
context404 = contextData;
|
|
188
|
+
contextHolder.context404 = contextData;
|
|
400
189
|
} else if (
|
|
401
190
|
page.path ===
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
191
|
+
`${pathPrefix || ""}${translate(
|
|
192
|
+
translationsData[page.language],
|
|
193
|
+
"sitemap",
|
|
194
|
+
"sitemap"
|
|
195
|
+
)}` ||
|
|
196
|
+
page.template === "sitemap"
|
|
407
197
|
) {
|
|
408
|
-
|
|
409
|
-
createPage({
|
|
198
|
+
pagesToCreate.push({
|
|
410
199
|
path: `/${page.path}`,
|
|
411
200
|
component: `${__dirname}/src/components/app.js`,
|
|
412
201
|
context: {
|
|
@@ -419,7 +208,7 @@ export const createPages = async (
|
|
|
419
208
|
page.path === `${pathPrefix || ""}s` ||
|
|
420
209
|
page.template === "search"
|
|
421
210
|
) {
|
|
422
|
-
|
|
211
|
+
pagesToCreate.push({
|
|
423
212
|
path: `/${page.path}`,
|
|
424
213
|
component: `${__dirname}/src/components/app-ssr.js`,
|
|
425
214
|
context: {
|
|
@@ -427,11 +216,13 @@ export const createPages = async (
|
|
|
427
216
|
},
|
|
428
217
|
});
|
|
429
218
|
} else {
|
|
430
|
-
const component =
|
|
431
|
-
|
|
432
|
-
|
|
219
|
+
const component =
|
|
220
|
+
settings.app_ssr.includes(page.template) ||
|
|
221
|
+
settings.site_ssr.includes(process.env.GATSBY_SITE_NAME)
|
|
222
|
+
? `${__dirname}/src/components/app-ssr.js`
|
|
223
|
+
: `${__dirname}/src/components/app.js`;
|
|
433
224
|
|
|
434
|
-
|
|
225
|
+
pagesToCreate.push({
|
|
435
226
|
path: page.path.charAt(0) === "/" ? page.path : `/${page.path}`,
|
|
436
227
|
component,
|
|
437
228
|
context: {
|
|
@@ -443,12 +234,15 @@ export const createPages = async (
|
|
|
443
234
|
});
|
|
444
235
|
});
|
|
445
236
|
|
|
446
|
-
|
|
447
|
-
const pageTemplate = "tracker";
|
|
237
|
+
pagesToCreate.forEach((config) => createPage(config));
|
|
448
238
|
|
|
449
239
|
// Creating Tracking links
|
|
240
|
+
const pageTemplate = "tracker";
|
|
241
|
+
const trackingPages = [];
|
|
242
|
+
|
|
450
243
|
Object.keys(operators || {}).forEach((operatorId) => {
|
|
451
244
|
const operator = operators[operatorId];
|
|
245
|
+
|
|
452
246
|
if (operator.links) {
|
|
453
247
|
const trackerLinks = Object.keys(operator.links);
|
|
454
248
|
const tracker = trackerLinks.map((key) =>
|
|
@@ -458,10 +252,10 @@ export const createPages = async (
|
|
|
458
252
|
.replace(" ", "_")
|
|
459
253
|
: null
|
|
460
254
|
);
|
|
255
|
+
|
|
461
256
|
const marketOperator = operator.market.match(/_(\w+)/)[1];
|
|
462
257
|
|
|
463
258
|
tracker.forEach((trackerPath) => {
|
|
464
|
-
// Create splash page
|
|
465
259
|
if (trackerPath) {
|
|
466
260
|
const trackerPageObject = {
|
|
467
261
|
meta_title: "Tracker",
|
|
@@ -472,21 +266,34 @@ export const createPages = async (
|
|
|
472
266
|
path: trackerPath,
|
|
473
267
|
meta_robots: ["noindex", "nofollow"],
|
|
474
268
|
};
|
|
475
|
-
|
|
269
|
+
|
|
270
|
+
trackingPages.push({
|
|
476
271
|
path: trackerPath,
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
page: trackerPageObject,
|
|
480
|
-
siteGeneralData,
|
|
481
|
-
operator: cloneDeep(operator),
|
|
482
|
-
isTracker: true,
|
|
483
|
-
isLiveStreamProvider: false,
|
|
484
|
-
},
|
|
272
|
+
page: trackerPageObject,
|
|
273
|
+
operator: cloneDeep(operator),
|
|
485
274
|
});
|
|
486
275
|
}
|
|
487
276
|
});
|
|
488
277
|
}
|
|
489
278
|
});
|
|
279
|
+
|
|
280
|
+
trackingPages.forEach(({ path, page, operator }) => {
|
|
281
|
+
createPage({
|
|
282
|
+
path,
|
|
283
|
+
component: `${__dirname}/src/components/${
|
|
284
|
+
process.env.IS_TRACKING_SSR === "true"
|
|
285
|
+
? "app-tracker-ssr.js"
|
|
286
|
+
: "app-tracker.js"
|
|
287
|
+
}`,
|
|
288
|
+
context: {
|
|
289
|
+
page,
|
|
290
|
+
siteGeneralData,
|
|
291
|
+
operator,
|
|
292
|
+
isTracker: true,
|
|
293
|
+
isLiveStreamProvider: false,
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
});
|
|
490
297
|
};
|
|
491
298
|
|
|
492
299
|
export const onCreatePage = async ({ page, actions }) => {
|
|
@@ -510,7 +317,7 @@ export const onCreatePage = async ({ page, actions }) => {
|
|
|
510
317
|
...page,
|
|
511
318
|
context: {
|
|
512
319
|
page: {
|
|
513
|
-
...context404.page,
|
|
320
|
+
...contextHolder.context404.page,
|
|
514
321
|
market: marketCode,
|
|
515
322
|
language: marketLang,
|
|
516
323
|
},
|
|
@@ -526,7 +333,7 @@ export const onCreatePage = async ({ page, actions }) => {
|
|
|
526
333
|
createPage({
|
|
527
334
|
path: page.path,
|
|
528
335
|
component: `${__dirname}/src/components/app.js`,
|
|
529
|
-
context: context404,
|
|
336
|
+
context: contextHolder.context404,
|
|
530
337
|
});
|
|
531
338
|
} else if (page.path.includes("preview")) {
|
|
532
339
|
createPage({
|
|
@@ -569,6 +376,7 @@ export const onPreBootstrap = async () => {
|
|
|
569
376
|
cryptoExchangesData,
|
|
570
377
|
cryptoBrokersData,
|
|
571
378
|
countriesData,
|
|
379
|
+
licensesData,
|
|
572
380
|
} = await fetchSiteSettings(process.env.GATSBY_SITE_NAME));
|
|
573
381
|
};
|
|
574
382
|
|
package/package.json
CHANGED
|
@@ -12,7 +12,7 @@ import getNavigation from '~tests/factories/sections/navigationStatic.factory';
|
|
|
12
12
|
import siteLogo from '../../../../../static/images/logo.svg';
|
|
13
13
|
import Anchor from '.';
|
|
14
14
|
import Navigation from '~organisms/navigation';
|
|
15
|
-
import { processAnchor } from '../../../../
|
|
15
|
+
import { processAnchor } from '../../../../resolver/modules.mjs';
|
|
16
16
|
import getPageData from '~tests/factories/pages/default.factory';
|
|
17
17
|
|
|
18
18
|
const page = getPageData();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, cleanup, fireEvent } from '@testing-library/react';
|
|
3
3
|
import '@testing-library/jest-dom/extend-expect';
|
|
4
|
-
import { processAnchor } from '../../../../
|
|
4
|
+
import { processAnchor } from '../../../../resolver/modules.mjs';
|
|
5
5
|
import '~tests/helpers/match-media.mock';
|
|
6
6
|
import Anchor from '.';
|
|
7
7
|
import getPageData from '~tests/factories/pages/default.factory';
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from '@storybook/addon-docs/blocks';
|
|
11
11
|
|
|
12
12
|
import Anchor from '.';
|
|
13
|
-
import { processAnchor } from '../../../../
|
|
13
|
+
import { processAnchor } from '../../../../resolver/modules.mjs';
|
|
14
14
|
import getPageData from '~tests/factories/pages/default.factory';
|
|
15
15
|
|
|
16
16
|
const page = getPageData();
|
|
@@ -3,7 +3,7 @@ import { render, cleanup, fireEvent } from '@testing-library/react';
|
|
|
3
3
|
import '@testing-library/jest-dom/extend-expect';
|
|
4
4
|
import '~tests/helpers/match-media.mock';
|
|
5
5
|
import Anchor from '.';
|
|
6
|
-
import { processAnchor } from '../../../../
|
|
6
|
+
import { processAnchor } from '../../../../resolver/modules.mjs';
|
|
7
7
|
import getPageData from '~tests/factories/pages/default.factory';
|
|
8
8
|
|
|
9
9
|
const page = getPageData();
|
|
@@ -6,8 +6,8 @@ import chalk from "chalk";
|
|
|
6
6
|
import loadSource from "~helpers/search-source";
|
|
7
7
|
import { deparam } from "~helpers/strings";
|
|
8
8
|
import { groupBy } from "~helpers/getters";
|
|
9
|
-
import processor from "
|
|
10
|
-
import { fetchSiteSettings } from "
|
|
9
|
+
import processor from "../resolver/index.mjs";
|
|
10
|
+
import { fetchSiteSettings } from "../services/fetch.mjs";
|
|
11
11
|
|
|
12
12
|
export async function getAPIData(page, url, headers, preview) {
|
|
13
13
|
if (preview) {
|