unpkg/modules/middleware/validatePackageName.js

35 lines
761 B
JavaScript
Raw Normal View History

2018-05-19 15:34:36 +00:00
const validateNpmPackageName = require("validate-npm-package-name");
2018-09-03 16:19:24 +00:00
const hexValue = /^[a-f0-9]+$/i;
function isHash(value) {
return value.length === 32 && hexValue.test(value);
}
2018-05-19 15:34:36 +00:00
/**
* Reject requests for invalid npm package names.
*/
function validatePackageName(req, res, next) {
2018-09-03 16:19:24 +00:00
if (isHash(req.packageName)) {
return res
.status(403)
.type("text")
.send(`Invalid package name "${req.packageName}" (cannot be a hash)`);
}
2018-05-26 00:25:04 +00:00
const errors = validateNpmPackageName(req.packageName).errors;
if (errors) {
const reason = errors.join(", ");
2018-05-19 15:34:36 +00:00
return res
.status(403)
.type("text")
.send(`Invalid package name "${req.packageName}" (${reason})`);
}
next();
}
module.exports = validatePackageName;