@node-rs/jsonschema
TypeScript icon, indicating that this package has built-in type declarations

0.1.2 • Public • Published

@node-rs/jsonschema

https://github.com/ahungrynoob/jsonschema/actions

A node package based on jsonschema-rs for performing JSON schema validation.

Install

yarn add @node-rs/jsonschema

Support matrix

Operating Systems node12 node14 node16
Windows x64
Windows x32
Windows arm64
macOS x64
macOS arm64
Linux x64 gnu
Linux x64 musl
Linux arm gnu
Linux arm64 gnu
Linux arm64 musl
Android arm64
FreeBSD x64

Usage

const { isValidSync, validateSync, isValid, validate } = require("@node-rs/jsonschema");

const schema = JSON.stringify({
  type: 'object',
  properties: {
    foo: { type: 'integer' },
    bar: { type: 'string' },
  },
  required: ['foo'],
  additionalProperties: false,
})

const input = JSON.stringify({
  foo: 1,
  bar: 'abc',
})

const exceptionInput = JSON.stringify({
  foo: 'abc',
  bar: 1,
})

// check whether the input meet schema
const result = isValidSync(input, schema);
console.log(result); // true

try {
  validateSync(exceptionInput, schema);
}catch(e){
  // it will throw error if input doesn't meet schema
  console.log(e.message); // Validation error: 1 is not of type "string"; Instance path: /bar; \nValidation error: "abc" is not of type "integer"; Instance path: /foo; \n
}

// promise version of isValidSync
isValid(input, schema).then((result) => {
  console.log(result); // true
})

// promise version of validateSync
validate(input, schema).then(() => {
  console.log("feel good and input meet schema");
}).catch((e) => {
  // it will reject if input doesn't meet schema
  console.log(e.message); // Validation error: 1 is not of type "string"; Instance path: /bar; \nValidation error: "abc" is not of type "integer"; Instance path: /foo; \n
})

API

export const isValidSync: (input: string, schema: string) => boolean

export const validateSync: (input: string, schema: string) => void

export const isValid: (
  input: Buffer | string | ArrayBuffer | Uint8Array,
  schema: Buffer | string | ArrayBuffer | Uint8Array,
) => Promise<boolean>

export const validate: (
  input: Buffer | string | ArrayBuffer | Uint8Array,
  schema: Buffer | string | ArrayBuffer | Uint8Array,
) => Promise<null>

Bench

Hardware

Model Name:	MacBook Pro
Model Identifier:	MacBookPro16,1
Processor Name:	6-Core Intel Core i7
Processor Speed:	2.6 GHz
Number of Processors:	1
Total Number of Cores:	6
L2 Cache (per Core):	256 KB
L3 Cache:	12 MB
Hyper-Threading Technology:	Enabled
Memory:	32 GB

Result

Running "Validate Sync" suite...
Progress: 100%

  @node-rs/jsonschema::validateSync:
    105 138 ops/s, ±2.04%   | fastest

  ajv::validateSync:
    178 ops/s, ±2.46%       | slowest, 99.83% slower

Finished 2 cases!
  Fastest: @node-rs/jsonschema::validateSync
  Slowest: ajv::validateSync

Package Sidebar

Install

npm i @node-rs/jsonschema

Weekly Downloads

2

Version

0.1.2

License

MIT

Unpacked Size

9.45 kB

Total Files

5

Last publish

Collaborators

  • dxd_sjtu
  • broooooklyn