unpkg/modules/middleware/validatePackageName.js

33 lines
732 B
JavaScript

import validateNpmPackageName from 'validate-npm-package-name';
const hexValue = /^[a-f0-9]+$/i;
function isHash(value) {
return value.length === 32 && hexValue.test(value);
}
/**
* Reject requests for invalid npm package names.
*/
export default function validatePackageName(req, res, next) {
if (isHash(req.packageName)) {
return res
.status(403)
.type('text')
.send(`Invalid package name "${req.packageName}" (cannot be a hash)`);
}
const errors = validateNpmPackageName(req.packageName).errors;
if (errors) {
const reason = errors.join(', ');
return res
.status(403)
.type('text')
.send(`Invalid package name "${req.packageName}" (${reason})`);
}
next();
}