cp-app
Version:
Easily bootstrap a new permissionless app based on permissionless.js and your favourite tooling!
25 lines (18 loc) • 783 B
text/typescript
import { removeTrailingSlash } from "./general"
const validationRegExp =
/^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/
//Validate a string against allowed package.json names
export const validateAppName = (rawInput: string) => {
const input = removeTrailingSlash(rawInput)
const paths = input.split("/")
// If the first part is a @, it's a scoped package
const indexOfDelimiter = paths.findIndex((p) => p.startsWith("@"))
let appName = paths[paths.length - 1]
if (indexOfDelimiter !== -1) {
appName = paths.slice(indexOfDelimiter).join("/")
}
if (input === "." || validationRegExp.test(appName ?? "")) {
return
}
return "App name must consist of only lowercase alphanumeric characters, '-', and '_'"
}