{"version":3,"sources":["../src/crypto.ts","../src/subtle-crypto.ts"],"names":["SolanaError"],"mappings":";;;AAMO,SAAS,qBAAA,GAAwB;AACpC,EAAA,IAAI,OAAO,WAAW,MAAA,KAAW,WAAA,IAAe,OAAO,UAAA,CAAW,MAAA,CAAO,oBAAoB,UAAA,EAAY;AACrG,IAAA,MAAM,IAAI,YAAY,0DAA0D,CAAA;AAAA,EACpF;AACJ;ACCA,SAAS,qBAAA,GAAwB;AAC7B,EAAA,IAAmB,CAAC,WAAW,eAAA,EAAiB;AAC5C,IAAA,MAAM,IAAIA,YAAY,2DAA2D,CAAA;AAAA,EACrF;AACJ;AAEA,IAAI,qBAAA;AACJ,eAAe,wBAAwB,MAAA,EAAwC;AAC3E,EAAA,IAAI,0BAA0B,MAAA,EAAW;AACrC,IAAA,qBAAA,GAAwB,IAAI,QAAQ,CAAA,OAAA,KAAW;AAC3C,MAAA,MAAA,CACK,WAAA;AAAA,QAAY,SAAA;AAAA;AAAA,QAA6B,KAAA;AAAA,QAAO,CAAC,QAAQ,QAAQ;AAAA,OAAC,CAClE,KAAK,MAAM;AACR,QAAA,OAAA,CAAS,wBAAwB,IAAK,CAAA;AAAA,MAC1C,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACT,QAAA,OAAA,CAAS,wBAAwB,KAAM,CAAA;AAAA,MAC3C,CAAC,CAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACL;AACA,EAAA,IAAI,OAAO,0BAA0B,SAAA,EAAW;AAC5C,IAAA,OAAO,qBAAA;AAAA,EACX,CAAA,MAAO;AACH,IAAA,OAAO,MAAM,qBAAA;AAAA,EACjB;AACJ;AAMO,SAAS,iCAAA,GAAoC;AAChD,EAAA,qBAAA,EAAsB;AACtB,EAAA,IAAI,OAAO,WAAW,MAAA,KAAW,WAAA,IAAe,OAAO,UAAA,CAAW,MAAA,CAAO,MAAA,EAAQ,MAAA,KAAW,UAAA,EAAY;AACpG,IAAA,MAAM,IAAIA,YAAY,iDAAiD,CAAA;AAAA,EAC3E;AACJ;AAMA,eAAsB,8BAAA,GAAiC;AACnD,EAAA,qBAAA,EAAsB;AACtB,EAAA,IAAI,OAAO,WAAW,MAAA,KAAW,WAAA,IAAe,OAAO,UAAA,CAAW,MAAA,CAAO,MAAA,EAAQ,WAAA,KAAgB,UAAA,EAAY;AACzG,IAAA,MAAM,IAAIA,YAAY,4DAA4D,CAAA;AAAA,EACtF;AACA,EAAA,IAAI,CAAE,MAAM,uBAAA,CAAwB,UAAA,CAAW,MAAA,CAAO,MAAM,CAAA,EAAI;AAC5D,IAAA,MAAM,IAAIA,YAAY,4DAA4D,CAAA;AAAA,EACtF;AACJ;AAMO,SAAS,4BAAA,GAA+B;AAC3C,EAAA,qBAAA,EAAsB;AACtB,EAAA,IAAI,OAAO,WAAW,MAAA,KAAW,WAAA,IAAe,OAAO,UAAA,CAAW,MAAA,CAAO,MAAA,EAAQ,SAAA,KAAc,UAAA,EAAY;AACvG,IAAA,MAAM,IAAIA,YAAY,0DAA0D,CAAA;AAAA,EACpF;AACJ;AAMO,SAAS,kCAAA,GAAqC;AACjD,EAAA,qBAAA,EAAsB;AACtB,EAAA,IAAI,OAAO,WAAW,MAAA,KAAW,WAAA,IAAe,OAAO,UAAA,CAAW,MAAA,CAAO,MAAA,EAAQ,IAAA,KAAS,UAAA,EAAY;AAClG,IAAA,MAAM,IAAIA,YAAY,wDAAwD,CAAA;AAAA,EAClF;AACJ;AAKO,SAAS,uCAAA,GAA0C;AACtD,EAAA,qBAAA,EAAsB;AACtB,EAAA,IAAI,OAAO,WAAW,MAAA,KAAW,WAAA,IAAe,OAAO,UAAA,CAAW,MAAA,CAAO,MAAA,EAAQ,MAAA,KAAW,UAAA,EAAY;AACpG,IAAA,MAAM,IAAIA,YAAY,0DAA0D,CAAA;AAAA,EACpF;AACJ","file":"index.browser.mjs","sourcesContent":["import { SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED, SolanaError } from '@solana/errors';\n\n/**\n * Throws an exception unless {@link Crypto#getRandomValues | `crypto.getRandomValues()`} is\n * available in the current JavaScript environment.\n */\nexport function assertPRNGIsAvailable() {\n    if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.getRandomValues !== 'function') {\n        throw new SolanaError(SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED);\n    }\n}\n","import {\n    SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED,\n    SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT,\n    SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED,\n    SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED,\n    SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED,\n    SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED,\n    SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED,\n    SolanaError,\n} from '@solana/errors';\n\nfunction assertIsSecureContext() {\n    if (__BROWSER__ && !globalThis.isSecureContext) {\n        throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT);\n    }\n}\n\nlet cachedEd25519Decision: PromiseLike<boolean> | boolean | undefined;\nasync function isEd25519CurveSupported(subtle: SubtleCrypto): Promise<boolean> {\n    if (cachedEd25519Decision === undefined) {\n        cachedEd25519Decision = new Promise(resolve => {\n            subtle\n                .generateKey('Ed25519', /* extractable */ false, ['sign', 'verify'])\n                .then(() => {\n                    resolve((cachedEd25519Decision = true));\n                })\n                .catch(() => {\n                    resolve((cachedEd25519Decision = false));\n                });\n        });\n    }\n    if (typeof cachedEd25519Decision === 'boolean') {\n        return cachedEd25519Decision;\n    } else {\n        return await cachedEd25519Decision;\n    }\n}\n\n/**\n * Throws an exception unless {@link SubtleCrypto#digest | `crypto.subtle.digest()`} is available in\n * the current JavaScript environment.\n */\nexport function assertDigestCapabilityIsAvailable() {\n    assertIsSecureContext();\n    if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.digest !== 'function') {\n        throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED);\n    }\n}\n\n/**\n * Throws an exception unless {@link SubtleCrypto#generateKey | `crypto.subtle.generateKey()`} is\n * available in the current JavaScript environment and has support for the Ed25519 curve.\n */\nexport async function assertKeyGenerationIsAvailable() {\n    assertIsSecureContext();\n    if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.generateKey !== 'function') {\n        throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED);\n    }\n    if (!(await isEd25519CurveSupported(globalThis.crypto.subtle))) {\n        throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED);\n    }\n}\n\n/**\n * Throws an exception unless {@link SubtleCrypto#exportKey | `crypto.subtle.exportKey()`} is\n * available in the current JavaScript environment.\n */\nexport function assertKeyExporterIsAvailable() {\n    assertIsSecureContext();\n    if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.exportKey !== 'function') {\n        throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED);\n    }\n}\n\n/**\n * Throws an exception unless {@link SubtleCrypto#sign | `crypto.subtle.sign()`} is available in the\n * current JavaScript environment.\n */\nexport function assertSigningCapabilityIsAvailable() {\n    assertIsSecureContext();\n    if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.sign !== 'function') {\n        throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED);\n    }\n}\n/**\n * Throws an exception unless {@link SubtleCrypto#verify | `crypto.subtle.verify()`} is available in\n * the current JavaScript environment.\n */\nexport function assertVerificationCapabilityIsAvailable() {\n    assertIsSecureContext();\n    if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.verify !== 'function') {\n        throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED);\n    }\n}\n"]}