Skip to content

Commit a647beb

Browse files
authored
Merge branch 'main' into vb/enable-L2A
2 parents c2cdf87 + ac9cbb5 commit a647beb

File tree

10 files changed

+336
-94
lines changed

10 files changed

+336
-94
lines changed

apps-rendering/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@
6363
"@storybook/react-webpack5": "8.6.14",
6464
"@storybook/theming": "8.6.14",
6565
"@types/clean-css": "4.2.11",
66-
"@types/compression": "1.7.5",
67-
"@types/express": "4.17.21",
66+
"@types/compression": "1.8.1",
67+
"@types/express": "5.0.1",
6868
"@types/html-webpack-plugin": "3.2.9",
6969
"@types/jest": "29.5.14",
7070
"@types/jsdom": "16.2.15",
@@ -79,13 +79,13 @@
7979
"buffer": "6.0.3",
8080
"clean-css": "5.3.3",
8181
"compare-versions": "6.1.0",
82-
"compression": "1.7.4",
82+
"compression": "1.8.0",
8383
"constructs": "10.4.2",
8484
"core-js": "3.33.3",
8585
"eslint": "8.56.0",
8686
"eslint-plugin-jsx-a11y": "6.7.1",
8787
"eslint-plugin-react": "7.33.2",
88-
"express": "4.21.2",
88+
"express": "5.1.0",
8989
"html-webpack-plugin": "5.6.3",
9090
"jest": "29.7.0",
9191
"jest-environment-jsdom": "29.7.0",

apps-rendering/src/server/server.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ app.use('/assets', express.static(path.resolve(__dirname, '../assets')));
396396
app.use('/assets', express.static(path.resolve(__dirname, '../dist/assets')));
397397
app.use(compression());
398398

399-
app.all('*', (request, response, next) => {
399+
app.all('/{*splat}', (request, response, next) => {
400400
const start = Date.now();
401401

402402
response.once('finish', () => {
@@ -409,22 +409,29 @@ app.all('*', (request, response, next) => {
409409
next();
410410
});
411411

412-
app.get('/healthcheck', (_req, res) => res.send('Ok'));
412+
app.get('/healthcheck', (_req, res) => {
413+
res.status(200).send('Ok');
414+
});
413415

414-
app.get('/favicon.ico', (_, res) => res.status(404).end());
415-
app.get('/fontSize.css', (_, res) => res.status(404).end());
416+
app.get('/favicon.ico', (_, res) => {
417+
res.sendStatus(404);
418+
});
419+
420+
app.get('/fontSize.css', (_, res) => {
421+
res.sendStatus(404);
422+
});
416423

417424
/**
418425
To enable testing in the mobile device emulators,
419426
this route handler adds compatability with DCR's route for apps articles.
420427
The DCR route follows the pattern:
421-
/AppsArticle/https://www.theguardian.com/cities/2019/sep/13/reclaimed-lakes-and-giant-airports-how-mexico-city-might-have-looked
428+
AppsArticle/https://www.theguardian.com/food/2020/mar/15/easter-taste-test-dan-lepard-hot-cross-bun-milk-dark-chocolate-mini-eggs-bunny-sloth
422429
*/
423430
app.get(
424-
'/AppsArticle/*',
431+
'/AppsArticle/*url',
425432
express.raw(),
426433
(req, res, next) => {
427-
const contentWebUrl = req.params[0];
434+
const contentWebUrl = req.originalUrl.split('/').slice(2).join('/');
428435
const articleId = new URL(contentWebUrl).pathname;
429436
req.params = {
430437
0: articleId,
@@ -436,16 +443,13 @@ app.get(
436443
);
437444

438445
app.get(
439-
'/:edition(uk|us|au|europe|international)?/rendered-items/*',
440-
express.raw(),
441-
serveArticleGet,
442-
);
443-
app.get(
444-
'/:edition(uk|us|au|europe|international)?/*',
446+
['/:edition/rendered-items/*path', '/rendered-items/*path'],
445447
express.raw(),
446448
serveArticleGet,
447449
);
448450

451+
app.get(['/:edition/*path', '/*path'], express.raw(), serveArticleGet);
452+
449453
app.post('/article', express.raw(), serveArticlePost);
450454

451455
app.post('/editions-article', express.raw(), serveEditionsArticlePost);

dotcom-rendering/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
"@types/compression": "1.7.5",
7474
"@types/connect": "3.4.38",
7575
"@types/dompurify": "3.0.2",
76-
"@types/express": "4.17.21",
76+
"@types/express": "5.0.1",
7777
"@types/he": "1.2.0",
7878
"@types/html-minifier-terser": "7.0.2",
7979
"@types/jest": "29.5.14",
@@ -130,7 +130,7 @@
130130
"eslint-plugin-unicorn": "48.0.1",
131131
"eslint-stats": "1.0.1",
132132
"execa": "5.1.1",
133-
"express": "4.21.2",
133+
"express": "5.1.0",
134134
"find": "0.3.0",
135135
"he": "1.2.0",
136136
"html-minifier-terser": "7.2.0",

dotcom-rendering/src/components/marketing/banners/designableBanner/DesignableBanner.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ const buildUrlForThreeTierChoiceCards = (
121121
);
122122
};
123123

124-
const DesignableBannerV2: ReactComponent<BannerRenderProps> = ({
124+
const DesignableBanner: ReactComponent<BannerRenderProps> = ({
125125
content,
126126
onCloseClick,
127127
articleCounts,
@@ -827,16 +827,10 @@ const styles = {
827827
`,
828828
};
829829

830-
const unvalidated = bannerWrapper(DesignableBannerV2, 'designable-banner');
831-
const validated = validatedBannerWrapper(
832-
DesignableBannerV2,
833-
'designable-banner',
834-
);
830+
const unvalidated = bannerWrapper(DesignableBanner, 'designable-banner');
831+
const validated = validatedBannerWrapper(DesignableBanner, 'designable-banner');
835832

836833
export {
837-
validated as DesignableBannerV2,
838-
unvalidated as DesignableBannerUnvalidatedV2,
839-
// temporarily until we can rename banner coming in through SDC
840834
validated as DesignableBanner,
841835
unvalidated as DesignableBannerUnvalidated,
842836
};

dotcom-rendering/src/frontend/feFront.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ export interface FEMediaAtom {
124124
duration?: number;
125125
source?: string;
126126
posterImage?: { allImages: Image[] };
127+
trailImage?: { allImages: Image[] };
127128
expired?: boolean;
128129
activeVersion?: number;
129130
// channelId?: string; // currently unused

dotcom-rendering/src/frontend/schemas/feFront.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3216,6 +3216,20 @@
32163216
"allImages"
32173217
]
32183218
},
3219+
"trailImage": {
3220+
"type": "object",
3221+
"properties": {
3222+
"allImages": {
3223+
"type": "array",
3224+
"items": {
3225+
"$ref": "#/definitions/Image"
3226+
}
3227+
}
3228+
},
3229+
"required": [
3230+
"allImages"
3231+
]
3232+
},
32193233
"expired": {
32203234
"type": "boolean"
32213235
},

dotcom-rendering/src/frontend/schemas/feTagPage.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,6 +1389,20 @@
13891389
"allImages"
13901390
]
13911391
},
1392+
"trailImage": {
1393+
"type": "object",
1394+
"properties": {
1395+
"allImages": {
1396+
"type": "array",
1397+
"items": {
1398+
"$ref": "#/definitions/Image"
1399+
}
1400+
}
1401+
},
1402+
"required": [
1403+
"allImages"
1404+
]
1405+
},
13921406
"expired": {
13931407
"type": "boolean"
13941408
},

dotcom-rendering/src/server/server.dev.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -96,25 +96,25 @@ const renderer = Router();
9696
// populates req.body with the content data from a production
9797
// URL if req.params.url is present
9898
renderer.use(getContentFromURLMiddleware);
99-
renderer.get('/Article/*', handleArticle);
100-
renderer.get('/ArticleJson/*', handleArticleJson);
101-
renderer.get('/AMPArticle/*', handleAMPArticle);
102-
renderer.get('/Interactive/*', handleInteractive);
103-
renderer.get('/AMPInteractive/*', handleAMPArticle);
104-
renderer.get('/Blocks/*', handleBlocks);
105-
renderer.get('/Front/*', handleFront);
106-
renderer.get('/FrontJSON/*', handleFrontJson);
107-
renderer.get('/TagPage/*', handleTagPage);
108-
renderer.get('/TagPageJSON/*', handleTagPageJson);
109-
renderer.get('/EmailNewsletters/*', handleAllEditorialNewslettersPage);
110-
renderer.get('/AppsArticle/*', handleAppsArticle);
111-
renderer.get('/AppsInteractive/*', handleAppsInteractive);
112-
renderer.get('/AppsBlocks/*', handleAppsBlocks);
113-
renderer.get('/EditionsCrossword/*', handleEditionsCrossword);
114-
renderer.get('/FootballMatchListPage/*', handleFootballMatchListPage);
115-
renderer.get('/FootballTablesPage/*', handleFootballTablesPage);
116-
renderer.get('/CricketMatchPage/*', handleCricketMatchPage);
117-
renderer.get('/FootballMatchSummaryPage/*', handleFootballMatchPage);
99+
renderer.get('/Article/*url', handleArticle);
100+
renderer.get('/ArticleJson/*url', handleArticleJson);
101+
renderer.get('/AMPArticle/*url', handleAMPArticle);
102+
renderer.get('/Interactive/*url', handleInteractive);
103+
renderer.get('/AMPInteractive/*url', handleAMPArticle);
104+
renderer.get('/Blocks/*url', handleBlocks);
105+
renderer.get('/Front/*url', handleFront);
106+
renderer.get('/FrontJSON/*url', handleFrontJson);
107+
renderer.get('/TagPage/*url', handleTagPage);
108+
renderer.get('/TagPageJSON/*url', handleTagPageJson);
109+
renderer.get('/EmailNewsletters/*url', handleAllEditorialNewslettersPage);
110+
renderer.get('/AppsArticle/*url', handleAppsArticle);
111+
renderer.get('/AppsInteractive/*url', handleAppsInteractive);
112+
renderer.get('/AppsBlocks/*url', handleAppsBlocks);
113+
renderer.get('/EditionsCrossword/*url', handleEditionsCrossword);
114+
renderer.get('/FootballMatchListPage/*url', handleFootballMatchListPage);
115+
renderer.get('/FootballTablesPage/*url', handleFootballTablesPage);
116+
renderer.get('/CricketMatchPage/*url', handleCricketMatchPage);
117+
renderer.get('/FootballMatchSummaryPage/*url', handleFootballMatchPage);
118118
// POST routes for running frontend locally
119119
renderer.post('/Article', handleArticle);
120120
renderer.post('/ArticleJson', handleArticleJson);

dotcom-rendering/src/server/server.prod.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,41 +99,41 @@ export const prodServer = (): void => {
9999

100100
// These GET's are for checking any given URL directly from PROD
101101
app.get(
102-
'/Article/*',
102+
'/Article/*url',
103103
logRenderTime,
104104
getContentFromURLMiddleware,
105105
handleArticle,
106106
);
107-
app.use('/ArticleJson/*', handleArticleJson);
107+
app.use('/ArticleJson/*url', handleArticleJson);
108108

109109
app.get(
110-
'/AMPArticle/*',
110+
'/AMPArticle/*url',
111111
logRenderTime,
112112
getContentFromURLMiddleware,
113113
handleAMPArticle,
114114
);
115115

116116
app.get(
117-
'/Front/*',
117+
'/Front/*url',
118118
logRenderTime,
119119
getContentFromURLMiddleware,
120120
handleFront,
121121
);
122122
app.get(
123-
'/FrontJSON/*',
123+
'/FrontJSON/*url',
124124
logRenderTime,
125125
getContentFromURLMiddleware,
126126
handleFrontJson,
127127
);
128128

129129
app.get(
130-
'/TagPage/*',
130+
'/TagPage/*url',
131131
logRenderTime,
132132
getContentFromURLMiddleware,
133133
handleTagPage,
134134
);
135135
app.get(
136-
'/TagPageJSON/*',
136+
'/TagPageJSON/*url',
137137
logRenderTime,
138138
getContentFromURLMiddleware,
139139
handleTagPageJson,
@@ -147,14 +147,14 @@ export const prodServer = (): void => {
147147
);
148148

149149
app.get(
150-
'/AppsArticle/*',
150+
'/AppsArticle/*url',
151151
logRenderTime,
152152
getContentFromURLMiddleware,
153153
handleAppsArticle,
154154
);
155155

156156
app.get(
157-
'/AppsInteractive/*',
157+
'/AppsInteractive/*url',
158158
logRenderTime,
159159
getContentFromURLMiddleware,
160160
handleAppsInteractive,

0 commit comments

Comments
 (0)