in src/parser/WDL/parse.js [252:290]
async function parse(data, opts = {}) {
let result = {
status: true,
message: '',
model: [],
actions: [],
};
let imports;
const ret = hermesStage(data);
result.status = ret.status;
result.message = ret.message;
const ast = ret.ast;
if (result.status && ast) {
const importOpts = {
wdlArray: opts.wdlArray || null,
baseURI: opts.baseURI || null,
subWfDetailing: opts.subWfDetailing || null,
recursionDepth: opts.recursionDepth || null,
};
const importParsingResult = await importsParse(ast, importOpts);
result.status = importParsingResult.status;
result.message = importParsingResult.message;
imports = importParsingResult.imports;
}
if (result.status && (ast === undefined || ast === null) && !result.message) {
result.status = false;
result.message = 'No data to parse';
}
if (result.status) {
result = logicParsingStage(ast, data, imports);
}
return result.status ? Promise.resolve(result) : Promise.reject(result.message);
}