// Copyright (c) 2019 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #include "shell/common/node_util.h" #include "shell/common/node_includes.h" #include "third_party/electron_node/src/node_native_module_env.h" namespace electron { namespace util { v8::MaybeLocal CompileAndCall( v8::Local context, const char* id, std::vector>* parameters, std::vector>* arguments, node::Environment* optional_env) { v8::Isolate* isolate = context->GetIsolate(); v8::MaybeLocal compiled = node::native_module::NativeModuleEnv::LookupAndCompile( context, id, parameters, optional_env); if (compiled.IsEmpty()) { return v8::MaybeLocal(); } v8::Local fn = compiled.ToLocalChecked().As(); return fn->Call(context, v8::Null(isolate), arguments->size(), arguments->data()); } } // namespace util } // namespace electron