JSPM

  • Created
  • Published
  • Downloads 262347
  • Score
    100M100P100Q174551F
  • License MIT

Swagger 2 or OAS 3? YAML or JSON? URL, path, string or object? Who cares! It just works.

Package Exports

  • oas-normalize

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (oas-normalize) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Swagger 2 or OAS 3? YAML or JSON? URL, path, string or object? Who cares! It just works.

This module uses a bunch of other great modules to do the heavy lifting, and normalizes everything!

Install

npm install oas-normalize --save

Usage

It's pretty simple:

const OAS = require('oas-normalize');

const oas = new OAS('https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore-expanded.yaml'); // Or a string, pathname, JSON blob, whatever
oas.validate((err, spec) => {
  if (err) {
    console.log(err.errors);
    return;
  }
  console.log(spec); // spec will always be JSON, and valid
});

Errors

For validation errors, when available, you'll get back an object:

{
  "errors": [
    {
      "message": "User-friendly message",
      "path": [...array of the path to the error...]
    }
  ],
  "full": ...raw errors...
}

message is almost always there, but path is less dependable.

Helper functions

If you want some more functionality, you can do anything here:

Function What it does
oas.load(cb) Just load the file, valid or not, as JSON
oas.bundle(cb) Bring together all files into one JSON blob (but keep $refs)
oas.deref(cb) Resolve $refs
oas.validate(cb, [convertToLatest?])) Validate the whole thing!

Other little features

Always return OAS 3

If you want .validate to always return a OAS 3 document, include a true as the second param: oas.validate(action, true);

Enable local paths

For security reasons, you need to enable it. Use new OAS('./whatever.json', { enablePaths: true }) to load local files.