Socket
Socket
Sign inDemoInstall

@json-schema-tools/dereferencer

Package Overview
Dependencies
13
Maintainers
1
Versions
47
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @json-schema-tools/dereferencer

Dereference (aka parse refs) from JSON Schemas


Version published
Weekly downloads
11K
increased by22.94%
Maintainers
1
Created
Weekly downloads
 

Changelog

Source

1.6.2 (2024-04-09)

Bug Fixes

  • bump ci node versions (8413967)
  • bump to node 20 (7bcabd4)
  • bump traverse (ca9060e)

Readme

Source

JSON Schema Dereferencer

CircleCI branch npm GitHub release GitHub commits since latest release

Otherwise known as a ref parser, this tool will replace json schema using $ref with the underlying reference, returning relevant errors otherwise.

Built using @json-schema-tools/traverse

features

  • minimal dependencies
  • simple & fast
  • cycle detection/handling
  • switchable recusive dereferencing
  • works in node & in browser (isomorphic)
  • handles:
    • relative pointer refs
    • http/https uris
    • local filesystem references
  • configurable
  • optionally de-reference internal references only, keeping it synchronous
  • ignore refs that match a set of patterns
  • extensible
    • dependency injectable fetch and filesystem
    • middleware allows you to easily implement new $ref values.
    • easily add behaviors for custom reference locations
  • option for mutating in place or returning a copy

Getting Started

npm install @json-schema-tools/dereferencer

const JsonSchemaDereferencer = require("@json-schema-tools/dereferencer").default;

const mySchema = {
    type: "object",
    properties: {
      foo: { anyOf: [
        { $ref: "#/properties/bar" },
        { type: "string" }
      ]},
      bar: { $ref: "#/properties/foo" },
      baz: { $ref: "../myschemas/baz.json" },
      jsonSchemaMetaSchema: { $ref: "https://meta.json-schema.tools" }
    },
    additionalProperties: {
        type: "array",
        items: [
            { type: "array", items: { $ref: "#" } },
            { type: "boolean" }
        ]
    }
};

const dereferencer = new JsonSchemaDereferencer(mySchema);

console.log(dereferencer.resolveSync());
console.log(await dereferencer.resolve());

Add custom protocol handling

import JsonSchemaDereferencer from "@json-schema-tools/dereferencer";

const mySchema = {
    type: "object",
    properties: {
      foo: { $ref: "ipfs://39420398420384" }
    }
};

const dereferencer = new JsonSchemaDereferencer(mySchema, {
  protocolHandlerMap: {
    "ipfs": (ref) => Promise.resolve({ type: "string", title: "pretend we got this from ipfs" })
});

console.log(dereferencer.resolveSync());
console.log(await dereferencer.resolve());

Contributing

How to contribute, build and release are outlined in CONTRIBUTING.md, BUILDING.md and RELEASING.md respectively. Commits in this repository follow the CONVENTIONAL_COMMITS.md specification.

FAQs

Last updated on 09 Apr 2024

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc