Skip to content

Commit d3d1902

Browse files
authored
Merge pull request #20017 from github/upgrade-esm
Enforce and Move to Top Level require
1 parent efcb508 commit d3d1902

26 files changed

Lines changed: 106 additions & 71 deletions

lib/frontmatter.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
const parse = require('./read-frontmatter')
2-
const layoutNames = Object.keys(require('./layouts')).concat([false])
2+
const semver = require('semver')
3+
const layouts = require('./layouts')
4+
5+
const semverValidRange = semver.validRange
6+
const layoutNames = Object.keys(layouts).concat([false])
37
const semverRange = {
48
type: 'string',
5-
conform: require('semver').validRange,
9+
conform: semverValidRange,
610
message: 'Must be a valid SemVer range'
711
}
812
const versionIds = Object.keys(require('./all-versions'))

lib/redirects/permalinks.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const path = require('path')
22
const patterns = require('../patterns')
3-
const supportedVersions = new Set(Object.keys(require('../all-versions')))
3+
const allVersions = require('../all-versions')
4+
const supportedVersions = new Set(Object.keys(allVersions))
45
const getOldPathsFromPermalink = require('./get-old-paths-from-permalink')
56
const { getVersionStringFromPath } = require('../path-utils')
67
const { getNewVersionedPath } = require('../old-versions-utils')

lib/rest/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const operations = {}
66
fs.readdirSync(schemasPath)
77
.forEach(filename => {
88
const key = filename.replace('.json', '')
9-
const value = require(path.join(schemasPath, filename))
9+
const value = JSON.parse(fs.readFileSync(path.join(schemasPath, filename)))
1010
operations[key] = value
1111
})
1212
const allVersions = require('../all-versions')

lib/webhooks/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ versions.forEach(version => {
1919
// payload file: /path/to/check_run.completed.payload.json
2020
// payload path: check_run.completed
2121
const payloadPath = path.basename(payloadFile).replace('.payload.json', '')
22-
set(payloadsPerVersion, payloadPath, formatAsJsonCodeBlock(require(payloadFile)))
22+
set(payloadsPerVersion, payloadPath, formatAsJsonCodeBlock(JSON.parse(fs.readFileSync(payloadFile))))
2323
})
2424

2525
payloads[version] = payloadsPerVersion

middleware/contextualizers/graphql.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const fs = require('fs')
2+
const path = require('path')
13
const previews = require('../../lib/graphql/static/previews')
24
const upcomingChanges = require('../../lib/graphql/static/upcoming-changes')
35
const changelog = require('../../lib/graphql/static/changelog')
@@ -23,7 +25,7 @@ module.exports = function graphqlContext (req, res, next) {
2325
const graphqlVersion = currentVersionObj.miscVersionName
2426

2527
req.context.graphql = {
26-
schemaForCurrentVersion: require(`../../lib/graphql/static/schema-${graphqlVersion}`),
28+
schemaForCurrentVersion: JSON.parse(fs.readFileSync(path.join(process.cwd(), `lib/graphql/static/schema-${graphqlVersion}.json`))),
2729
previewsForCurrentVersion: previews[graphqlVersion],
2830
upcomingChangesForCurrentVersion: upcomingChanges[graphqlVersion],
2931
prerenderedObjectsForCurrentVersion: prerenderedObjects[graphqlVersion],

middleware/csrf.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
const cookieSettings = require('../lib/cookie-settings')
2+
13
module.exports = require('csurf')({
2-
cookie: require('../lib/cookie-settings'),
4+
cookie: cookieSettings,
35
ignoreMethods: ['GET', 'HEAD', 'OPTIONS']
46
})

middleware/index.js

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,26 @@
11
const express = require('express')
22
const instrument = require('../lib/instrument-middleware')
33
const haltOnDroppedConnection = require('./halt-on-dropped-connection')
4+
const abort = require('./abort')
5+
const timeout = require('./timeout')
6+
const morgan = require('morgan')
7+
const datadog = require('./connect-datadog')
8+
const rateLimit = require('./rate-limit')
9+
const cors = require('./cors')
10+
const helmet = require('helmet')
11+
const csp = require('./csp')
12+
const cookieParser = require('./cookie-parser')
13+
const csrf = require('./csrf')
14+
const handleCsrfErrors = require('./handle-csrf-errors')
15+
const compression = require('compression')
16+
const disableCachingOnSafari = require('./disable-caching-on-safari')
17+
const setFastlySurrogateKey = require('./set-fastly-surrogate-key')
18+
const setFastlyCacheHeaders = require('./set-fastly-cache-headers')
19+
const catchBadAcceptLanguage = require('./catch-bad-accept-language')
20+
const reqUtils = require('./req-utils')
21+
const recordRedirect = require('./record-redirect')
22+
const connectSlashes = require('connect-slashes')
23+
const handleErrors = require('./handle-errors')
424

525
const { NODE_ENV } = process.env
626
const isDevelopment = NODE_ENV === 'development'
@@ -15,58 +35,57 @@ const asyncMiddleware = fn =>
1535

1636
module.exports = function (app) {
1737
// *** Request connection management ***
18-
if (!isTest) app.use(require('./timeout'))
19-
app.use(require('./abort'))
38+
if (!isTest) app.use(timeout)
39+
app.use(abort)
2040

2141
// *** Development tools ***
22-
app.use(require('morgan')('dev', { skip: (req, res) => !isDevelopment }))
23-
if (isDevelopment) app.use(require('./webpack'))
42+
app.use(morgan('dev', { skip: (req, res) => !isDevelopment }))
2443

2544
// *** Observability ***
2645
if (process.env.DD_API_KEY) {
27-
app.use(require('./connect-datadog'))
46+
app.use(datadog)
2847
}
2948

3049
// *** Early exits ***
3150
// Don't use the proxy's IP, use the requester's for rate limiting
3251
// See https://expressjs.com/en/guide/behind-proxies.html
3352
app.set('trust proxy', 1)
34-
app.use(require('./rate-limit'))
53+
app.use(rateLimit)
3554
app.use(instrument('./handle-invalid-paths'))
3655
app.use(instrument('./handle-next-data-path'))
3756

3857
// *** Security ***
39-
app.use(require('./cors'))
40-
app.use(require('helmet')({
58+
app.use(cors)
59+
app.use(helmet({
4160
// Override referrerPolicy to match the browser's default: "strict-origin-when-cross-origin".
4261
// Helmet now defaults to "no-referrer", which is a problem for our archived assets proxying.
4362
referrerPolicy: {
4463
policy: 'strict-origin-when-cross-origin'
4564
}
4665
}))
47-
app.use(require('./csp')) // Must come after helmet
48-
app.use(require('./cookie-parser')) // Must come before csrf
66+
app.use(csp) // Must come after helmet
67+
app.use(cookieParser) // Must come before csrf
4968
app.use(express.json()) // Must come before csrf
50-
app.use(require('./csrf'))
51-
app.use(require('./handle-csrf-errors')) // Must come before regular handle-errors
69+
app.use(csrf)
70+
app.use(handleCsrfErrors) // Must come before regular handle-errors
5271

5372
// *** Headers ***
5473
app.set('etag', false) // We will manage our own ETags if desired
55-
app.use(require('compression')())
56-
app.use(require('./disable-caching-on-safari'))
57-
app.use(require('./set-fastly-surrogate-key'))
58-
app.use(require('./catch-bad-accept-language'))
74+
app.use(compression())
75+
app.use(disableCachingOnSafari)
76+
app.use(setFastlySurrogateKey)
77+
app.use(catchBadAcceptLanguage)
5978

6079
// *** Config and context for redirects ***
61-
app.use(require('./req-utils')) // Must come before record-redirect and events
62-
app.use(require('./record-redirect'))
80+
app.use(reqUtils) // Must come before record-redirect and events
81+
app.use(recordRedirect)
6382
app.use(instrument('./detect-language')) // Must come before context, breadcrumbs, find-page, handle-errors, homepages
6483
app.use(asyncMiddleware(instrument('./context'))) // Must come before early-access-*, handle-redirects
6584
app.use(asyncMiddleware(instrument('./contextualizers/short-versions'))) // Support version shorthands
6685

6786
// *** Redirects, 3xx responses ***
6887
// I ordered these by use frequency
69-
app.use(require('connect-slashes')(false))
88+
app.use(connectSlashes(false))
7089
app.use(instrument('./redirects/external'))
7190
app.use(instrument('./redirects/help-to-docs'))
7291
app.use(instrument('./redirects/language-code-redirects')) // Must come before contextualizers
@@ -132,7 +151,7 @@ module.exports = function (app) {
132151
app.use(asyncMiddleware(instrument('./is-next-request')))
133152

134153
// *** Headers for pages only ***
135-
app.use(require('./set-fastly-cache-headers'))
154+
app.use(setFastlyCacheHeaders)
136155

137156
// handle serving NextJS bundled code (/_next/*)
138157
if (process.env.FEATURE_NEXTJS) {
@@ -146,5 +165,5 @@ module.exports = function (app) {
146165
app.get('/*', asyncMiddleware(instrument('./render-page')))
147166

148167
// *** Error handling, must go last ***
149-
app.use(require('./handle-errors'))
168+
app.use(handleErrors)
150169
}

middleware/search.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
const express = require('express')
2-
const languages = new Set(Object.keys(require('../lib/languages')))
3-
const versions = new Set(Object.values(require('../lib/search/versions')))
2+
const libLanguages = require('../lib/languages')
3+
const searchVersions = require('../lib/search/versions')
4+
const languages = new Set(Object.keys(libLanguages))
5+
const versions = new Set(Object.values(searchVersions))
46
const loadLunrResults = require('../lib/search/lunr-search')
57
const loadAlgoliaResults = require('../lib/search/algolia-search')
68

middleware/webpack.js

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

package-lock.json

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)