{"version":3,"file":"validate.js","names":[],"sources":["esm/platform/updates/validate.js"],"sourcesContent":["function isRecord(value) {\n  return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction isAsset(value) {\n  return isRecord(value) && typeof value.hash === \"string\" && typeof value.url === \"string\" && typeof value.path === \"string\";\n}\nfunction isMetadataValue(value) {\n  const type = typeof value;\n  return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\nfunction parseUpdateManifest(json) {\n  let parsed;\n  try {\n    parsed = JSON.parse(json);\n  } catch {\n    throw new Error(\"Updates: received a manifest that is not valid json.\");\n  }\n  if (!isRecord(parsed) || typeof parsed.id !== \"string\" || typeof parsed.createdAt !== \"string\" || typeof parsed.runtimeVersion !== \"string\" || !isAsset(parsed.launchAsset) || !Array.isArray(parsed.assets) || !parsed.assets.every(isAsset) || !isRecord(parsed.metadata) || !Object.values(parsed.metadata).every(isMetadataValue) || Number.isNaN(Date.parse(parsed.createdAt))) {\n    throw new Error(\"Updates: received a manifest with an unexpected shape.\");\n  }\n  const assets = [];\n  for (const asset of parsed.assets) {\n    if (isAsset(asset)) assets.push(asset);\n  }\n  const metadata = {};\n  for (const [key, value] of Object.entries(parsed.metadata)) {\n    if (isMetadataValue(value)) metadata[key] = value;\n  }\n  return {\n    id: parsed.id,\n    createdAt: parsed.createdAt,\n    runtimeVersion: parsed.runtimeVersion,\n    launchAsset: parsed.launchAsset,\n    assets,\n    metadata\n  };\n}\nfunction assertStagedListener(listener) {\n  if (typeof listener !== \"function\") {\n    throw new Error(\"Updates.addStagedListener: listener must be a function.\");\n  }\n}\nexport {\n  assertStagedListener,\n  parseUpdateManifest\n};\n//# sourceMappingURL=validate.js.map\n"],"mappings":";AAAA,SAAS,SAAS,OAAO;CACvB,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AACA,SAAS,QAAQ,OAAO;CACtB,OAAO,SAAS,KAAK,KAAK,OAAO,MAAM,SAAS,YAAY,OAAO,MAAM,QAAQ,YAAY,OAAO,MAAM,SAAS;AACrH;AACA,SAAS,gBAAgB,OAAO;CAC9B,MAAM,OAAO,OAAO;CACpB,OAAO,SAAS,YAAY,SAAS,YAAY,SAAS;AAC5D;AACA,SAAS,oBAAoB,MAAM;CACjC,IAAI;CACJ,IAAI;EACF,SAAS,KAAK,MAAM,IAAI;CAC1B,QAAQ;EACN,MAAM,IAAI,MAAM,sDAAsD;CACxE;CACA,IAAI,CAAC,SAAS,MAAM,KAAK,OAAO,OAAO,OAAO,YAAY,OAAO,OAAO,cAAc,YAAY,OAAO,OAAO,mBAAmB,YAAY,CAAC,QAAQ,OAAO,WAAW,KAAK,CAAC,MAAM,QAAQ,OAAO,MAAM,KAAK,CAAC,OAAO,OAAO,MAAM,OAAO,KAAK,CAAC,SAAS,OAAO,QAAQ,KAAK,CAAC,OAAO,OAAO,OAAO,QAAQ,CAAC,CAAC,MAAM,eAAe,KAAK,OAAO,MAAM,KAAK,MAAM,OAAO,SAAS,CAAC,GAAG;EACnX,MAAM,IAAI,MAAM,wDAAwD;CAC1E;CACA,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,SAAS,OAAO,QAAQ;EACjC,IAAI,QAAQ,KAAK,GAAG,OAAO,KAAK,KAAK;CACvC;CACA,MAAM,WAAW,CAAC;CAClB,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,QAAQ,GAAG;EAC1D,IAAI,gBAAgB,KAAK,GAAG,SAAS,OAAO;CAC9C;CACA,OAAO;EACL,IAAI,OAAO;EACX,WAAW,OAAO;EAClB,gBAAgB,OAAO;EACvB,aAAa,OAAO;EACpB;EACA;CACF;AACF;AACA,SAAS,qBAAqB,UAAU;CACtC,IAAI,OAAO,aAAa,YAAY;EAClC,MAAM,IAAI,MAAM,yDAAyD;CAC3E;AACF"}