async function parse()

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);
}