From 8206d4fd3ce017e0019543a29b1153d8e351ab0d Mon Sep 17 00:00:00 2001
From: amesgen <amesgen@amesgen.de>
Date: Sat, 11 Jan 2025 16:59:39 +0100
Subject: [PATCH] wasm: prevent bundlers from resolving import("node:timers")
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This fixes the following esbuild error:

    ✘ [ERROR] Could not resolve "node:timers"

        www/ghc_wasm_jsffi.js:66:25:
          66 │     return (await import("node:timers")).setImmediate;
             ╵                          ~~~~~~~~~~~~~

      The package "node:timers" wasn't found on the file system but is built into node. Are you trying
      to bundle for node? You can use "--platform=node" to do that, which will remove this error.

Previously (i.e. after !13503), one had to work around this by passing
`--external:node:timers`.

(cherry picked from commit f6493dbccc7bf95dcdf946b978e262f739e3e15a)
---
 utils/jsffi/prelude.mjs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/utils/jsffi/prelude.mjs b/utils/jsffi/prelude.mjs
index fb27f612992..f502f2040bd 100644
--- a/utils/jsffi/prelude.mjs
+++ b/utils/jsffi/prelude.mjs
@@ -63,7 +63,9 @@ const setImmediate = await (async () => {
 
   // deno
   if (globalThis.Deno) {
-    return (await import("node:timers")).setImmediate;
+    try {
+      return (await import("node:timers")).setImmediate;
+    } catch {}
   }
 
   // https://developer.mozilla.org/en-US/docs/Web/API/Scheduler/postTask
-- 
GitLab