Files
bruno/packages/bruno-lang/src/index.js

53 lines
986 B
JavaScript

const {
many,
choice,
anyChar
} = require("arcsecond");
const _ = require('lodash');
const inlineTag = require('./inline-tag');
const paramsTag = require('./params-tag');
const headersTag = require('./headers-tag');
const {
bodyJsonTag,
bodyGraphqlTag,
bodyTextTag,
bodyXmlTag,
bodyFormUrlEncodedTag,
bodyMultipartFormTag
} = require('./body-tag');
const bruToJson = (fileContents) => {
const parser = many(choice([
inlineTag,
paramsTag,
headersTag,
bodyJsonTag,
bodyGraphqlTag,
bodyTextTag,
bodyXmlTag,
bodyFormUrlEncodedTag,
bodyMultipartFormTag,
anyChar
]));
const parsed = parser
.run(fileContents)
.result
.reduce((acc, item) => _.merge(acc, item), {});
return {
ver: parsed.ver,
type: parsed.type,
name: parsed.name,
method: parsed.method,
url: parsed.url,
params: parsed.params,
headers: parsed.headers,
body: parsed.body
}
};
module.exports = {
bruToJson
};