From 7563adce8adf6901b1be5fcaff7ea5c22ad4e11e Mon Sep 17 00:00:00 2001 From: Sarah Schneider Date: Fri, 26 Feb 2021 13:23:37 -0500 Subject: [PATCH 1/4] add enterprise-server@latest redirect to real latest version --- lib/redirects/get-old-paths-from-permalink.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/redirects/get-old-paths-from-permalink.js b/lib/redirects/get-old-paths-from-permalink.js index 1515d9c5e6..bf7055fd87 100644 --- a/lib/redirects/get-old-paths-from-permalink.js +++ b/lib/redirects/get-old-paths-from-permalink.js @@ -82,6 +82,10 @@ module.exports = function getOldPathsFromPath (currentPath, languageCode, curren oldPaths.add(oldPath .replace(`/enterprise-server@${latest}`, '/enterprise-server')) + // create old path /enterprise-server@latest from new path /enterprise-server@ + oldPaths.add(oldPath + .replace(`/enterprise-server@${latest}`, '/enterprise-server@latest')) + if (!patterns.adminProduct.test(oldPath)) { // create old path /enterprise//user/foo from new path /enterprise-server@/foo oldPaths.add(currentPath From 2c8902f8260807870f1fee3357ceb702df7fd7ea Mon Sep 17 00:00:00 2001 From: Sarah Schneider Date: Fri, 26 Feb 2021 13:23:50 -0500 Subject: [PATCH 2/4] asyncify redirect loading --- lib/redirects/precompile.js | 6 +++--- lib/warm-server.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/redirects/precompile.js b/lib/redirects/precompile.js index 95291fb381..a7e6276568 100755 --- a/lib/redirects/precompile.js +++ b/lib/redirects/precompile.js @@ -2,19 +2,19 @@ const developerRedirects = require('../redirects/static/developer') const { latest } = require('../../lib/enterprise-server-releases') const latestDevRedirects = {} -// Replace hardcoded 'latest' with real value +// Replace hardcoded 'latest' with real value in the redirected path Object.entries(developerRedirects).forEach(([oldPath, newPath]) => { latestDevRedirects[oldPath] = newPath.replace('enterprise-server@latest', `enterprise-server@${latest}`) }) // This function runs at server warmup and precompiles possible redirect routes. // It outputs them in key-value pairs within a neat Javascript object: { oldPath: newPath } -module.exports = function precompileRedirects (pageList) { +module.exports = async function precompileRedirects (pageList) { const allRedirects = Object.assign({}, latestDevRedirects) // CURRENT PAGES PERMALINKS AND FRONTMATTER // create backwards-compatible old paths for page permalinks and frontmatter redirects - pageList.forEach(page => Object.assign(allRedirects, page.buildRedirects())) + await Promise.all(pageList.map(async(page) => Object.assign(allRedirects, page.buildRedirects()))) return allRedirects } diff --git a/lib/warm-server.js b/lib/warm-server.js index 687de15dcc..0b6622914f 100644 --- a/lib/warm-server.js +++ b/lib/warm-server.js @@ -9,7 +9,7 @@ const loadSiteTree = require('./site-tree') const dog = { loadPages: statsd.asyncTimer(loadPages, 'load_pages'), loadPageMap: statsd.asyncTimer(loadPageMap, 'load_page_map'), - loadRedirects: statsd.timer(loadRedirects, 'load_redirects'), + loadRedirects: statsd.asyncTimer(loadRedirects, 'load_redirects'), loadSiteData: statsd.timer(loadSiteData, 'load_site_data'), loadSiteTree: statsd.asyncTimer(loadSiteTree, 'load_site_tree') } @@ -52,7 +52,7 @@ async function warmServer () { } if (!redirects) { - redirects = dog.loadRedirects(pageList, pageMap) + redirects = await dog.loadRedirects(pageList, pageMap) } if (!siteTree) { From d3617af76ab490fb9a3a55f93b727b1ddc568473 Mon Sep 17 00:00:00 2001 From: Sarah Schneider Date: Fri, 26 Feb 2021 13:23:55 -0500 Subject: [PATCH 3/4] add test --- tests/routing/redirects.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/routing/redirects.js b/tests/routing/redirects.js index 90178cc663..e3614da787 100644 --- a/tests/routing/redirects.js +++ b/tests/routing/redirects.js @@ -159,6 +159,12 @@ describe('redirects', () => { expect(res.statusCode).toBe(301) expect(res.headers.location).toBe(japaneseEnterpriseHome) }) + + test('hardcoded @latest redirects to latest version', async () => { + const res = await get('/en/enterprise-server@latest') + expect(res.statusCode).toBe(301) + expect(res.headers.location).toBe(enterpriseHome) + }) }) describe('2.13+ deprecated enterprise', () => { From ca3d587f586749f09c35df14b338ea06bfe55070 Mon Sep 17 00:00:00 2001 From: Sarah Schneider Date: Fri, 26 Feb 2021 13:49:24 -0500 Subject: [PATCH 4/4] lint --- lib/redirects/precompile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/redirects/precompile.js b/lib/redirects/precompile.js index a7e6276568..9112bb32f4 100755 --- a/lib/redirects/precompile.js +++ b/lib/redirects/precompile.js @@ -14,7 +14,7 @@ module.exports = async function precompileRedirects (pageList) { // CURRENT PAGES PERMALINKS AND FRONTMATTER // create backwards-compatible old paths for page permalinks and frontmatter redirects - await Promise.all(pageList.map(async(page) => Object.assign(allRedirects, page.buildRedirects()))) + await Promise.all(pageList.map(async (page) => Object.assign(allRedirects, page.buildRedirects()))) return allRedirects }