11.0.4 • Published 15 days ago

oas-normalize v11.0.4

Weekly downloads
11,356
License
MIT
Repository
github
Last release
15 days ago

Installation

npm install oas-normalize

Usage

import OASNormalize from 'oas-normalize';
// const { default: OASNormalize } = require('oas-normalize'); // If you're using CJS.

const oas = new OASNormalize(
  'https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore-expanded.yaml',
  // ...or a string, path, JSON blob, whatever you've got.
);

oas
  .validate()
  .then(definition => {
    // Definition will always be JSON, and valid.
    console.log(definition);
  })
  .catch(err => {
    console.log(err);
  });

#bundle()

Note

Because Postman collections don't support $ref pointers, this method will automatically upconvert a Postman collection to OpenAPI if supplied one.

Bundle up the given API definition, resolving any external $ref pointers in the process.

await oas.bundle().then(definition => {
  console.log(definition);
});

#deref()

Note

Because Postman collections don't support $ref pointers, this method will automatically upconvert a Postman collection to OpenAPI if supplied one.

Dereference the given API definition, resolving all $ref pointers in the process.

await oas.deref().then(definition => {
  console.log(definition);
});

#validate({ convertToLatest?: boolean })

Validate and optionally convert to OpenAPI, a given API definition. This supports Swagger 2.0, OpenAPI 3.x API definitions as well as Postman 2.x collections.

Please note that if you've supplied a Postman collection to the library it will always be converted to OpenAPI, using @readme/postman-to-openapi, and we will only validate resulting OpenAPI definition.

await oas.validate().then(definition => {
  console.log(definition);
});

Options

OptionTypeDescription
convertToLatestBooleanBy default #validate will not upconvert Swagger API definitions to OpenAPI so if you wish for this to happen, supply true.

Error Handling

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

{
  "details": [
    // Ajv pathing errors. For example:
    /* {
      "instancePath": "/components/securitySchemes/tlsAuth",
      "schemaPath": "#/properties/securitySchemes/patternProperties/%5E%5Ba-zA-Z0-9%5C.%5C-_%5D%2B%24/oneOf",
      "keyword": "oneOf",
      "params": { "passingSchemas": null },
      "message": "must match exactly one schema in oneOf"
    }, */
  ]
}

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

#version()

Load and retrieve version information about a supplied API definition.

await oas.version().then(({ specification, version }) => {
  console.log(specification); // openapi
  console.log(version); // 3.1.0
});

Options

Enable local paths

For security reasons, you need to opt into allowing fetching by a local path. To enable it supply the enablePaths option to the class instance:

const oas = new OASNormalize('./petstore.json', { enablePaths: true });
Colorized errors

If you wish errors from .validate() to be styled and colorized, supply colorizeErrors: true to your instance of OASNormalize:

const oas = new OASNormalize('https://example.com/petstore.json', {
  colorizeErrors: true,
});

Error messages will look like such:

11.0.4

15 days ago

11.0.3

22 days ago

11.0.2

23 days ago

11.0.0

7 months ago

11.0.1

7 months ago

10.0.0

8 months ago

10.1.0

8 months ago

9.0.0

8 months ago

8.4.1

1 year ago

8.4.0

1 year ago

8.3.2

1 year ago

8.3.4

1 year ago

8.3.3

1 year ago

7.1.1

1 year ago

7.1.0

2 years ago

8.1.0

1 year ago

8.3.0

1 year ago

8.1.2

1 year ago

8.1.1

1 year ago

8.1.4

1 year ago

8.3.1

1 year ago

8.1.3

1 year ago

8.0.0

1 year ago

8.2.0

1 year ago

7.0.0

2 years ago

6.0.0

2 years ago

5.2.1

2 years ago

5.1.2

2 years ago

5.2.0

2 years ago

5.0.6

2 years ago

5.0.5

2 years ago

5.0.4

2 years ago

5.0.3

2 years ago

5.1.1

2 years ago

5.0.2

2 years ago

5.1.0

2 years ago

5.0.1

3 years ago

5.0.0

3 years ago

4.0.3

3 years ago

4.0.2

3 years ago

4.0.1

3 years ago

4.0.0

3 years ago

3.0.5

3 years ago

3.0.4

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.3.1

4 years ago

2.3.0

4 years ago

2.2.2

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.0

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.0

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

6 years ago