33 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C++
		
	
	
	
	
	
// 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<v8::Value> CompileAndCall(
 | 
						|
    v8::Local<v8::Context> context,
 | 
						|
    const char* id,
 | 
						|
    std::vector<v8::Local<v8::String>>* parameters,
 | 
						|
    std::vector<v8::Local<v8::Value>>* arguments,
 | 
						|
    node::Environment* optional_env) {
 | 
						|
  v8::Isolate* isolate = context->GetIsolate();
 | 
						|
  v8::MaybeLocal<v8::Function> compiled =
 | 
						|
      node::native_module::NativeModuleEnv::LookupAndCompile(
 | 
						|
          context, id, parameters, optional_env);
 | 
						|
  if (compiled.IsEmpty()) {
 | 
						|
    return v8::MaybeLocal<v8::Value>();
 | 
						|
  }
 | 
						|
  v8::Local<v8::Function> fn = compiled.ToLocalChecked().As<v8::Function>();
 | 
						|
  return fn->Call(context, v8::Null(isolate), arguments->size(),
 | 
						|
                  arguments->data());
 | 
						|
}
 | 
						|
 | 
						|
}  // namespace util
 | 
						|
 | 
						|
}  // namespace electron
 |