From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Thu, 13 Oct 2022 17:10:01 +0200
Subject: fix: expose LookupAndCompile with parameters

Node.js removed custom parameters from the public version of LookupAndCompile,
which we use in Electron. This patch re-exposes a wrapper to allow custom
parameters.

This should be upstreamed.

diff --git a/src/node_builtins.cc b/src/node_builtins.cc
index 2cac503e92640a4683a4be6969f1ed40e42785a0..f9a090f5c3e04403602ba383032e7f3230669a92 100644
--- a/src/node_builtins.cc
+++ b/src/node_builtins.cc
@@ -491,6 +491,18 @@ MaybeLocal<Value> BuiltinLoader::CompileAndCall(Local<Context> context,
   return fn->Call(context, undefined, argc, argv);
 }
 
+MaybeLocal<Function> BuiltinLoader::LookupAndCompile(
+    Local<Context> context,
+    const char* id,
+    std::vector<Local<String>>* parameters,
+    Realm* optional_realm) {
+  Isolate* isolate = context->GetIsolate();
+
+  MaybeLocal<Function> maybe = LookupAndCompileInternal(
+      context, id, parameters, optional_realm);
+  return maybe;
+}
+
 bool BuiltinLoader::CompileAllBuiltinsAndCopyCodeCache(
     Local<Context> context,
     const std::vector<std::string>& eager_builtins,
diff --git a/src/node_builtins.h b/src/node_builtins.h
index a1a9fe7d592f0d57b70dcee8c865b99d71248bf2..3279aac04fd20080db258eafa2826c2dda614b90 100644
--- a/src/node_builtins.h
+++ b/src/node_builtins.h
@@ -99,6 +99,12 @@ class NODE_EXTERN_PRIVATE BuiltinLoader {
                                                 const char* id,
                                                 Realm* optional_realm);
 
+  v8::MaybeLocal<v8::Function> LookupAndCompile(
+      v8::Local<v8::Context> context,
+      const char* id,
+      std::vector<v8::Local<v8::String>>* parameters,
+      Realm* optional_realm);
+
   v8::MaybeLocal<v8::Value> CompileAndCall(v8::Local<v8::Context> context,
                                            const char* id,
                                            int argc,
@@ -109,6 +115,7 @@ class NODE_EXTERN_PRIVATE BuiltinLoader {
                                            const char* id,
                                            Realm* realm);
 
+
   // Returns config.gypi as a JSON string
   v8::Local<v8::String> GetConfigString(v8::Isolate* isolate);
   bool Exists(const char* id);
