1
0
mirror of synced 2025-12-23 03:44:00 -05:00
Files
docs/middleware/contextualizers/secret-scanning.js
2023-08-14 12:34:30 +00:00

35 lines
1.1 KiB
JavaScript

import fs from 'fs'
import path from 'path'
import yaml from 'js-yaml'
import getApplicableVersions from '../../lib/get-applicable-versions.js'
import { liquid } from '#src/content-render/index.js'
const secretScanningPath = path.join('data/secret-scanning.yml')
export default async function secretScanning(req, res, next) {
if (!req.pagePath.endsWith('code-security/secret-scanning/secret-scanning-patterns'))
return next()
const secretScanningData = yaml.load(fs.readFileSync(secretScanningPath, 'utf-8'))
const { currentVersion } = req.context
req.context.secretScanningData = secretScanningData.filter((entry) =>
getApplicableVersions(entry.versions).includes(currentVersion),
)
// Some entries might use Liquid syntax, so we need
// to execute that Liquid to get the actual value.
req.context.secretScanningData.forEach(async (entry, i) => {
for (const [key, value] of Object.entries(entry)) {
if (typeof value === 'string' && value.includes('{%')) {
const evaluated = yaml.load(await liquid.parseAndRender(value, req.context))
entry[key] = evaluated
}
}
})
return next()
}