Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9942fd3

Browse files
committed
dry up archived versions middleware checks
1 parent a3559e1 commit 9942fd3

4 files changed

Lines changed: 32 additions & 25 deletions

File tree

middleware/archived-enterprise-versions-assets.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
const path = require('path')
22
const versionSatisfiesRange = require('../lib/version-satisfies-range')
3-
const enterpriseServerReleases = require('../lib/enterprise-server-releases')
43
const patterns = require('../lib/patterns')
54
const firstVersionDeprecatedOnNewSite = '2.13'
65
const got = require('got')
@@ -12,21 +11,12 @@ const got = require('got')
1211
// See also ./archived-enterprise-versions.js for non-CSS/JS paths
1312

1413
module.exports = async (req, res, next) => {
14+
if (!req.isArchivedVersion) return next()
15+
const requestedVersion = req.requestedVersion
16+
1517
// Only match asset paths
1618
if (!patterns.assetPaths.test(req.path)) return next()
1719

18-
// Get the referrer, which may contain an enterprise version
19-
const referrer = req.get('referrer')
20-
21-
// ignore paths that don't have an enterprise version number
22-
if (!patterns.getEnterpriseVersionNumber.test(referrer)) return next()
23-
24-
// extract enterprise version from path, e.g. 2.16
25-
const requestedVersion = referrer.match(patterns.getEnterpriseVersionNumber)[1]
26-
27-
// bail if the request version is not deprecated
28-
if (!enterpriseServerReleases.deprecated.includes(requestedVersion)) return next()
29-
3020
// get /dist/index.js and /dist/index.css paths from enterprisified paths
3121
const assetPath = req.path.replace(`/enterprise/${requestedVersion}`, '')
3222

middleware/archived-enterprise-versions.js

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const path = require('path')
22
const slash = require('slash')
3-
const { latest, deprecated, firstVersionDeprecatedOnNewSite, lastVersionWithoutStubbedRedirectFiles } = require('../lib/enterprise-server-releases')
3+
const { latest, firstVersionDeprecatedOnNewSite, lastVersionWithoutStubbedRedirectFiles } = require('../lib/enterprise-server-releases')
44
const patterns = require('../lib/patterns')
55
const versionSatisfiesRange = require('../lib/version-satisfies-range')
66
const got = require('got')
@@ -11,20 +11,12 @@ const findPage = require('../lib/find-page')
1111
// https://github.com/github/help-docs-archived-enterprise-versions
1212

1313
module.exports = async (req, res, next) => {
14+
if (!req.isArchivedVersion) return next()
15+
const requestedVersion = req.requestedVersion
16+
1417
// Skip asset paths
1518
if (patterns.assetPaths.test(req.path)) return next()
1619

17-
if (req.context.page) return next()
18-
19-
// ignore paths that don't have an enterprise version number
20-
if (!patterns.getEnterpriseVersionNumber.test(req.path)) return next()
21-
22-
// extract enterprise version from path, e.g. 2.16
23-
const requestedVersion = req.path.match(patterns.getEnterpriseVersionNumber)[1]
24-
25-
// bail if the request version is not deprecated
26-
if (!deprecated.includes(requestedVersion)) return next()
27-
2820
// redirect language-prefixed URLs like /en/enterprise/2.10 -> /enterprise/2.10
2921
// (this only applies to versions <2.13)
3022
if (req.path.startsWith('/en/') && versionSatisfiesRange(requestedVersion, `<${firstVersionDeprecatedOnNewSite}`)) {

middleware/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ module.exports = function (app) {
5454

5555
// *** Rendering, 2xx responses ***
5656
// I largely ordered these by use frequency
57+
app.use(require('./is-archived-version')) // Must come before archived-enterprise-versions* middleware
5758
app.use(require('./archived-enterprise-versions-assets')) // Must come before static/assets
5859
app.use('/dist', express.static('dist'))
5960
app.use('/assets', express.static('assets'))

middleware/is-archived-version.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
const patterns = require('../lib/patterns')
2+
const { deprecated } = require('../lib/enterprise-server-releases')
3+
4+
module.exports = async (req, res, next) => {
5+
// ignore paths that don't have an enterprise version number
6+
if (!(patterns.getEnterpriseVersionNumber.test(req.path) || patterns.getEnterpriseServerNumber.test(req.path))) return next()
7+
8+
// extract enterprise version from path, e.g. 2.16
9+
const requestedVersion = req.path.includes('enterprise-server@')
10+
? req.path.match(patterns.getEnterpriseServerNumber)[1]
11+
: req.path.match(patterns.getEnterpriseVersionNumber)[1]
12+
13+
// bail if the request version is not deprecated
14+
if (!deprecated.includes(requestedVersion)) return next()
15+
16+
// bail if the request version is not deprecated
17+
if (!deprecated.includes(requestedVersion)) return next()
18+
19+
// attach convenience props
20+
req.isArchivedVersion = true
21+
req.requestedVersion = requestedVersion
22+
23+
return next()
24+
}

0 commit comments

Comments
 (0)