@newskit-render/core 2.13.2 → 2.16.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/CHANGELOG.md +24 -0
- package/README.md +7 -13
- package/config/environment.ts +2 -0
- package/cypress/e2e/account/holiday-stop.spec.js +52 -17
- package/cypress/fixtures/holiday-stops.json +40 -0
- package/cypress/support/commands.js +12 -6
- package/next.config.js +12 -0
- package/package.json +7 -7
- package/pages/api/competitions-sitemap.ts +20 -0
- package/pages/api/pages-sitemap.ts +28 -0
- package/pages/api/robots.ts +19 -0
- package/pages/api/sitemap.ts +1 -7
- package/public/robots.txt +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [2.16.0](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@2.16.0-alpha.0...@newskit-render/core@2.16.0) (2022-11-09)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [2.15.0](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@2.15.0-alpha.0...@newskit-render/core@2.15.0) (2022-11-04)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [2.14.0](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@2.14.0-alpha.0...@newskit-render/core@2.14.0) (2022-11-04)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @newskit-render/core
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [2.13.2](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@2.13.2-alpha.0...@newskit-render/core@2.13.2) (2022-11-03)
|
|
7
31
|
|
|
8
32
|
**Note:** Version bump only for package @newskit-render/core
|
package/README.md
CHANGED
|
@@ -22,6 +22,7 @@ or with npm
|
|
|
22
22
|
```
|
|
23
23
|
npm start
|
|
24
24
|
```
|
|
25
|
+
|
|
25
26
|
## Rquired Environment Variables
|
|
26
27
|
|
|
27
28
|
In order to run the application,we need the following required environment variables.
|
|
@@ -34,6 +35,7 @@ OKTA_CLIENT_SECRET=""
|
|
|
34
35
|
OKTA_DOMAIN=""
|
|
35
36
|
PUBLISHER=""
|
|
36
37
|
```
|
|
38
|
+
|
|
37
39
|
## Endpoints
|
|
38
40
|
|
|
39
41
|
GET /api/recommendations - Returns a list on recommendations articles based on the recommendations slug.The recommendations slug is provided be the query param `articleId`.Also accepts a `userId` which allows us to fetch personalised recommendations.
|
|
@@ -139,8 +141,6 @@ export const themesMap = {
|
|
|
139
141
|
}
|
|
140
142
|
```
|
|
141
143
|
|
|
142
|
-
|
|
143
|
-
|
|
144
144
|
- `translationsMap` is used for re-mapping variables like site title, or any other string for each brand. Example:
|
|
145
145
|
|
|
146
146
|
```
|
|
@@ -153,11 +153,8 @@ export const timesStrings = {
|
|
|
153
153
|
}
|
|
154
154
|
```
|
|
155
155
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
- `themesMap` is used for mapping the theme for each brand.
|
|
159
|
-
Brand names live in the `PUBLISHER` object
|
|
160
|
-
|
|
156
|
+
- `themesMap` is used for mapping the theme for each brand.
|
|
157
|
+
Brand names live in the `PUBLISHER` object
|
|
161
158
|
|
|
162
159
|
In context folder `context/multi-tenancy`
|
|
163
160
|
Add a multi-tenancy context that will keep the current tenant:
|
|
@@ -196,8 +193,7 @@ export const useMultiTenancy = () => useContext(MultiTenancyContext)
|
|
|
196
193
|
export default MultiTenancyProvider
|
|
197
194
|
```
|
|
198
195
|
|
|
199
|
-
|
|
200
|
-
Now you need to update `_app.js`. To pass the tenant to the app, you need to wrap it in `MultitenancyProvide`:
|
|
196
|
+
Now you need to update `_app.js`. To pass the tenant to the app, you need to wrap it in `MultitenancyProvide`:
|
|
201
197
|
|
|
202
198
|
```
|
|
203
199
|
interface MyAppProps extends AppProps {
|
|
@@ -217,7 +213,6 @@ function MyApp({ Component, pageProps, tenant }: MyAppProps) {
|
|
|
217
213
|
export default MyApp
|
|
218
214
|
```
|
|
219
215
|
|
|
220
|
-
|
|
221
216
|
Then call the `getTenant()` helper function in `getInitialProps()`. This function extracts the brands' hostname ( domain name ) from the request headers and then we save the tenant in the context provider:
|
|
222
217
|
|
|
223
218
|
```
|
|
@@ -232,10 +227,9 @@ MyApp.getInitialProps = async ({ Component, ctx }: AppContextType) => {
|
|
|
232
227
|
}
|
|
233
228
|
```
|
|
234
229
|
|
|
235
|
-
|
|
236
230
|
### How to set the theme for each tenant
|
|
237
231
|
|
|
238
|
-
You can use the `useMultiTenancy` hook anywhere in the code to get the current tenant
|
|
232
|
+
You can use the `useMultiTenancy` hook anywhere in the code to get the current tenant
|
|
239
233
|
|
|
240
234
|
In `context/app-context.js`:
|
|
241
235
|
|
|
@@ -277,4 +271,4 @@ code here
|
|
|
277
271
|
|
|
278
272
|
This comment is to denote that the line or lines in between are effected by the running of the [@newskit-render/create-render-app package](https://github.com/newscorp-ghfb/ncu-newskit-render/tree/master/packages/create-render-app).
|
|
279
273
|
|
|
280
|
-
If you our touching / modifiying code with these comments you need to be aware that you may affect the successful running of the [@newskit-render/create-render-app package](https://github.com/newscorp-ghfb/ncu-newskit-render/tree/master/packages/create-render-app).
|
|
274
|
+
If you our touching / modifiying code with these comments you need to be aware that you may affect the successful running of the [@newskit-render/create-render-app package](https://github.com/newscorp-ghfb/ncu-newskit-render/tree/master/packages/create-render-app).
|
package/config/environment.ts
CHANGED
|
@@ -40,6 +40,7 @@ export const getSanitizedConfig = () => {
|
|
|
40
40
|
algoliaAppId: process.env.ALGOLIA_APP_ID as string,
|
|
41
41
|
algoliaApiKey: process.env.ALGOLIA_API_KEY as string,
|
|
42
42
|
algoliaIndex: process.env.ALGOLIA_INDEX as string,
|
|
43
|
+
nodeEnviroment: process.env.NODE_ENV as string,
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
|
|
@@ -67,4 +68,5 @@ export const {
|
|
|
67
68
|
algoliaAppId,
|
|
68
69
|
algoliaApiKey,
|
|
69
70
|
algoliaIndex,
|
|
71
|
+
nodeEnviroment,
|
|
70
72
|
} = config
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as userHolidayStops from '../../fixtures/holiday-stops.json'
|
|
2
|
+
|
|
1
3
|
describe('Book a holiday stop', () => {
|
|
2
4
|
beforeEach(() => {
|
|
3
5
|
cy.GetAcsSession()
|
|
@@ -17,22 +19,55 @@ describe('Book a holiday stop', () => {
|
|
|
17
19
|
})
|
|
18
20
|
})
|
|
19
21
|
|
|
20
|
-
describe
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
MAIN_COOKIE_NAME: 'acs_tnl',
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
() => {
|
|
28
|
-
beforeEach(() => {
|
|
29
|
-
cy.GetTnlAcsSession()
|
|
30
|
-
cy.mockConsentAndVisit('/account/holiday-stop/book')
|
|
31
|
-
})
|
|
22
|
+
describe('Upcoming holiday stops', () => {
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
cy.mockConsent()
|
|
25
|
+
})
|
|
32
26
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
it('should navigate to the Upcoming holiday stops and display the list of upcoming holiday stops', () => {
|
|
28
|
+
cy.visitAndOverrideNextData(
|
|
29
|
+
'/account/holiday-stop/book',
|
|
30
|
+
'props.pageProps.user.holidayStops',
|
|
31
|
+
userHolidayStops.holidayStops
|
|
32
|
+
)
|
|
33
|
+
cy.get('a[href="/account/holiday-stop/upcoming-holiday-stops"]').should(
|
|
34
|
+
'exist'
|
|
35
|
+
)
|
|
36
|
+
cy.visitAndOverrideNextData(
|
|
37
|
+
'/account/holiday-stop/upcoming-holiday-stops',
|
|
38
|
+
'props.pageProps.user.holidayStops',
|
|
39
|
+
userHolidayStops.holidayStops
|
|
40
|
+
)
|
|
41
|
+
cy.get('[data-testid="content-list"] > ul > li').should(
|
|
42
|
+
'have.length.of.at.least',
|
|
43
|
+
6
|
|
44
|
+
)
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
describe('Cancel holiday stop', () => {
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
cy.mockConsent()
|
|
51
|
+
cy.visitAndOverrideNextData(
|
|
52
|
+
'/account/holiday-stop/book',
|
|
53
|
+
'props.pageProps.user.holidayStops',
|
|
54
|
+
userHolidayStops.holidayStops
|
|
55
|
+
)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('should show popup and cancel holiday stop', () => {
|
|
59
|
+
cy.intercept('POST', '/api/account/mutate', {
|
|
60
|
+
statusCode: 200,
|
|
61
|
+
body: { data: { deleteUserHolidayStop: { success: true } } },
|
|
36
62
|
})
|
|
37
|
-
|
|
38
|
-
)
|
|
63
|
+
cy.get('[data-testid="content-list"] > ul > li')
|
|
64
|
+
.eq(1)
|
|
65
|
+
.contains('Cancel')
|
|
66
|
+
.click()
|
|
67
|
+
cy.get('[data-testid="primary-button"]').click()
|
|
68
|
+
cy.contains(
|
|
69
|
+
'[data-testid="toast-container"]',
|
|
70
|
+
'Your holiday stop was successfully cancelled'
|
|
71
|
+
)
|
|
72
|
+
})
|
|
73
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"holidayStops": [
|
|
3
|
+
{
|
|
4
|
+
"id": "a2U7Y000001r8c9UAA",
|
|
5
|
+
"startDate": "2022-10-10T00:00:00",
|
|
6
|
+
"endDate": "2022-11-11T00:00:00",
|
|
7
|
+
"status": "Requested"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "a2U7Y000001sijmUAA",
|
|
11
|
+
"startDate": "2024-04-25T00:00:00",
|
|
12
|
+
"endDate": "2024-04-28T00:00:00",
|
|
13
|
+
"status": "Requested"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "a2U7Y000001sijwUAA",
|
|
17
|
+
"startDate": "2024-06-25T00:00:00",
|
|
18
|
+
"endDate": "2024-06-28T00:00:00",
|
|
19
|
+
"status": "Requested"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "a2U7Y000001sijXUAQ",
|
|
23
|
+
"startDate": "2024-01-25T00:00:00",
|
|
24
|
+
"endDate": "2024-01-28T00:00:00",
|
|
25
|
+
"status": "Requested"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "a2U7Y000001sijcUAA",
|
|
29
|
+
"startDate": "2024-02-25T00:00:00",
|
|
30
|
+
"endDate": "2024-02-28T00:00:00",
|
|
31
|
+
"status": "Requested"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "a2U7Y000001sijrUAA",
|
|
35
|
+
"startDate": "2024-05-25T00:00:00",
|
|
36
|
+
"endDate": "2024-05-28T00:00:00",
|
|
37
|
+
"status": "Requested"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
//Note: Check periodically if these consent cookie values exprire
|
|
2
2
|
import _ from 'lodash'
|
|
3
|
-
import {
|
|
4
|
-
nuktSPConsentValue,
|
|
5
|
-
consentUUIDValue,
|
|
3
|
+
import {
|
|
4
|
+
nuktSPConsentValue,
|
|
5
|
+
consentUUIDValue,
|
|
6
6
|
_sp_local_state,
|
|
7
7
|
_sp_user_consent_7377,
|
|
8
8
|
_sp_non_keyed_local_state,
|
|
@@ -10,8 +10,14 @@ import {
|
|
|
10
10
|
|
|
11
11
|
const setConentLocalStorage = () => {
|
|
12
12
|
localStorage.setItem('_sp_local_state', JSON.stringify(_sp_local_state))
|
|
13
|
-
localStorage.setItem(
|
|
14
|
-
|
|
13
|
+
localStorage.setItem(
|
|
14
|
+
'_sp_user_consent_7377',
|
|
15
|
+
JSON.stringify(_sp_user_consent_7377)
|
|
16
|
+
)
|
|
17
|
+
localStorage.setItem(
|
|
18
|
+
'_sp_non_keyed_local_state',
|
|
19
|
+
JSON.stringify(_sp_non_keyed_local_state)
|
|
20
|
+
)
|
|
15
21
|
}
|
|
16
22
|
|
|
17
23
|
Cypress.Commands.add('mockConsentAndVisit', (url) => {
|
|
@@ -87,7 +93,7 @@ Cypress.Commands.add('GetTnlAcsSession', (user = 'tnl') => {
|
|
|
87
93
|
},
|
|
88
94
|
body: {
|
|
89
95
|
rememberMe: false,
|
|
90
|
-
gotoUrl: 'https://login.staging-
|
|
96
|
+
gotoUrl: 'https://login.staging-thetimes.co.uk/',
|
|
91
97
|
sso: false,
|
|
92
98
|
authCredentials: {
|
|
93
99
|
username,
|
package/next.config.js
CHANGED
|
@@ -37,6 +37,14 @@ module.exports = withBundleAnalyzer(
|
|
|
37
37
|
source: '/sitemap.xml',
|
|
38
38
|
destination: '/api/sitemap',
|
|
39
39
|
},
|
|
40
|
+
{
|
|
41
|
+
source: '/pages-sitemap.xml',
|
|
42
|
+
destination: '/api/pages-sitemap',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
source: '/competitions-sitemap.xml',
|
|
46
|
+
destination: '/api/competitions-sitemap',
|
|
47
|
+
},
|
|
40
48
|
{
|
|
41
49
|
source: '/news-sitemap.xml',
|
|
42
50
|
destination: '/api/news-sitemap',
|
|
@@ -45,6 +53,10 @@ module.exports = withBundleAnalyzer(
|
|
|
45
53
|
source: '/feed',
|
|
46
54
|
destination: '/api/feed',
|
|
47
55
|
},
|
|
56
|
+
{
|
|
57
|
+
source: '/robots.txt',
|
|
58
|
+
destination: '/api/robots',
|
|
59
|
+
},
|
|
48
60
|
]
|
|
49
61
|
},
|
|
50
62
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newskit-render/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.16.0",
|
|
4
4
|
"description": "Newskit Render - Core package",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"@emotion/styled": "11.10.4",
|
|
41
41
|
"@newskit-render/api": "^1.2.1",
|
|
42
42
|
"@newskit-render/auth": "^1.1.1",
|
|
43
|
-
"@newskit-render/checkout": "^1.5.
|
|
43
|
+
"@newskit-render/checkout": "^1.5.3",
|
|
44
44
|
"@newskit-render/feature-flags": "^1.2.0",
|
|
45
|
-
"@newskit-render/feed": "^1.
|
|
46
|
-
"@newskit-render/my-account": "^3.
|
|
47
|
-
"@newskit-render/shared-components": "^1.
|
|
48
|
-
"@newskit-render/standalone-components": "^1.9.
|
|
49
|
-
"@newskit-render/validation": "^1.
|
|
45
|
+
"@newskit-render/feed": "^1.2.0",
|
|
46
|
+
"@newskit-render/my-account": "^3.13.0",
|
|
47
|
+
"@newskit-render/shared-components": "^1.12.0",
|
|
48
|
+
"@newskit-render/standalone-components": "^1.9.1",
|
|
49
|
+
"@newskit-render/validation": "^1.3.0",
|
|
50
50
|
"cross-fetch": "3.1.5",
|
|
51
51
|
"graphql": "15.6.0",
|
|
52
52
|
"lodash.get": "4.4.2",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NextApiRequest, NextApiResponse } from 'next'
|
|
2
|
+
import { genericSitemap } from '@newskit-render/feed'
|
|
3
|
+
import { Publisher } from '@newskit-render/api'
|
|
4
|
+
import { getHost } from '@newskit-render/shared-components'
|
|
5
|
+
import { publisher, sitemapPublicationName } from '../../config'
|
|
6
|
+
/* We do not have sitemap date for Demo so using Virgin,
|
|
7
|
+
* This can be removed and replace with just - publisher: process.env.PUBLISHER as PublisherGroup, in created projects
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const handler = async (req: NextApiRequest, res: NextApiResponse) =>
|
|
11
|
+
genericSitemap({
|
|
12
|
+
res,
|
|
13
|
+
dataType: 'competitions',
|
|
14
|
+
publisher:
|
|
15
|
+
publisher === 'DEMO' ? Publisher.VIRGIN : (publisher as Publisher),
|
|
16
|
+
domain: new URL(getHost(req) as string).host,
|
|
17
|
+
publicationName: sitemapPublicationName as string,
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
export default handler
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NextApiRequest, NextApiResponse } from 'next'
|
|
2
|
+
import { genericSitemap, CustomStaticPage } from '@newskit-render/feed'
|
|
3
|
+
import { Publisher } from '@newskit-render/api'
|
|
4
|
+
import { getHost } from '@newskit-render/shared-components'
|
|
5
|
+
import { publisher, sitemapPublicationName } from '../../config'
|
|
6
|
+
/* We do not have sitemap date for Demo so using Virgin,
|
|
7
|
+
* This can be removed and replace with just - publisher: process.env.PUBLISHER as PublisherGroup, in created projects
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const defaultCustomStaticPagesCollection: CustomStaticPage[] = [
|
|
11
|
+
{
|
|
12
|
+
slug: 'test-custom-page',
|
|
13
|
+
},
|
|
14
|
+
]
|
|
15
|
+
const handler = async (req: NextApiRequest, res: NextApiResponse) =>
|
|
16
|
+
genericSitemap({
|
|
17
|
+
res,
|
|
18
|
+
dataType: 'pages',
|
|
19
|
+
publisher:
|
|
20
|
+
publisher === 'DEMO' ? Publisher.VIRGIN : (publisher as Publisher),
|
|
21
|
+
domain: new URL(getHost(req) as string).host,
|
|
22
|
+
publicationName: sitemapPublicationName as string,
|
|
23
|
+
customStaticPageCollection: defaultCustomStaticPagesCollection,
|
|
24
|
+
changefreq: 'hourly',
|
|
25
|
+
priority: '0.8',
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
export default handler
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NextApiRequest, NextApiResponse } from 'next'
|
|
2
|
+
import { getHost } from '@newskit-render/shared-components'
|
|
3
|
+
import { nodeEnviroment } from '../../config'
|
|
4
|
+
|
|
5
|
+
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
6
|
+
const crawable =
|
|
7
|
+
nodeEnviroment === 'production' ? 'Disallow: /' : 'Disallow: /' // change to Allow when your ready for prod to be crawlable
|
|
8
|
+
const robots = `User-agent: *
|
|
9
|
+
${crawable}
|
|
10
|
+
Sitemap: ${new URL(getHost(req) as string)}sitemap.xml
|
|
11
|
+
Sitemap: ${new URL(getHost(req) as string)}news-sitemap.xml
|
|
12
|
+
Sitemap: ${new URL(getHost(req) as string)}pages-sitemap.xml
|
|
13
|
+
Sitemap: ${new URL(getHost(req) as string)}competitions-sitemap.xml`
|
|
14
|
+
|
|
15
|
+
res.statusCode = 200
|
|
16
|
+
res.setHeader('Content-Type', 'text/plain')
|
|
17
|
+
res.write(robots)
|
|
18
|
+
res.end()
|
|
19
|
+
}
|
package/pages/api/sitemap.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NextApiRequest, NextApiResponse } from 'next'
|
|
2
|
-
import { genericSitemap
|
|
2
|
+
import { genericSitemap } from '@newskit-render/feed'
|
|
3
3
|
import { Publisher } from '@newskit-render/api'
|
|
4
4
|
import { getHost } from '@newskit-render/shared-components'
|
|
5
5
|
import {
|
|
@@ -11,11 +11,6 @@ import {
|
|
|
11
11
|
* This can be removed and replace with just - publisher: process.env.PUBLISHER as PublisherGroup, in created projects
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
const defaultCustomStaticPagesCollection: CustomStaticPage[] = [
|
|
15
|
-
{
|
|
16
|
-
channel: 'test-custom-page',
|
|
17
|
-
},
|
|
18
|
-
]
|
|
19
14
|
const handler = async (req: NextApiRequest, res: NextApiResponse) =>
|
|
20
15
|
genericSitemap({
|
|
21
16
|
res,
|
|
@@ -25,7 +20,6 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) =>
|
|
|
25
20
|
domain: new URL(getHost(req) as string).host,
|
|
26
21
|
firstArticleDate: sitemapFirstPublicationDate as string,
|
|
27
22
|
publicationName: sitemapPublicationName as string,
|
|
28
|
-
customStaticPageCollection: defaultCustomStaticPagesCollection,
|
|
29
23
|
})
|
|
30
24
|
|
|
31
25
|
export default handler
|
package/public/robots.txt
DELETED