Files
pascal 1179c4b1da Validation
Package, implementation and tests
2024-05-19 22:47:42 +02:00

53 lines
1.2 KiB
TypeScript

import * as EmailValidator from 'email-validator'
import logger from 'log'
import zxcvbn from 'zxcvbn'
import {parseDocument} from 'htmlparser2'
let _verbose: boolean = false
export function verbose(v: boolean) {
_verbose = v
}
const log = logger('validation')
export enum PasswordStrength {
Weak = 0,
Easy = 1,
Medium = 2,
Strong = 3,
Hard = 4,
}
export function password_is_strong(password: string, strength: PasswordStrength = PasswordStrength.Medium, email?: string) : boolean {
log.trace("Verify password's strength")
if (zxcvbn(password, email !== undefined ? [email] : []).score < strength) {
if (_verbose) log.warn("Password is too weak")
return false
}
return true
}
export function contains_html(text: string) : boolean {
log.trace("Verify if text contains HTML")
if (parseDocument(text).children.some(node => node.nodeType === 1)) {
if (_verbose) log.warn("")
return true
}
return false
}
export function email_is_valid(email: string) : boolean {
log.trace("Verify email's validity")
if (!EmailValidator.validate(email)) {
if (_verbose) log.warn("Invalid email")
return false
}
return true
}