async function resolve()

in scripts/download-artifacts.js [115:163]


async function resolve (version, hash) {
  // TODO: fix artifacts url
  const response = await fetch(`https://artifacts-api.opensearch.co/v1/versions/${version}`)
  if (!response.ok) {
    throw new Error(`unexpected response ${response.statusText}`)
  }

  const data = await response.json()
  const opensearchBuilds = data.version.builds
    .filter(build => build.projects.opensearch != null)
    .map(build => {
      return {
        projects: build.projects.opensearch,
        buildId: build.build_id,
        date: build.start_time,
        version: build.version
      }
    })
    .sort((a, b) => {
      const dA = new Date(a.date)
      const dB = new Date(b.date)
      if (dA > dB) return -1
      if (dA < dB) return 1
      return 0
    })

  if (hash != null) {
    const build = opensearchBuilds.find(build => build.projects.commit_hash === hash)
    if (!build) {
      throw new Error(`Can't find any build with hash '${hash}'`)
    }
    const zipKey = Object.keys(build.projects.packages).find(key => key.startsWith('rest-resources-zip-') && key.endsWith('.zip'))
    return {
      url: build.projects.packages[zipKey].url,
      id: build.buildId,
      hash: build.projects.commit_hash,
      version: build.version
    }
  }

  const lastBuild = opensearchBuilds[0]
  const zipKey = Object.keys(lastBuild.projects.packages).find(key => key.startsWith('rest-resources-zip-') && key.endsWith('.zip'))
  return {
    url: lastBuild.projects.packages[zipKey].url,
    id: lastBuild.buildId,
    hash: lastBuild.projects.commit_hash,
    version: lastBuild.version
  }
}