11const express = require ( 'express' )
22const instrument = require ( '../lib/instrument-middleware' )
33const haltOnDroppedConnection = require ( './halt-on-dropped-connection' )
4+ const abort = require ( './abort' )
5+ const timeout = require ( './timeout' )
6+ const morgan = require ( 'morgan' )
7+ const webpack = require ( './webpack' )
8+ const datadog = require ( './connect-datadog' )
9+ const rateLimit = require ( './rate-limit' )
10+ const cors = require ( './cors' )
11+ const helmet = require ( 'helmet' )
12+ const csp = require ( './csp' )
13+ const cookieParser = require ( './cookie-parser' )
14+ const csrf = require ( './csrf' )
15+ const handleCsrfErrors = require ( './handle-csrf-errors' )
16+ const compression = require ( 'compression' )
17+ const disableCachingOnSafari = require ( './disable-caching-on-safari' )
18+ const setFastlySurrogateKey = require ( './set-fastly-surrogate-key' )
19+ const setFastlyCacheHeaders = require ( './set-fastly-cache-headers' )
20+ const catchBadAcceptLanguage = require ( './catch-bad-accept-language' )
21+ const reqUtils = require ( './req-utils' )
22+ const recordRedirect = require ( './record-redirect' )
23+ const connectSlashes = require ( 'connect-slashes' )
24+ const handleErrors = require ( './handle-errors' )
425
526const { NODE_ENV } = process . env
627const isDevelopment = NODE_ENV === 'development'
@@ -15,57 +36,57 @@ const asyncMiddleware = fn =>
1536
1637module . exports = function ( app ) {
1738 // *** Request connection management ***
18- if ( ! isTest ) app . use ( require ( './ timeout' ) )
19- app . use ( require ( './ abort' ) )
39+ if ( ! isTest ) app . use ( timeout )
40+ app . use ( abort )
2041
2142 // *** Development tools ***
22- app . use ( require ( ' morgan' ) ( 'dev' , { skip : ( req , res ) => ! isDevelopment } ) )
23- if ( isDevelopment ) app . use ( require ( './ webpack' ) )
43+ app . use ( morgan ( 'dev' , { skip : ( req , res ) => ! isDevelopment } ) )
44+ if ( isDevelopment ) app . use ( webpack )
2445
2546 // *** Observability ***
2647 if ( process . env . DD_API_KEY ) {
27- app . use ( require ( './connect- datadog' ) )
48+ app . use ( datadog )
2849 }
2950
3051 // *** Early exits ***
3152 // Don't use the proxy's IP, use the requester's for rate limiting
3253 // See https://expressjs.com/en/guide/behind-proxies.html
3354 app . set ( 'trust proxy' , 1 )
34- app . use ( require ( './rate-limit' ) )
55+ app . use ( rateLimit )
3556 app . use ( instrument ( './handle-invalid-paths' ) )
3657
3758 // *** Security ***
38- app . use ( require ( './ cors' ) )
39- app . use ( require ( ' helmet' ) ( {
59+ app . use ( cors )
60+ app . use ( helmet ( {
4061 // Override referrerPolicy to match the browser's default: "strict-origin-when-cross-origin".
4162 // Helmet now defaults to "no-referrer", which is a problem for our archived assets proxying.
4263 referrerPolicy : {
4364 policy : 'strict-origin-when-cross-origin'
4465 }
4566 } ) )
46- app . use ( require ( './ csp' ) ) // Must come after helmet
47- app . use ( require ( './cookie-parser' ) ) // Must come before csrf
67+ app . use ( csp ) // Must come after helmet
68+ app . use ( cookieParser ) // Must come before csrf
4869 app . use ( express . json ( ) ) // Must come before csrf
49- app . use ( require ( './ csrf' ) )
50- app . use ( require ( './handle-csrf-errors' ) ) // Must come before regular handle-errors
70+ app . use ( csrf )
71+ app . use ( handleCsrfErrors ) // Must come before regular handle-errors
5172
5273 // *** Headers ***
5374 app . set ( 'etag' , false ) // We will manage our own ETags if desired
54- app . use ( require ( ' compression' ) ( ) )
55- app . use ( require ( './disable-caching-on-safari' ) )
56- app . use ( require ( './set-fastly-surrogate-key' ) )
57- app . use ( require ( './catch-bad-accept-language' ) )
75+ app . use ( compression ( ) )
76+ app . use ( disableCachingOnSafari )
77+ app . use ( setFastlySurrogateKey )
78+ app . use ( catchBadAcceptLanguage )
5879
5980 // *** Config and context for redirects ***
60- app . use ( require ( './req-utils' ) ) // Must come before record-redirect and events
61- app . use ( require ( './record-redirect' ) )
81+ app . use ( reqUtils ) // Must come before record-redirect and events
82+ app . use ( recordRedirect )
6283 app . use ( instrument ( './detect-language' ) ) // Must come before context, breadcrumbs, find-page, handle-errors, homepages
6384 app . use ( asyncMiddleware ( instrument ( './context' ) ) ) // Must come before early-access-*, handle-redirects
6485 app . use ( asyncMiddleware ( instrument ( './contextualizers/short-versions' ) ) ) // Support version shorthands
6586
6687 // *** Redirects, 3xx responses ***
6788 // I ordered these by use frequency
68- app . use ( require ( 'connect-slashes' ) ( false ) )
89+ app . use ( connectSlashes ( false ) )
6990 app . use ( instrument ( './redirects/external' ) )
7091 app . use ( instrument ( './redirects/help-to-docs' ) )
7192 app . use ( instrument ( './redirects/language-code-redirects' ) ) // Must come before contextualizers
@@ -131,7 +152,7 @@ module.exports = function (app) {
131152 app . use ( asyncMiddleware ( instrument ( './is-next-request' ) ) )
132153
133154 // *** Headers for pages only ***
134- app . use ( require ( './set-fastly-cache-headers' ) )
155+ app . use ( setFastlyCacheHeaders )
135156
136157 // handle serving NextJS bundled code (/_next/*)
137158 if ( process . env . FEATURE_NEXTJS ) {
@@ -145,5 +166,5 @@ module.exports = function (app) {
145166 app . get ( '/*' , asyncMiddleware ( instrument ( './render-page' ) ) )
146167
147168 // *** Error handling, must go last ***
148- app . use ( require ( './handle-errors' ) )
169+ app . use ( handleErrors )
149170}
0 commit comments