From 2f394b8cc40d8cbb1f88c81fe28095d2bee9bdcb Mon Sep 17 00:00:00 2001 From: Elliott Johnson Date: Thu, 11 Dec 2025 18:20:21 -0700 Subject: [PATCH] eightieth times the charm --- packages/svelte/src/internal/server/crypto.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/svelte/src/internal/server/crypto.js b/packages/svelte/src/internal/server/crypto.js index 7fcdeb5039..fa382eefe5 100644 --- a/packages/svelte/src/internal/server/crypto.js +++ b/packages/svelte/src/internal/server/crypto.js @@ -2,15 +2,16 @@ import { BROWSER } from 'esm-env'; let text_encoder; // TODO - remove this and use global `crypto` when we drop Node 18 -/** @type {Crypto} */ -// @ts-ignore - annoying type node stuff -let crypto = globalThis.crypto?.subtle?.digest ? globalThis.crypto : undefined; +let crypto; /** @param {string} data */ export async function sha256(data) { text_encoder ??= new TextEncoder(); - // @ts-ignore - we don't install node types in the prod build - crypto ??= (await import('node:crypto')).webcrypto; + // @ts-ignore + crypto ??= globalThis.crypto?.subtle?.digest + ? globalThis.crypto + : // @ts-ignore - we don't install node types in the prod build + (await import('node:crypto')).webcrypto; const hash_buffer = await crypto.subtle.digest('SHA-256', text_encoder.encode(data)); // @ts-ignore - we don't install node types in the prod build return base64_encode(hash_buffer);