yup-password
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.2 • Public • Published

    Yup-Password

    Yup, dead simple password validation.

    Install

    Using npm:

    $ npm install yup-password

    Using yarn:

    $ yarn add yup-password

    Usage

    Plug and play:

    // ES6
    import * as yup from 'yup'
    import YupPassword from 'yup-password'
    YupPassword(yup) // extend yup
    // CommonJs
    const yup = require('yup')
    require('yup-password')(yup) // extend yup
    // Build schema
    const schema = yup.object().shape({
        username: yup.string().email().required(),
        password: yup.string().password().required(),
    })
    
    const input = {
        username: 'user@example.com',
        password: 'secret',
    }
    
    try {
        // validate
        const res = await schema.validate(input, { abortEarly: false })
        //  ...
    } catch (e) {
        console.log(e.errors) // => [
        //   'password must be at least 8 characters',
        //   'password must contain at least 1 uppercase letter',
        //   'password must contain at least 1 number',
        //   'password must contain at least 1 symbol',
        // ]
    }

    Override, disable or add additional rules:

    const schema = yup.string().password()
        .minLowercase(8) // raise the lowercase requirement to 8
        .min(0) // disable minimum characters completely
        .minWords(2) // add an additional rule
    
    try {
        const res = await schema.validate('secret')
        //  ...
    } catch(e) {
        console.log(e.errors) // => [
        //   'password must contain at least 2 words',              <-- added
        //   'password must contain at least 8 lowercase letters',  <-- overridden
        //   'password must contain at least 1 uppercase letter',
        //   'password must contain at least 1 number',
        //   'password must contain at least 1 symbol',
        // ]
    }

    Pick and choose your password rules:

    const schema = yup.string().min(6).minUppercase(3).minRepeating(2).minWords(2)
    
    await schema.isValid('Now, THIS is some password.') // => true
    await schema.isValid('But thiiis is not.') // => false

    API

    .password()

    Password must meet the default requirements: at least 8 characters, at most 250 characters, at least 1 lowercase letter, at least 1 uppercase letter, at least 1 number and at least 1 symbol.

    const schema = yup.string().password()

    .minLowercase(length?: number = 1, message?: string)

    Password must contain X amount of lowercase letters or more.

    const schema = yup.string().minLowercase(3, 'custom message')

    .minUppercase(length?: number = 1, message?: string)

    Password must contain X amount of uppercase letters or more.

    const schema = yup.string().minUppercase(3, 'custom message')

    [Deprecated] .minNumber(length?: number = 1, message?: string)

    Use .minNumbers() instead.

    .minNumbers(length?: number = 1, message?: string)

    Password must contain X amount of numbers or more.

    const schema = yup.string().minNumbers(3, 'custom message')

    [Deprecated] .minSymbol(length?: number = 1, message?: string)

    Use .minSymbols() instead.

    .minSymbols(length?: number = 1, message?: string)

    Password must contain X amount of symbols or more.

    const schema = yup.string().minSymbols(3, 'custom message')

    .minRepeating(length?: number = 2, message?: string)

    Password must not contain a sequence of X amount of repeated characters. For example, if the limit is 2 thiis will pass but thiiis will not.

    const schema = yup.string().minRepeating(3, 'custom message')

    .minWords(length?: number = 2, message?: string)

    Password must contain X amount of words or more. So long as a sequence of characters contains letters or numbers, it will be recognized as a word. For example secret, 1st! and 1337 count as words, but !@#$% does not.

    const schema = yup.string().minWords(3, 'custom message')

    License

    This project is open-sourced software licensed under the MIT license.

    Install

    npm i yup-password

    DownloadsWeekly Downloads

    3,479

    Version

    0.2.2

    License

    MIT

    Unpacked Size

    12.5 kB

    Total Files

    6

    Last publish

    Collaborators

    • knicola