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

json-safeguard

v1.1.5

Published

A lib that effectively safeguards data types, and automatic completion of the required words.

Downloads

4

Readme

json-safeguard

Build Status Coverage Status NPM Package NPM Downloads Dependency Status FOSSA Status

A lib that effectively safeguards data types, and automatic completion of the required words.

Quick Start

$ npm i --save json-safeguard
const safeguard = require('json-safeguard')

const schema = {
  name: 'string'
}
const data = {
  name: 'Heleth'
}

safeguard(schema, data) /** =>
  {
    state: true,
    message: 'Verification passed',
    complated_data: {
      name: 'Heleth'
    }
  }
*/

More complicated verification

const schema = {
  name: 'string*',
  age: 'number',
  excellent: (value, data) => {
    const subjects = data.subjects || []
    const isExcellent = subjects.every(item => item.achievement >= 90)
    return isExcellent === value ? true : {
      state: false,
      messages: [
        `${data.name} is ${isExcellent ? '' : 'n\'t'} excellent`
      ]
    }
  },
  subjects: [
    {
      name: 'string*',
      achievement: 'number*'
    }
  ],
  hobby: 'string[]*'
}

const data = {
  name: 'Heleth',
  age: 23,
  excellent: false,
  subjects: [
    {
      name: 'Javascript',
      achievement: 95.5
    },
    {
      name: 'Python',
      achievement: 90
    },
    {
      name: 'Swift',
      achievement: 93
    }
  ]
}

safeguard(schema, data) /** =>
  {
    state: false,
    message: 'Heleth is excellent. | hobby: Expected a value is required.',
    completed_data: {
      name: 'Heleth',
      age: 23,
      excellent: false,
      subjects: [
        {
          name: 'Javascript',
          achievement: 95.5
        },
        {
          name: 'Python',
          achievement: 90
        },
        {
          name: 'Swift',
          achievement: 93
        }
      ]
    },
    hobby: []
  }
*/

Schema

Basic Types

Declare the type of field in the Schema to verify the data.

const schema = {
  _string: 'string'
}

| Types | Value | Description | | :-: | :-: | :-: | | Boolean | boolean | True or false. | | Number | number | Integer or float. | | String | string | | | Array | [] | Array of any. | | Boolean-Array | boolean[] | Array of boolean only. | | Number-Array | number[] | Array of number only. | | String-Array | string[] | Array of string only. |

Required and Automatic Completion

You can specify some required fields with *, such as number[]*. When the field is empty, it will automatically completion.

| Types | Value | Description | | :-: | :-: | :-: | | Required | * | Check if this field exists. |

For example:

const safeguard = require('json-safeguard')

const schema = {
  _string_array: 'string[]*'
}
const data = {}

safeguard(schema, data) /** =>
  {
    state: false,
    message: '_string_array: Expected a value is required.',
    completed_data: {
      _string_array: []
    }
  }
*/

Custom Verify

| Types | Value | Description | | :-: | :-: | :-: | | Custom Verify | (value, data) => any | Use a custom function to check if this field meets the requirements. Return a boolean to tell the result of the check directly. You can also return an object and set the custom message and default value, please read below for details. |

const safeguard = require('json-safeguard')

const schema = {
  _number: (value, data) => value < 20
}
const data = {
  _number: 15
}

safeguard(schema, data) /** =>
  {
    state: true,
    message: '',
    completed_data: {
      _string_array: 15
    }
  }
*/

Result

| Property | Description | Type | Default | | :-: | :-: | :-: | :-: | | state | Verification state | boolean | - | | message | Error message | string | '' | | completed_data | Safe data containing required arrays and objects | object | {} |

License

MIT

FOSSA Status