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

@gregoriusrippenstein/node-red-contrib-validation-and-documentation

v0.1.2

Published

JSON Schema validator for Node Red

Downloads

152

Readme

Built upon node-red-contrib-full-msg-json-schema-validation, origial readme follows

This validation node does two more things:

  • valid the entire object, previously it was only possible to validate a property on the object
  • generates documentation of the schema and replaces the info details of the node with the documentation

Some more details are available at the comparison flow and the forum discussion.

Unlike the original, instead of two outputs this has only one. Previously the two outputs where used to diverge messages that where valid and those that weren't. Instead this throws an exception that can be caught if validation fails. For the author this makes more sense since a validation that fails represents an unknown state of the system, likely to cause failure - fail fast, fail early is the motto.

Documentation is created using jsonschema2md and stored in the nodes info box - existing content will be replaced. The intention is to copy and paste that documentation to somewhere else. The info box is a good place to put it in the first place, alternative would be a debug message of some sort.

To generate the documentation, use the button in the property panel:

img

The schema can be pasted into the editor pane also located in the property panel:

img

Documentation

Documentation can be found in the description panel and from there copied:

img

The markdown is rendered in the info box of the node:

img

Examples

An example flow is included and can also be viewed here.

Validation methods

As with the original, validation is done using the ajv library, just an updated version.

Validation of flow and global is perhaps not the best since it makes a copy of those two. The environment is validating using process.env - this too might not be the best way.

Artifacts


node-red-contrib-json-full-schema-validator

JSON Full Schema validator for Node Red is pretty easy to use. Just open node properties and choose which property object wants to validate and paste JSON Schema

  • OK will returned in first response
  • KO will returned in second response. Error object with explanation will added in msg

JSON Schema:

{ "title": "Person", "type": "object", "required":["lastName"], "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } } }

Examples:

  • OK msg.payload= { "firstName": "John", "lastName": "Doe", "age": 1 };

  • KO msg.payload= { "firstName": "John", "age": 1 };