function getPreparedSubWDLs()

in src/parser/WDL/parse.js [59:112]


function getPreparedSubWDLs(opts) {
  const { wdlArray, baseURI, imports } = opts;
  const res = {};
  let status = true;
  let message = '';

  if (wdlArray) {
    wdlArray.forEach((item) => {
      res[item.name] = item.wdl;
    });
  }

  const promises = [];
  _.forEach(imports.map(imp => imp.uri), (importUri) => {
    if (!res[importUri]) {
      if (importUri.indexOf('file://') === 0) {
        message = 'Error resolving imports: "file://" protocol for imports is not supported';
        status = false;

        return false;
      }

      if (importUri.indexOf('http://') === 0 || importUri.indexOf('https://') === 0) {
        promises.push(DataService.get(`${importUri}`).then(data => ({ importUri, data })));

        return true;
      }

      if (!baseURI) {
        status = false;
        message = 'Error resolving imports: No baseURI presented';

        return false;
      }

      promises.push(DataService.get(baseURI.endsWith('/') ? `${baseURI}${importUri}` : `${baseURI}/${importUri}`)
        .then(data => ({ importUri, data })));
    }

    return true;
  });

  return new Promise((resolve) => {
    Promise.all(promises).then((response) => {
      _.forEach(response, (source) => {
        res[source.importUri] = source.data;
      });
      resolve({ status, res, message });
    }).catch(() => {
      status = false;
      resolve({ status, res, message });
    });
  });
}