Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

schema-json-js

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

schema-json-js

A JavaScript Schema class that implements the JSON Schema specification as immutable objects with lazy, async initialization and optimized validations using closures and thunks.

  • 1.0.6
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
25
increased by108.33%
Maintainers
1
Weekly downloads
 
Created
Source

Schema(JSON)js

NPM Version License Code Coverage JavaScript Style Guide

A JavaScript Schema class that implements the JSON Schema specification as immutable objects with lazy, async initialization. The class creates optimized validations using closures and thunks. It currently supports the draft-04 and draft-06 versions of the JSON Schema specification.

Motivations behind the project:

  • implement a JSON Schema validator leveraging modern JS features
  • implement as instances of a class so the schema can be referenced in code
  • include support for synchronous or asynchronous validations
  • allow for partial validations for complex object properties
  • small and lightweight with no dependencies
  • universal support for the latest browsers and Node.js
  • fastest JSON Schema validator without code generation
Contents

Installing

Install using npm:

npm install --save schema-json-js

Examples

Below are numerous examples on how to use the Schema class.


Initialized immediately

  • An example Schema initialized immediately.

    // ...
    const schema = await new Schema({}) // immediately immutable
    // ...
    schema.validate('something')
    // ...
    
  • An example Schema initialized immediately with cached JSON Schema references defined.

    // ...
    const REFS = {
      'https://localhost/schema': {}
    }
    const schema = await new Schema({ $ref: 'https://localhost/schema' }, REFS) // immediately immutable
    // ...
    schema.validate('something')
    // ...
    
  • An example Schema initialized immediately with async validation.

    // ...
    const schema = await new Schema({}, true) // immediately immutable
    // ...
    await schema.validate('something')
    // ...
    
  • An example Schema initialized immediately with cached JSON Schema references defined and async validation.

    // ...
    const REFS = {
      'https://localhost/schema': {}
    }
    const schema = await new Schema({ $ref: 'https://localhost/schema' }, REFS, true) // immediately immutable
    // ...
    await schema.validate('something')
    // ...
    

Initialized lazily

  • An example Schema initialized lazily.

    // ...
    const schema = await new Schema() // not immutable yet...
    // ...
    await schema.assign({}) // now it's immutable
    // ...
    schema.validate('something')
    // ...
    
  • An example Schema initialized lazily with cached JSON Schema references defined.

    // ...
    const schema = await new Schema() // not immutable yet...
    // ...
    const REFS = {
      'https://localhost/schema': {}
    }
    await schema.assign({ $ref: 'https://localhost/schema' }, REFS) // now it's immutable
    // ...
    schema.validate('something')
    // ...
    
  • An example Schema initialized lazily with async validation.

    // ...
    const schema = await new Schema(true) // not immutable yet...
    // ...
    await schema.assign({}) // now it's immutable
    // ...
    await schema.validate('something')
    // ...
    

API

Environments

  • All modern browsers and Node 10+ without polyfills.
  • The build script is currently set to ECMA 9.

Benchmarks

There is a small benchmark to showcase our performance against some similar solutions. One of the many ways schema-json-js stands apart from many other validators is its ability to perform partial schema validation.

Future

  • create contributing guide
  • implement support for the draft-07 and 2019-09 JSON Schema specification
  • feature requests via issues

Contributing

We are currently drafting our contributing guide in the new monorepo!

Changelog

Keywords

FAQs

Package last updated on 22 Dec 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc