|  | @@ -20,6 +20,7 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include "src/compiler/config.h"
 | 
	
		
			
				|  |  |  #include "src/compiler/generator_helpers.h"
 | 
	
		
			
				|  |  | +#include "src/compiler/node_generator.h"
 | 
	
		
			
				|  |  |  #include "src/compiler/node_generator_helpers.h"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  using grpc::protobuf::Descriptor;
 | 
	
	
		
			
				|  | @@ -119,7 +120,8 @@ grpc::string NodeObjectPath(const Descriptor* descriptor) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Prints out the message serializer and deserializer functions
 | 
	
		
			
				|  |  | -void PrintMessageTransformer(const Descriptor* descriptor, Printer* out) {
 | 
	
		
			
				|  |  | +void PrintMessageTransformer(const Descriptor* descriptor, Printer* out,
 | 
	
		
			
				|  |  | +                             const Parameters& params) {
 | 
	
		
			
				|  |  |    map<grpc::string, grpc::string> template_vars;
 | 
	
		
			
				|  |  |    grpc::string full_name = descriptor->full_name();
 | 
	
		
			
				|  |  |    template_vars["identifier_name"] = MessageIdentifierName(full_name);
 | 
	
	
		
			
				|  | @@ -134,7 +136,12 @@ void PrintMessageTransformer(const Descriptor* descriptor, Printer* out) {
 | 
	
		
			
				|  |  |               "throw new Error('Expected argument of type $name$');\n");
 | 
	
		
			
				|  |  |    out->Outdent();
 | 
	
		
			
				|  |  |    out->Print("}\n");
 | 
	
		
			
				|  |  | -  out->Print("return new Buffer(arg.serializeBinary());\n");
 | 
	
		
			
				|  |  | +  if (params.minimum_node_version > 5) {
 | 
	
		
			
				|  |  | +    // Node version is > 5, we should use Buffer.from
 | 
	
		
			
				|  |  | +    out->Print("return Buffer.from(arg.serializeBinary());\n");
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    out->Print("return new Buffer(arg.serializeBinary());\n");
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    out->Outdent();
 | 
	
		
			
				|  |  |    out->Print("}\n\n");
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -219,12 +226,13 @@ void PrintImports(const FileDescriptor* file, Printer* out) {
 | 
	
		
			
				|  |  |    out->Print("\n");
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void PrintTransformers(const FileDescriptor* file, Printer* out) {
 | 
	
		
			
				|  |  | +void PrintTransformers(const FileDescriptor* file, Printer* out,
 | 
	
		
			
				|  |  | +                       const Parameters& params) {
 | 
	
		
			
				|  |  |    map<grpc::string, const Descriptor*> messages = GetAllMessages(file);
 | 
	
		
			
				|  |  |    for (std::map<grpc::string, const Descriptor*>::iterator it =
 | 
	
		
			
				|  |  |             messages.begin();
 | 
	
		
			
				|  |  |         it != messages.end(); it++) {
 | 
	
		
			
				|  |  | -    PrintMessageTransformer(it->second, out);
 | 
	
		
			
				|  |  | +    PrintMessageTransformer(it->second, out, params);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    out->Print("\n");
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -236,7 +244,8 @@ void PrintServices(const FileDescriptor* file, Printer* out) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  }  // namespace
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -grpc::string GenerateFile(const FileDescriptor* file) {
 | 
	
		
			
				|  |  | +grpc::string GenerateFile(const FileDescriptor* file,
 | 
	
		
			
				|  |  | +                          const Parameters& params) {
 | 
	
		
			
				|  |  |    grpc::string output;
 | 
	
		
			
				|  |  |    {
 | 
	
		
			
				|  |  |      StringOutputStream output_stream(&output);
 | 
	
	
		
			
				|  | @@ -257,7 +266,7 @@ grpc::string GenerateFile(const FileDescriptor* file) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      PrintImports(file, &out);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    PrintTransformers(file, &out);
 | 
	
		
			
				|  |  | +    PrintTransformers(file, &out, params);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      PrintServices(file, &out);
 | 
	
		
			
				|  |  |  
 |