Lines Matching +full:out +full:- +full:file
6 * you may not use this file except in compliance with the License.
9 * http://www.apache.org/licenses/LICENSE-2.0
42 // This scheme could technically cause problems if a file includes any 2 of: in ModuleAlias()
50 basename = grpc_generator::StringReplace(basename, "-", "$"); in ModuleAlias()
57 // message file foo/bar/baz.js
68 // Well-known types (.proto files in the google/protobuf directory) are in GetRootPath()
69 // assumed to come from the 'google-protobuf' npm package. We may want to in GetRootPath()
72 return "google-protobuf/"; in GetRootPath()
92 /* Finds all message types used in all services in the file, and returns them
94 map<std::string, const Descriptor*> GetAllMessages(const FileDescriptor* file) { in GetAllMessages() argument
96 for (int service_num = 0; service_num < file->service_count(); in GetAllMessages()
98 const ServiceDescriptor* service = file->service(service_num); in GetAllMessages()
99 for (int method_num = 0; method_num < service->method_count(); in GetAllMessages()
101 const MethodDescriptor* method = service->method(method_num); in GetAllMessages()
102 const Descriptor* input_type = method->input_type(); in GetAllMessages()
103 const Descriptor* output_type = method->output_type(); in GetAllMessages()
104 message_types[input_type->full_name()] = input_type; in GetAllMessages()
105 message_types[output_type->full_name()] = output_type; in GetAllMessages()
116 std::string module_alias = ModuleAlias(descriptor->file()->name()); in NodeObjectPath()
117 std::string name = descriptor->full_name(); in NodeObjectPath()
118 grpc_generator::StripPrefix(&name, descriptor->file()->package() + "."); in NodeObjectPath()
122 // Prints out the message serializer and deserializer functions
123 void PrintMessageTransformer(const Descriptor* descriptor, Printer* out, in PrintMessageTransformer() argument
126 std::string full_name = descriptor->full_name(); in PrintMessageTransformer()
131 out->Print(template_vars, "function serialize_$identifier_name$(arg) {\n"); in PrintMessageTransformer()
132 out->Indent(); in PrintMessageTransformer()
133 out->Print(template_vars, "if (!(arg instanceof $node_name$)) {\n"); in PrintMessageTransformer()
134 out->Indent(); in PrintMessageTransformer()
135 out->Print(template_vars, in PrintMessageTransformer()
137 out->Outdent(); in PrintMessageTransformer()
138 out->Print("}\n"); in PrintMessageTransformer()
141 out->Print("return Buffer.from(arg.serializeBinary());\n"); in PrintMessageTransformer()
143 out->Print("return new Buffer(arg.serializeBinary());\n"); in PrintMessageTransformer()
145 out->Outdent(); in PrintMessageTransformer()
146 out->Print("}\n\n"); in PrintMessageTransformer()
149 out->Print(template_vars, in PrintMessageTransformer()
151 out->Indent(); in PrintMessageTransformer()
152 out->Print( in PrintMessageTransformer()
155 out->Outdent(); in PrintMessageTransformer()
156 out->Print("}\n\n"); in PrintMessageTransformer()
159 void PrintMethod(const MethodDescriptor* method, Printer* out) { in PrintMethod() argument
160 const Descriptor* input_type = method->input_type(); in PrintMethod()
161 const Descriptor* output_type = method->output_type(); in PrintMethod()
163 vars["service_name"] = method->service()->full_name(); in PrintMethod()
164 vars["name"] = method->name(); in PrintMethod()
166 vars["input_type_id"] = MessageIdentifierName(input_type->full_name()); in PrintMethod()
168 vars["output_type_id"] = MessageIdentifierName(output_type->full_name()); in PrintMethod()
169 vars["client_stream"] = method->client_streaming() ? "true" : "false"; in PrintMethod()
170 vars["server_stream"] = method->server_streaming() ? "true" : "false"; in PrintMethod()
171 out->Print("{\n"); in PrintMethod()
172 out->Indent(); in PrintMethod()
173 out->Print(vars, "path: '/$service_name$/$name$',\n"); in PrintMethod()
174 out->Print(vars, "requestStream: $client_stream$,\n"); in PrintMethod()
175 out->Print(vars, "responseStream: $server_stream$,\n"); in PrintMethod()
176 out->Print(vars, "requestType: $input_type$,\n"); in PrintMethod()
177 out->Print(vars, "responseType: $output_type$,\n"); in PrintMethod()
178 out->Print(vars, "requestSerialize: serialize_$input_type_id$,\n"); in PrintMethod()
179 out->Print(vars, "requestDeserialize: deserialize_$input_type_id$,\n"); in PrintMethod()
180 out->Print(vars, "responseSerialize: serialize_$output_type_id$,\n"); in PrintMethod()
181 out->Print(vars, "responseDeserialize: deserialize_$output_type_id$,\n"); in PrintMethod()
182 out->Outdent(); in PrintMethod()
183 out->Print("}"); in PrintMethod()
186 // Prints out the service descriptor object
187 void PrintService(const ServiceDescriptor* service, Printer* out) { in PrintService() argument
189 out->Print(GetNodeComments(service, true).c_str()); in PrintService()
190 template_vars["name"] = service->name(); in PrintService()
191 out->Print(template_vars, "var $name$Service = exports.$name$Service = {\n"); in PrintService()
192 out->Indent(); in PrintService()
193 for (int i = 0; i < service->method_count(); i++) { in PrintService()
195 grpc_generator::LowercaseFirstLetter(service->method(i)->name()); in PrintService()
196 out->Print(GetNodeComments(service->method(i), true).c_str()); in PrintService()
197 out->Print("$method_name$: ", "method_name", method_name); in PrintService()
198 PrintMethod(service->method(i), out); in PrintService()
199 out->Print(",\n"); in PrintService()
200 out->Print(GetNodeComments(service->method(i), false).c_str()); in PrintService()
202 out->Outdent(); in PrintService()
203 out->Print("};\n\n"); in PrintService()
204 out->Print(template_vars, in PrintService()
207 out->Print(GetNodeComments(service, false).c_str()); in PrintService()
210 void PrintImports(const FileDescriptor* file, Printer* out) { in PrintImports() argument
211 out->Print("var grpc = require('grpc');\n"); in PrintImports()
212 if (file->message_type_count() > 0) { in PrintImports()
214 GetRelativePath(file->name(), GetJSMessageFilename(file->name())); in PrintImports()
215 out->Print("var $module_alias$ = require('$file_path$');\n", "module_alias", in PrintImports()
216 ModuleAlias(file->name()), "file_path", file_path); in PrintImports()
219 for (int i = 0; i < file->dependency_count(); i++) { in PrintImports()
221 file->name(), GetJSMessageFilename(file->dependency(i)->name())); in PrintImports()
222 out->Print("var $module_alias$ = require('$file_path$');\n", "module_alias", in PrintImports()
223 ModuleAlias(file->dependency(i)->name()), "file_path", in PrintImports()
226 out->Print("\n"); in PrintImports()
229 void PrintTransformers(const FileDescriptor* file, Printer* out, in PrintTransformers() argument
231 map<std::string, const Descriptor*> messages = GetAllMessages(file); in PrintTransformers()
234 PrintMessageTransformer(it->second, out, params); in PrintTransformers()
236 out->Print("\n"); in PrintTransformers()
239 void PrintServices(const FileDescriptor* file, Printer* out) { in PrintServices() argument
240 for (int i = 0; i < file->service_count(); i++) { in PrintServices()
241 PrintService(file->service(i), out); in PrintServices()
246 std::string GenerateFile(const FileDescriptor* file, const Parameters& params) { in GenerateFile() argument
250 Printer out(&output_stream, '$'); in GenerateFile() local
252 if (file->service_count() == 0) { in GenerateFile()
255 out.Print("// GENERATED CODE -- DO NOT EDIT!\n\n"); in GenerateFile()
257 std::string leading_comments = GetNodeComments(file, true); in GenerateFile()
259 out.Print("// Original file comments:\n"); in GenerateFile()
260 out.PrintRaw(leading_comments.c_str()); in GenerateFile()
263 out.Print("'use strict';\n"); in GenerateFile()
265 PrintImports(file, &out); in GenerateFile()
267 PrintTransformers(file, &out, params); in GenerateFile()
269 PrintServices(file, &out); in GenerateFile()
271 out.Print(GetNodeComments(file, false).c_str()); in GenerateFile()