Node Promiscuous Modules

    @json-schema-tools/dereferencer
    TypeScript icon, indicating that this package has built-in type declarations

    1.5.4 • Public • Published

    JSON Schema Dereferencer

    CircleCI branch Dependabot status 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
    • complete disrespect for $id
    • 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

    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.

    Keywords

    none

    Install

    npm i @json-schema-tools/dereferencer

    DownloadsWeekly Downloads

    3,143

    Version

    1.5.4

    License

    Apache-2.0

    Unpacked Size

    30.4 kB

    Total Files

    7

    Last publish

    Collaborators

    • belfordz