{"version":3,"file":"base64.cjs","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":";;;AAAA,2CAAgD;AAEhD,uCAAmC;AAGnC;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAAC,KAAwC;IACzE,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,aAAa,GACjB,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,OAAO,KAAK,aAAa,CAAC;IAC1E,+GAA+G;IAC/G,IAAI,YAAY,IAAI,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;QACjD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE,EAAE;gBAC7C,MAAM,EAAE,GAAG,EAAE,CACX,OAAO,CACJ,MAAM,CAAC,MAAiB,CAAC,OAAO,CAC/B,uCAAuC,EACvC,EAAE,CACH,CACF;gBACH,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,CAAC,aAAa,CAClB,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAC5D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAvBD,oCAuBC;AAED;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,wCAAwC,MAAM,EAAE,CACjD,CAAC;IACF,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AACtD,CAAC;AALD,oCAKC","sourcesContent":["import { bytesToBase64 } from '@metamask/utils';\n\nimport { getBytes } from './bytes';\nimport type { VirtualFile } from './virtual-file';\n\n/**\n * Provides fast, asynchronous base64 encoding.\n *\n * @param input - The input value, assumed to be coercible to bytes.\n * @returns A base64 string.\n */\nexport async function encodeBase64(input: Uint8Array | VirtualFile | string) {\n  const bytes = getBytes(input);\n  const isReactNative =\n    typeof navigator !== 'undefined' && navigator.product === 'ReactNative';\n  // In the browser, FileReader is much faster than bytesToBase64. This is not supported in React Native however.\n  if ('FileReader' in globalThis && !isReactNative) {\n    return await new Promise((resolve, reject) => {\n      const reader = Object.assign(new FileReader(), {\n        onload: () =>\n          resolve(\n            (reader.result as string).replace(\n              'data:application/octet-stream;base64,',\n              '',\n            ),\n          ),\n        onerror: () => reject(reader.error),\n      });\n      reader.readAsDataURL(\n        new File([bytes], '', { type: 'application/octet-stream' }),\n      );\n    });\n  }\n  return bytesToBase64(bytes);\n}\n\n/**\n * Provides fast, asynchronous base64 decoding.\n *\n * @param base64 - A base64 string.\n * @returns A Uint8Array of bytes.\n */\nexport async function decodeBase64(base64: string) {\n  const response = await fetch(\n    `data:application/octet-stream;base64,${base64}`,\n  );\n  return new Uint8Array(await response.arrayBuffer());\n}\n"]}