openapi-parse
Advanced tools
+26
-0
@@ -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; |
+8
-7
| { | ||
| "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" | ||
| } | ||
| } |
+24
-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) | ||
| ``` |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
8106
19.96%28
600%1
-50%115
-2.54%+ Added
+ Added
- Removed
- Removed
Updated
Updated
Updated