/* global window */
const ACCEPTED_RUNTIME_PROVENANCE = new Set(["REAL_API", "PARTIAL_LIVE", "MISSING"]);

function assertRuntimeProvenance(sectionName, payload) {
  const kind = payload && payload.provenance && payload.provenance.kind;
  if (!ACCEPTED_RUNTIME_PROVENANCE.has(kind)) {
    throw new Error(`${sectionName} returned unsupported provenance kind: ${kind}`);
  }
  if (payload.provenance.isMock !== false) {
    throw new Error(`${sectionName} returned missing or mock provenance`);
  }
  return payload;
}

function isMissing(payload) {
  return payload?.provenance?.kind === "MISSING";
}

function isPartialLive(payload) {
  return payload?.provenance?.kind === "PARTIAL_LIVE";
}

window.OpsProvenance = { assertRuntimeProvenance, isMissing, isPartialLive };
