UNPKG

lockfile-lint

Version:
69 lines (58 loc) 1.72 kB
'use strict' const debug = require('debug')('lockfile-lint') const { ValidateHostManager, ValidateHttpsManager, ValidatePackageNamesManager, ValidateSchemeManager, ValidateUrlManager, ValidateIntegrityManager } = require('../src/validators') const validatorFunctions = new Map([ ['validateHosts', ValidateHostManager], ['validateHttps', ValidateHttpsManager], ['ValidatePackageNames', ValidatePackageNamesManager], ['validateSchemes', ValidateSchemeManager], ['validateUrls', ValidateUrlManager], ['validateIntegrity', ValidateIntegrityManager] ]) function runValidators({type, path, validators} = {}) { let validatorCount = 0 let validatorFailures = 0 let validatorSuccesses = 0 if (!Array.isArray(validators)) { throw new Error('provided object must have a validators array list') } validators.forEach((validator) => { const validatorFunction = validatorFunctions.get(validator.name) if (!validatorFunction) { return false } validatorCount++ debug(`invoking validator for: ${validator.name}`) // eslint-disable-next-line security/detect-object-injection const validationResult = validatorFunction({ path, type, validatorValues: validator.values, validatorOptions: validator.options }) if (validationResult.type === 'error') { validationResult.errors.forEach((validationError) => { console.error(validationError.message) validatorFailures++ }) } else { debug(`validator ${validator.name} reported no issues`) validatorSuccesses++ } }) return { validatorCount, validatorFailures, validatorSuccesses } } module.exports = { runValidators }