Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including validity-date-in-range with all npm packages installed. Try it out:

var validityDateInRange = require("validity-date-in-range")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

validity-date-in-range v0.0.3

Validity style validator to ensure a property is a date within a given range

validity-date-in-range

Validity style validator to ensure a property is a date within a given range.

Installation

  npm install validity-date-in-range

Usage

Below is a simple example for usage with schemata:

var validity = require('validity')
  , schemata = require('schemata')
  , createRangeValidator = require('validity-date-in-range')

var ninetiesHitsSchema = schemata(
    { releaseDate:
      { type: Date
      , validators:
        { all:
          [ createDateValidator(new Date(1990, 0, 0), new Date(1999, 11, 31))
          ]
        }
      }
    })

ninetiesHitsSchema.validate({ releaseDate: new Date(1965, 2, 12) }, function (error, errorMessage) {
  console.log(errorMessage) //-> 'releaseDate must be after 01 Jan 1990'
})

ninetiesHitsSchema.validate({ releaseDate: new Date(2005, 3, 20) }, function (error, errorMessage) {
  console.log(errorMessage) //-> 'releaseDate must be before 31 Dec 1999'
})

ninetiesHitsSchema.validate({ releaseDate: new Date(1995, 10, 13) }, function (error, errorMessage) {
  console.log(errorMessage) //-> undefined
})

You can also pass in a function that returns a Date which will get called at validation time. This is useful in case the validity of a given date changes over time, e.g. a person with the date of birth 25 Jan 1996 cannot legally buy alcohol in the UK at the time of writing (30 Oct 2013 – age 17), however next year (25 Jan 2014 onwards – after they turn 18) they can.

var schema = schemata(
    { publishedDate:
      { type: Date
      , validators:
        { all:
          [ createDateValidator(null, function () {
              return new Date(/* Get today - 18 years */)
            })
          ]
        }
      }
    })

API

var validate = createRangeValidator(Date/Function:earliest, Date/Funtion:latest)

Pass in the earliest and latest dates allowed. These are inclusive – i.e. if a date is equal to the earliest or latest, it is considered valid. Both earliest and latest are optional, but at least one value is required, othewise your validation will consider all dates as valid!

validate(String:key, String:keyDisplayName, Object:object, Function:cb)

This is a validity compatible function, which in turn is used by schemata for schema validation.

The callback signature cb(err, errorMessage).

  • err is an Error object if something bad happened and null otherwise.
  • errorMessage is a String if a validation error happened and undefined otherwise.

Licence

Licensed under the New BSD License

Metadata

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free