@code-pushup/js-packages-plugin
Version:
Code PushUp plugin for JavaScript packages 🛡️
56 lines • 2.19 kB
JavaScript
import { z } from 'zod';
import { issueSeveritySchema, pluginScoreTargetsSchema, } from '@code-pushup/models';
import { defaultAuditLevelMapping } from './constants.js';
export const dependencyGroups = ['prod', 'dev', 'optional'];
const dependencyGroupSchema = z.enum(dependencyGroups);
const packageCommandSchema = z.enum(['audit', 'outdated']);
const packageManagerIdSchema = z.enum([
'npm',
'yarn-classic',
'yarn-modern',
'pnpm',
]);
const packageJsonPathSchema = z
.string()
.regex(/package\.json$/, 'File path must end with package.json')
.describe('File path to package.json, tries to use root package.json at CWD by default')
.default('package.json');
export const packageAuditLevels = [
'critical',
'high',
'moderate',
'low',
'info',
];
const packageAuditLevelSchema = z.enum(packageAuditLevels);
export function fillAuditLevelMapping(mapping) {
return {
critical: mapping.critical ?? defaultAuditLevelMapping.critical,
high: mapping.high ?? defaultAuditLevelMapping.high,
moderate: mapping.moderate ?? defaultAuditLevelMapping.moderate,
low: mapping.low ?? defaultAuditLevelMapping.low,
info: mapping.info ?? defaultAuditLevelMapping.info,
};
}
export const jsPackagesPluginConfigSchema = z.object({
checks: z
.array(packageCommandSchema)
.min(1)
.default(['audit', 'outdated'])
.describe('Package manager commands to be run. Defaults to both audit and outdated.'),
packageManager: packageManagerIdSchema
.describe('Package manager to be used.')
.optional(),
dependencyGroups: z
.array(dependencyGroupSchema)
.min(1)
.default(['prod', 'dev']),
auditLevelMapping: z
.partialRecord(packageAuditLevelSchema, issueSeveritySchema)
.default(defaultAuditLevelMapping)
.transform(fillAuditLevelMapping)
.describe('Mapping of audit levels to issue severity. Custom mapping or overrides may be entered manually, otherwise has a default preset.'),
packageJsonPath: packageJsonPathSchema,
scoreTargets: pluginScoreTargetsSchema,
});
//# sourceMappingURL=config.js.map