Skip to content

Commit d1524b1

Browse files
committed
add feature flagged middleware
1 parent 2f7bfc1 commit d1524b1

4 files changed

Lines changed: 28 additions & 8 deletions

File tree

middleware/context.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const {
1010
getPathWithoutLanguage
1111
} = require('../lib/path-utils')
1212
const productNames = require('../lib/product-names')
13-
const warmServer = require('../lib/warm-server')
13+
const warmServer = process.env.FEATURE_NEW_SITETREE ? require('../lib/warm-server2') : require('../lib/warm-server')
1414
const featureFlags = Object.keys(require('../feature-flags'))
1515
const builtAssets = require('../lib/built-asset-urls')
1616
const searchVersions = require('../lib/search/versions')
@@ -27,7 +27,7 @@ module.exports = async function contextualize (req, res, next) {
2727
// make feature flag environment variables accessible in layouts
2828
req.context.process = { env: {} }
2929
featureFlags.forEach(featureFlagName => {
30-
req.context.process.env[featureFlagName] = process.env[featureFlagName]
30+
req.context[featureFlagName] = process.env[featureFlagName]
3131
})
3232

3333
// define each context property explicitly for code-search friendliness

middleware/contextualizers/early-access-links.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module.exports = function earlyAccessContext (req, res, next) {
77

88
// Get a list of all hidden pages per version
99
const earlyAccessPageLinks = uniq(Object.values(req.context.pages)
10-
.filter(page => page.hidden && page.relativePath.startsWith('early-access') && page.relativePath !== 'early-access/index.md')
10+
.filter(page => page.hidden && page.relativePath.startsWith('early-access') && !page.relativePath.endsWith('index.md'))
1111
.map(page => page.permalinks)
1212
.flat())
1313
// Get links for the current version

middleware/contextualizers/layout.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,25 @@ module.exports = function layoutContext (req, res, next) {
55

66
let layoutName
77

8+
// If this is an index.md that is not the homepage and does not have a defined layout, use `generic-toc`.
9+
const usesGenericToc = req.context.page.relativePath.endsWith('index.md') &&
10+
req.context.page.documentType !== 'homepage' &&
11+
!req.context.page.hidden
12+
813
if (req.context.page.layout) {
914
// Layouts can be specified with a `layout` frontmatter value.
1015
// Any invalid layout values will be caught by frontmatter schema validation.
1116
layoutName = req.context.page.layout
12-
// A `layout: false` value means use no layout.
1317
} else if (req.context.page.layout === false) {
18+
// A `layout: false` value means use no layout.
1419
layoutName = ''
15-
// If undefined, use either the default layout or the generic-toc layout.
1620
} else if (req.context.page.layout === undefined) {
17-
layoutName = 'default'
21+
// For all other files (like articles and the homepage), use the `default` layout.
22+
if (process.env.FEATURE_NEW_SITETREE) {
23+
layoutName = usesGenericToc ? 'generic-toc' : 'default'
24+
} else {
25+
layoutName = 'default'
26+
}
1827
}
1928

2029
// Attach to the context object

middleware/index.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,19 @@ module.exports = function (app) {
111111
app.use(instrument('./contextualizers/webhooks'))
112112
app.use(asyncMiddleware(instrument('./contextualizers/whats-new-changelog')))
113113
app.use(instrument('./contextualizers/layout'))
114-
app.use(asyncMiddleware(instrument('./breadcrumbs')))
115-
app.use(asyncMiddleware(instrument('./early-access-breadcrumbs')))
114+
115+
if (!process.env.FEATURE_NEW_SITETREE) {
116+
app.use(asyncMiddleware(instrument('./breadcrumbs')))
117+
app.use(asyncMiddleware(instrument('./early-access-breadcrumbs')))
118+
}
119+
120+
if (process.env.FEATURE_NEW_SITETREE) {
121+
app.use(instrument('./contextualizers/current-product-tree'))
122+
app.use(asyncMiddleware(instrument('./contextualizers/generic-toc')))
123+
app.use(asyncMiddleware(instrument('./contextualizers/breadcrumbs')))
124+
app.use(asyncMiddleware(instrument('./contextualizers/early-access-breadcrumbs')))
125+
}
126+
116127
app.use(asyncMiddleware(instrument('./enterprise-server-releases')))
117128
app.use(asyncMiddleware(instrument('./dev-toc')))
118129
app.use(asyncMiddleware(instrument('./featured-links')))

0 commit comments

Comments
 (0)