UNPKG

@redocly/cli

Version:

[@Redocly](https://redocly.com) CLI is your all-in-one API documentation utility. It builds, manages, improves, and quality-checks your API descriptions, all of which comes in handy for various phases of the API Lifecycle. Create your own rulesets to make

55 lines 1.82 kB
import { createConfig, logger, regexFromString, } from '@redocly/openapi-core'; export async function resolveConfigForTarget(apiPath, targetRules, scorecardLevels = [], plugins = [], configPath) { const result = {}; for (const level of scorecardLevels) { const apis = { [level.name]: { root: apiPath, rules: targetRules, }, }; const config = await createConfig({ apis, ...level, plugins }, { configPath, }); result[level.name] = config.forAlias(level.name); } return result; } export function getTarget(targets, metadata) { if (!targets) { return undefined; } for (const target of targets) { const matches = Object.entries(target.where?.metadata || {}).every(([key, value]) => isTargetMatch(key, value, metadata)); if (matches) { return target; } } return undefined; } function isTargetMatch(key, value, metadata) { // support for ISO 8601 date ranges if (value.match(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?\/(\d{4}-\d{2}-\d{2})?$/)) { if (!metadata[key]) { return false; } const [from, to] = value.split('/'); const date = new Date(metadata[key]); return !(date < new Date(from) || (to && date > new Date(to))); } else if (value.match(/^\/.*\//)) { if (!metadata[key]) { return false; } try { const regex = regexFromString(value); return regex.test(metadata[key]); } catch (e) { logger.error(`Invalid regex in scorecard target "${key}": ${value}`); return false; } } return metadata[key] === value; } //# sourceMappingURL=targets-handler.js.map