serverless
Version:
Serverless Framework - Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more
41 lines (36 loc) • 1.06 kB
JavaScript
const jc = require('json-cycle');
const YAML = require('js-yaml');
const _ = require('lodash');
const cloudFormationSchema = require('../../plugins/aws/lib/cloudformationSchema');
const loadYaml = (contents, options) => {
let data;
let error;
try {
data = YAML.load(contents.toString(), options || {});
} catch (exception) {
error = exception;
}
return { data, error };
};
function parse(filePath, contents) {
// Auto-parse JSON
if (filePath.endsWith('.json')) {
return jc.parse(contents);
} else if (filePath.endsWith('.yml') || filePath.endsWith('.yaml')) {
const options = {
filename: filePath,
};
let result = loadYaml(contents.toString(), options);
if (result.error && result.error.name === 'YAMLException') {
_.merge(options, { schema: cloudFormationSchema.schema });
result = loadYaml(contents.toString(), options);
}
if (result.error) {
throw result.error;
}
return result.data;
}
return contents.toString().trim();
}
module.exports = parse;
;