New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

openapi-parse

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

openapi-parse - npm Package Compare versions

Comparing version
0.1.4
to
0.2.2
+26
-0
CHANGELOG.md

@@ -5,2 +5,28 @@ # Change Log

<a name="0.2.2"></a>
## [0.2.2](https://github.com/devdigital/openapi-parse/compare/v0.2.1...v0.2.2) (2018-09-25)
### Bug Fixes
* remove base path ([0d9ca3a](https://github.com/devdigital/openapi-parse/commit/0d9ca3a))
<a name="0.2.1"></a>
## [0.2.1](https://github.com/devdigital/openapi-parse/compare/v0.2.0...v0.2.1) (2018-09-25)
<a name="0.2.0"></a>
# [0.2.0](https://github.com/devdigital/openapi-parse/compare/v0.1.4...v0.2.0) (2018-09-25)
### Features
* add dereference option ([5f18f36](https://github.com/devdigital/openapi-parse/commit/5f18f36))
* change parse format ([f3f27ad](https://github.com/devdigital/openapi-parse/commit/f3f27ad))
<a name="0.1.4"></a>

@@ -7,0 +33,0 @@ ## [0.1.4](https://github.com/devdigital/openapi-parse/compare/v0.1.3...v0.1.4) (2018-04-25)

+50
-46
'use strict';
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
Object.defineProperty(exports, "__esModule", {
value: true
});
const $RefParser = require('json-schema-ref-parser');
const isNil = require('inspected/schema/is-nil').default;
const isString = require('inspected/schema/is-string').default;
const isObject = require('inspected/schema/is-object').default;
const merge = require('deepmerge');
const fs = require('fs');
var _jsonSchemaRefParser = require('json-schema-ref-parser');
const fromFile = filePath => {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
reject(err);
return;
}
var _jsonSchemaRefParser2 = _interopRequireDefault(_jsonSchemaRefParser);
const spec = JSON.parse(data);
resolve(spec);
});
});
};
var _isNil = require('inspected/schema/is-nil');
const dereference = (() => {
var _ref = _asyncToGenerator(function* (content, basePath, parser, resolver) {
const options = {
parse: { custom: parser },
var _isNil2 = _interopRequireDefault(_isNil);
var _isString = require('inspected/schema/is-string');
var _isString2 = _interopRequireDefault(_isString);
var _isObject = require('inspected/schema/is-object');
var _isObject2 = _interopRequireDefault(_isObject);
var _deepmerge = require('deepmerge');
var _deepmerge2 = _interopRequireDefault(_deepmerge);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
const resolve = ({ dereference, parser, resolver }) => (() => {
var _ref = _asyncToGenerator(function* (schema) {
const refParserOptions = {
parse: { parser },
resolve: { custom: resolver }
};
if (basePath) {
return yield $RefParser.dereference(basePath, content, options);
}
return yield $RefParser.dereference(content, options);
return dereference ? yield _jsonSchemaRefParser2.default.dereference(schema, refParserOptions) : yield _jsonSchemaRefParser2.default.bundle(schema, refParserOptions);
});
return function dereference(_x, _x2, _x3, _x4) {
return function (_x) {
return _ref.apply(this, arguments);

@@ -45,14 +46,14 @@ };

const parse = (() => {
var _ref2 = _asyncToGenerator(function* (content, options) {
if (isNil(content)) {
throw new Error('No content specified.');
const parse = options => (() => {
var _ref2 = _asyncToGenerator(function* (schema) {
if ((0, _isNil2.default)(schema)) {
throw new Error('No schema specified.');
}
if (!isString(content) && !isObject(content)) {
throw new Error('Content must be a string or spec object.');
if (!(0, _isString2.default)(schema) && !(0, _isObject2.default)(schema)) {
throw new Error('Schema must be a string path or spec object.');
}
// TODO: validate options against schema
if (!isNil(options) && !isObject(options)) {
if (!(0, _isNil2.default)(options) && !(0, _isObject2.default)(options)) {
throw new Error('Options should be an object.');

@@ -63,2 +64,3 @@ }

const defaultOptions = {
dereference: false,
parser: {

@@ -71,3 +73,3 @@ canParse: function (file) {

return function parse(_x7) {
return function parse(_x3) {
return _ref3.apply(this, arguments);

@@ -84,3 +86,3 @@ };

return function resolve(_x8) {
return function resolve(_x4) {
return _ref4.apply(this, arguments);

@@ -92,3 +94,3 @@ };

const compiledOptions = options ? merge(defaultOptions, options) : defaultOptions;
const compiledOptions = options ? (0, _deepmerge2.default)(defaultOptions, options) : defaultOptions;

@@ -105,3 +107,3 @@ const parser = {

return function parse(_x9) {
return function parse(_x5) {
return _ref5.apply(this, arguments);

@@ -128,3 +130,3 @@ };

return function read(_x10) {
return function read(_x6) {
return _ref6.apply(this, arguments);

@@ -135,5 +137,7 @@ };

const spec = yield dereference(content, compiledOptions.basePath, parser, resolver);
return spec;
return yield resolve({
dereference: compiledOptions.dereference,
parser,
resolver
})(schema);
} catch (error) {

@@ -144,3 +148,3 @@ throw new Error(`There was an error parsing the specified spec:\n${error}`);

return function parse(_x5, _x6) {
return function (_x2) {
return _ref2.apply(this, arguments);

@@ -150,2 +154,2 @@ };

module.exports = parse;
exports.default = parse;
{
"name": "openapi-parse",
"version": "0.1.4",
"version": "0.2.2",
"description": "Basic parser for OpenAPI specs",

@@ -14,2 +14,3 @@ "main": "index.js",

"test:watch": "jest --verbose --watchAll ",
"output": "babel-node run.js",
"release": "standard-version"

@@ -25,14 +26,14 @@ },

"dependencies": {
"deepmerge": "^2.1.0",
"inspected": "^0.3.0",
"json-schema-ref-parser": "^5.0.3"
"deepmerge": "2.1.1",
"inspected": "0.4.0",
"json-schema-ref-parser": "5.1.3"
},
"devDependencies": {
"babel-cli": "6.26.0",
"babel-preset-env": "1.6.1",
"babel-preset-env": "1.7.0",
"babel-preset-stage-0": "6.24.1",
"cross-env": "5.1.4",
"jest": "21.2.1",
"cross-env": "5.2.0",
"jest": "23.6.0",
"standard-version": "4.2.0"
}
}
# openapi-parse
Basic parser for OpenAPI specs
## Installation
```
npm i openapi-parse
```
or
```
yarn add openapi-parse
```
## Usage
```javascript
import parse from 'openapi-parse'
// or const parse = require('openapi-parse').default
const options = { ... }
const specPathOrSchemaObject = ... // specify Swagger/OpenAPI spec path or a loaded schema object
const result = await parse(options)(specPathOrSchemaObject)
```