From 596564b511ae91c7c9035aa121a9a14fade26206 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Sun, 27 Feb 2022 21:15:34 +0100 Subject: [PATCH] Let getCryptoModule detect fallback modules --- packages/crypto/src/pbkdf2.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/crypto/src/pbkdf2.ts b/packages/crypto/src/pbkdf2.ts index 70dca985..93fe949b 100644 --- a/packages/crypto/src/pbkdf2.ts +++ b/packages/crypto/src/pbkdf2.ts @@ -1,8 +1,20 @@ import { assert } from "@cosmjs/utils"; +/** + * Returns the Node.js crypto module when available and `undefined` + * otherwise. + * + * Detects an unimplemented fallback module from Webpack 5 and returns + * `undefined` in that case. + */ export async function getCryptoModule(): Promise { try { const crypto = await import("crypto"); + // We get `Object{default: Object{}}` as a fallback when using + // `crypto: false` in Webpack 5, which we interprete as unavailable. + if (typeof crypto === "object" && Object.keys(crypto).length <= 1) { + return undefined; + } return crypto; } catch { return undefined;