npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@fab1o/type-checking

v3.9.0

Published

Throws Error when data fails to meet params.

Downloads

6

Readme

@fab1o/type-checking

Throws an Error when data fails to meet params configuration, ensuring data quality, i.e. data is both correct and useful.

npm install @fab1o/type-checking

Documentation

https://github.com/fab1o/type-checking/blob/master/docs/index.md

Usage

import { Types, typecheck } from '@fab1o/type-checking';

Examples

It supports any type of classes and functions.

Classes

import { Types, typecheck } from '@fab1o/type-checking';

class Client {
    constructor(name) {
        const params = {
            name: Types.string
        };

        typecheck(this, params, arguments);
    }

    changeInfo(name) {
        const params = {
            name: Types.string
        };

        typecheck(this, 'changeInfo', params, arguments);
        // or
        typecheck(this, this.changeInfo, params, arguments);
    }
}

new Client(2020);
// error: "Client(name) name expected a String but received a Number: 2020."

const client = new Client('Client');
// success

client.changeInfo();
// error: "Client.changeInfo(name) name expected a String but received undefined."

Functions

It also works with simple functions.

function setYear(year) {
    const params = {
        year: Types.number.optional
    };

    typecheck('setYear', params, arguments);
    // or
    typecheck(setYear, params, arguments);
}

setYear(NaN);
// error: "setYear(year) year expected a Number or null or undefined but received NaN."

setYear(2020);
// success
setYear(null);
// success
setYear();
// success

Just data

Or without a function at all.

const params = {
    name: Types.string,
    year: Types.number
};

const data = {
    name: 'Name',
    year: 2020
};

typecheck(params, data);
// success

Logging

It also supports logging a warn message without throwing an error using .warn (for each parameter or all parameters):

const params = {
    name: Types.string.warn,
    year: Types.numbe.warn
};

const data = {};

typecheck(params, data);
// does not throw an error, uses console.warn() instead

or for all parameters:

typecheck.warn(params, data);

Motivation

  1. Simplification: It makes type-checking clean, declarative, easy to read and maintain;
  2. Performance: Avoids creating the error message before the assertion fails in most cases;
  3. Configurable: Throw your own Error object, and customize the error messages to your liking;
  4. Featureful: Array of types, Optional, Nullable, Undefinable and Logging types, Custom types and User-defined types;
  5. Smart error messages enable easier troubleshooting:
    • Dynamic function signature;
    • Base class parameters indicator;
    • Expected type and expected data;
    • Received data;

Credits