Skip to content

Commit 08880d9

Browse files
authored
Sort middleware by categories (github#16494)
1 parent ef85e59 commit 08880d9

File tree

5 files changed

+50
-86
lines changed

5 files changed

+50
-86
lines changed

javascripts/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ document.addEventListener('DOMContentLoaded', async () => {
2828
wrapCodeTerms()
2929
print()
3030
localization()
31-
await fillCsrf() // this must complete before any POST calls
32-
helpfulness()
33-
experiment()
3431
copyCode()
35-
initializeEvents()
3632
filterCodeExamples()
3733
allArticles()
3834
devToc()
35+
await fillCsrf() // this must complete before any POST calls
36+
initializeEvents() // requires fillCsrf to complete
37+
experiment() // requires fillCsrf to complete
38+
helpfulness() // requires fillCsrf to complete
3939
})

middleware/enterprise-homepage.js

Lines changed: 0 additions & 10 deletions
This file was deleted.

middleware/homepages.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

middleware/index.js

Lines changed: 46 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,53 +10,73 @@ const asyncMiddleware = fn =>
1010
}
1111

1212
module.exports = function (app) {
13+
// *** Development tools ***
14+
app.use(require('morgan')('dev', { skip: (req, res) => !isDevelopment }))
15+
if (isDevelopment) app.use(require('./webpack'))
16+
17+
// *** Early exits ***
1318
// Don't use the proxy's IP, use the requester's for rate limiting
1419
// See https://expressjs.com/en/guide/behind-proxies.html
1520
app.set('trust proxy', 1)
16-
app.use(require('morgan')('dev', { skip: (req, res) => !isDevelopment }))
1721
app.use(require('./rate-limit'))
18-
if (isDevelopment) app.use(require('./webpack'))
19-
app.use(require('./cookie-parser'))
20-
app.use(require('./req-utils'))
21-
app.use(require('./record-redirect'))
22-
app.use(require('./redirects/external'))
23-
app.use(require('./redirects/help-to-docs'))
24-
app.use(require('./set-fastly-cache-headers'))
2522
app.use(require('./handle-invalid-paths'))
26-
app.use(require('./loaderio-verification'))
23+
24+
// *** Security ***
2725
app.use(require('./cors'))
28-
app.use(require('./csp'))
26+
app.use(require('./csp')) // Must come before helmet
2927
app.use(require('helmet')())
30-
app.use(require('./robots'))
31-
app.use(express.json()) // Must come before ./csrf
28+
app.use(require('./cookie-parser')) // Must come before csrf
29+
app.use(express.json()) // Must come before csrf
3230
app.use(require('./csrf'))
33-
app.use(require('./handle-csrf-errors'))
31+
app.use(require('./handle-csrf-errors')) // Must come before regular handle-errors
32+
33+
// *** Headers ***
3434
app.use(require('compression')())
35+
app.use(require('./set-fastly-cache-headers'))
36+
app.use(require('./disable-caching-on-safari'))
37+
38+
// *** Config and context for redirects ***
39+
app.use(require('./req-utils')) // Must come before record-redirect and events
40+
app.use(require('./record-redirect'))
41+
app.use(require('./detect-language')) // Must come before context, breadcrumbs, find-page, handle-errors, homepages
42+
app.use(asyncMiddleware(require('./context'))) // Must come before early-access-*, handle-redirects
43+
44+
// *** Redirects, 3xx responses ***
45+
// I ordered these by use frequency
3546
app.use(require('connect-slashes')(false))
47+
app.use(require('./redirects/external'))
48+
app.use(require('./redirects/help-to-docs'))
49+
app.use(require('./redirects/language-code-redirects')) // Must come before contextualizers
50+
app.use(require('./redirects/handle-redirects')) // Must come before contextualizers
51+
52+
// *** Config and context for rendering ***
53+
app.use(require('./find-page')) // Must come before archived-enterprise-versions, breadcrumbs, featured-links, products, render-page
54+
55+
// *** Rendering, 2xx responses ***
56+
// I largely ordered these by use frequency
57+
app.use(require('./archived-enterprise-versions-assets')) // Must come before static/assets
3658
app.use('/dist', express.static('dist'))
59+
app.use('/assets', express.static('assets'))
60+
app.use('/public', express.static('data/graphql'))
3761
app.use('/events', require('./events'))
38-
app.use(require('./categories-for-support-team'))
39-
app.use(require('./detect-language'))
40-
app.use(asyncMiddleware(require('./context')))
4162
app.use('/csrf', require('./csrf-route'))
63+
app.use(require('./archived-enterprise-versions'))
64+
app.use(require('./robots'))
4265
app.use(require('./early-access-paths'))
4366
app.use(require('./early-access-proxy'))
44-
app.use(require('./find-page'))
45-
app.use(require('./archived-enterprise-versions'))
46-
app.use(require('./archived-enterprise-versions-assets'))
47-
app.use('/assets', express.static('assets'))
48-
app.use('/public', express.static('data/graphql'))
49-
app.use(require('./redirects/language-code-redirects'))
50-
// redirects need to be handled before the contextualizers
51-
app.use(require('./redirects/handle-redirects'))
67+
app.use(require('./categories-for-support-team'))
68+
app.use(require('./loaderio-verification'))
69+
app.get('/_500', asyncMiddleware(require('./trigger-error')))
70+
71+
// *** Preparation for render-page ***
5272
app.use(require('./contextualizers/graphql'))
5373
app.use(require('./contextualizers/rest'))
5474
app.use(require('./contextualizers/webhooks'))
55-
app.use(require('./disable-caching-on-safari'))
56-
app.get('/_500', asyncMiddleware(require('./trigger-error')))
5775
app.use(require('./breadcrumbs'))
5876
app.use(require('./dev-toc'))
5977
app.use(require('./featured-links'))
78+
79+
// *** Rendering, must go last ***
6080
app.get('/*', asyncMiddleware(require('./render-page')))
6181
app.use(require('./handle-errors'))
6282
}

middleware/products.js

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)