{"version":3,"sources":["../src/compress.ts"],"sourcesContent":["/** Compress arbitrary data using gzip. */\nexport async function compressData<T>(data: T): Promise<Uint8Array> {\n  // Compressing undefined requires adding special logic, but since it is more\n  // likely a bug than a feature to try to compress undefineds, just throw an\n  // error to err on the safe side.\n  if (data === undefined) {\n    throw new Error(`Cannot compress undefined`);\n  }\n\n  const stream = new Blob([JSON.stringify(data)])\n    .stream()\n    .pipeThrough(new CompressionStream(\"gzip\"));\n\n  return new Uint8Array(await new Response(stream).arrayBuffer());\n}\n\n/** Decompress to data, with optional typechecking. */\nexport async function decompressData<T>(\n  compressed: Uint8Array<ArrayBuffer>,\n  isValid?: (data: T) => boolean,\n): Promise<T> {\n  const stream = new Blob([compressed])\n    .stream()\n    .pipeThrough(new DecompressionStream(\"gzip\"));\n\n  const data = JSON.parse(await new Response(stream).text()) as T;\n\n  if (isValid) {\n    if (!isValid(data)) {\n      throw new Error(`Data is invalid: ${JSON.stringify(data)}`);\n    }\n  }\n\n  return data;\n}\n"],"mappings":"AACA,eAAsBA,EAAgBC,EAA8B,CAIlE,GAAIA,IAAS,OACX,MAAM,IAAI,MAAM,2BAA2B,EAG7C,IAAMC,EAAS,IAAI,KAAK,CAAC,KAAK,UAAUD,CAAI,CAAC,CAAC,EAC3C,OAAO,EACP,YAAY,IAAI,kBAAkB,MAAM,CAAC,EAE5C,OAAO,IAAI,WAAW,MAAM,IAAI,SAASC,CAAM,EAAE,YAAY,CAAC,CAChE,CAGA,eAAsBC,EACpBC,EACAC,EACY,CACZ,IAAMH,EAAS,IAAI,KAAK,CAACE,CAAU,CAAC,EACjC,OAAO,EACP,YAAY,IAAI,oBAAoB,MAAM,CAAC,EAExCH,EAAO,KAAK,MAAM,MAAM,IAAI,SAASC,CAAM,EAAE,KAAK,CAAC,EAEzD,GAAIG,GACE,CAACA,EAAQJ,CAAI,EACf,MAAM,IAAI,MAAM,oBAAoB,KAAK,UAAUA,CAAI,CAAC,EAAE,EAI9D,OAAOA,CACT","names":["compressData","data","stream","decompressData","compressed","isValid"]}