17 lines
601 B
JavaScript
17 lines
601 B
JavaScript
const NPM_PACKAGE_NAME_REGEX = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
|
|
function validatePackageName(packageName) {
|
|
return NPM_PACKAGE_NAME_REGEX.test(packageName);
|
|
}
|
|
function assertValidPackageName(packageName) {
|
|
if (!validatePackageName(packageName)) {
|
|
throw new Error(
|
|
`Invalid package name "${packageName}". Package names must follow npm naming rules: lowercase letters, numbers, hyphens, underscores, and dots. Scoped packages like @org/package are also supported.`
|
|
);
|
|
}
|
|
}
|
|
export {
|
|
NPM_PACKAGE_NAME_REGEX,
|
|
assertValidPackageName,
|
|
validatePackageName
|
|
};
|