From b434b9e220201bb91da06e92569489d87af9337d Mon Sep 17 00:00:00 2001 From: Raisel Melian Date: Thu, 7 Feb 2019 12:54:55 -0500 Subject: [PATCH] better error handling --- lib/parser.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/parser.js b/lib/parser.js index a2ad9af1e..f21cf0067 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -59,7 +59,7 @@ async function parse (filePath) { content = JSON.stringify(filePath); } else { console.error(`Could not find a valid asyncapi definition: ${filePath}`); - throw `Could not find a valid asyncapi definition: ${filePath}`; + throw new Error(`Could not find a valid asyncapi definition: ${filePath}`); } } catch (e) { console.error('Can not load the content of the AsyncAPI specification file'); @@ -104,17 +104,25 @@ async function parse (filePath) { }; async function parseText (content) { - const parsedContent = parseContent(content); - if (typeof parsedContent !== 'object' || parsedContent === null) { - throw new Error('Invalid YAML content.'); - } - const dereferencedJSON = await dereference(parsedContent); - const bundledJSON = await bundle(dereferencedJSON); - const asyncAPIschema = require('asyncapi')[bundledJSON.asyncapi]; + let parsedStringified; - const parsed = await validate(bundledJSON, asyncAPIschema); + try { + const parsedContent = parseContent(content); + if (typeof parsedContent !== 'object' || parsedContent === null) { + throw new Error('Invalid YAML content.'); + } + const dereferencedJSON = await dereference(parsedContent); + const bundledJSON = await bundle(dereferencedJSON); + const asyncAPIschema = require('asyncapi')[bundledJSON.asyncapi]; - return JSON.parse(JSON.stringify(parsed)); + const parsed = await validate(bundledJSON, asyncAPIschema); + + parsedStringified = JSON.parse(JSON.stringify(parsed)); + } catch (e) { + throw e; + } + + return parsedStringified }; module.exports = parse;