Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

agegate

izolate104MIT4.0.1TypeScript support: included

A simple function that verifies a date of birth against a country's legal drinking age.

age, gate, agegate, age gate, adult, verification

readme

Agegate

A simple function that verifies a date of birth against a country's legal drinking age.

npm i agegate

Usage

import agegate from "agegate";

var user = {
  dateOfBirth: new Date("2015-02-14"), // strings are also accepted
  country: "US",
};

var isLegal = agegate(user.dateOfBirth, user.country); // false

:warning: If an invalid date is supplied, the result will be falsy. If an invalid country code is supplied, it will validate against a default legal drinking age of 18.

Use with frameworks (e.g. React)

In order to use this library with frontend UI frameworks, the underlying dataset used to validate is also exported.

import React, { useState } from "react";
import agegate, { getData } from "agegate";

const countries = getData();

function Modal() {
  const [date, setDate] = useState("");
  const [country, setCountry] = useState(countries[0].code);
  const [legal, setLegal] = useState(false);

  const submitHandler = e => {
    e.preventDefault();

    if (date && country) {
      const result = agegate(new Date(date), country);
      setLegal(result);
    }
  };

  return (
    <div>
      <form onSubmit={submitHandler}>
        <h3>Enter your date of birth</h3>
        <input
          type="date"
          value={date}
          onChange={e => setDate(e.target.value)}
        />

        <h3>Enter your country</h3>
        <select value={country} onChange={e => setCountry(e.target.value)}>
          {countries.map(({ code, name }) => (
            <option key={name} value={code}>
              {name}
            </option>
          ))}
        </select>

        <button type="submit">Submit</button>
      </form>

      <p style={{ color: legal ? "green" : "red" }}>
        RESULT: You are {legal ? "" : "NOT"} old enough!
      </p>
    </div>
  );
}

Please file a new issue if you find any inconsistencies in the countries dataset.

changelog

4.0.0 (2020-09-11)

  • Completely refactored library into a single validator function. Removed any elements such as cookies, HTML forms, etc. This new narrow focus modernizes the library and allows it to be used with frontend UI frameworks too.

3.0.0 (2016-04-15)

  • Changes key name of cookie-related options

2.1.0 (2016-04-15)

  • Adds option to set cookie name
  • Code style improvements

1.0.0 (2015-04-27)

Features

  • Added the rest of the countries to the data file

Bugs

  • Re-written the method to serialize form data to be more secure
  • Corrected the method for retrieval of input's checked value
  • Renamed property defaults to options
  • Indicated the base number on parseInt()

0.3.0 (2015-04-23)

Features

  • Add data option to allow override of default country drinking age data
  • JSDoc comments
  • Test for data validation

Bugs

  • Default month and day to 1, if not specified
  • More specific variable names to avoid duplication
  • parseInt() called on numeric form data

0.2.0 (2015-04-20)

Features

  • Build UMD modules, instead of purely CommonJS
  • Test for saving cookies
  • Styled example page
  • .npmignore and .jshintrc

Bugs

  • verify(data) method responds boolean

0.1.0

Initial commit