Reusable validation logic as pure functions
This package allows us to reuse the same validation logic between the UI/frontend and the REST API/backend.
$ npm i --save @salesvista/stateless-validation
// with babel
import sv from '@salesvista/stateless-validation'
// without babel
const sv = require('@salesvista/stateless-validation')
Accepts a single string and returns a boolean indicating if the given string is a valid URL-friendly slug (i.e. a username).
A slug is valid if it meets the following criteria:
- Starts with a lowercase letter
- Is 3 to 64 characters long
- Consists of only lowercase letters, numbers, underscores, or hyphens
Convert the given string into a valid slug.
Accepts a single string (and an optional object) and returns a string.
The conversion process includes:
- coercing the argument into a string
- replacing whitespace with either
'_'
or a givenopts.whitespaceReplacement
- removing non-alphanumeric characters
- converting to lower-case
- truncating to first 64 characters
- potentially prepending a portion of
'abc'
or a givenopts.prefix
to make the slug valid
Options accepted:
-
opts.whitespaceReplacement
: string, default'_'
What to replace any whitespace with. Must make a valid slug to be used. An empty string will remove whitespace.
-
opts.prefix
: string, default'abc'
Used to turn an invalid slug (one not starting with a letter) into a valid slug, by prepending up to 3 characters of this string to the converted value.
-
opts.scroll
: boolean, defaultfalse
Use a "scroll from right" algorithm when using the prefix to make the slug valid. The default algorithm prepends the entire prefix (when necessary), whereas the "scroll" algorithm only prepends a minimal number of characters from the prefix to make the slug valid (i.e. only uses 1 to 3 characters of the prefix instead of the whole thing).
Accepts a single string and returns a boolean indicating if the given string is a valid password.
A password is valid if it meets the following criteria:
- Is at least 6 characters long
Accepts a single string and returns a boolean indicating if the given string is a valid email.
An email is valid if it meets the following criteria:
- Conforms to the format of {local-part}@{domain}
After one or more PRs have been merged to master, you can cut a new release with the following commands:
# update local master branch
git checkout master && git pull origin master
# make sure tests pass
npm it
# bump version, update changelog, and create git tag
npm run release
# push release to github
git push -u --follow-tags origin master
npm publish --access public
Then you can update the version referenced by any apps/packages that use this as a dependency.