@@ -178,11 +178,17 @@ void PrintMethod(const MethodDescriptor* method, Printer* out) {
178178}
179179
180180// Prints out the service descriptor object
181- void PrintService (const ServiceDescriptor* service, Printer* out) {
181+ void PrintService (const ServiceDescriptor* service, Printer* out,
182+ const Parameters& params) {
182183 map<grpc::string, grpc::string> template_vars;
183184 out->Print (GetNodeComments (service, true ).c_str ());
184185 template_vars[" name" ] = service->name ();
185- out->Print (template_vars, " var $name$Service = exports.$name$Service = {\n " );
186+ template_vars[" full_name" ] = service->full_name ();
187+ if (params.generate_package_definition ) {
188+ out->Print (template_vars, " var $name$Service = exports['$full_name$'] = {\n " );
189+ } else {
190+ out->Print (template_vars, " var $name$Service = exports.$name$Service = {\n " );
191+ }
186192 out->Indent ();
187193 for (int i = 0 ; i < service->method_count (); i++) {
188194 grpc::string method_name =
@@ -195,14 +201,19 @@ void PrintService(const ServiceDescriptor* service, Printer* out) {
195201 }
196202 out->Outdent ();
197203 out->Print (" };\n\n " );
198- out->Print (template_vars,
199- " exports.$name$Client = "
200- " grpc.makeGenericClientConstructor($name$Service);\n " );
204+ if (!params.generate_package_definition ) {
205+ out->Print (template_vars,
206+ " exports.$name$Client = "
207+ " grpc.makeGenericClientConstructor($name$Service);\n " );
208+ }
201209 out->Print (GetNodeComments (service, false ).c_str ());
202210}
203211
204- void PrintImports (const FileDescriptor* file, Printer* out) {
205- out->Print (" var grpc = require('grpc');\n " );
212+ void PrintImports (const FileDescriptor* file, Printer* out,
213+ const Parameters& params) {
214+ if (!params.generate_package_definition ) {
215+ out->Print (" var grpc = require('grpc');\n " );
216+ }
206217 if (file->message_type_count () > 0 ) {
207218 grpc::string file_path =
208219 GetRelativePath (file->name (), GetJSMessageFilename (file->name ()));
@@ -230,14 +241,16 @@ void PrintTransformers(const FileDescriptor* file, Printer* out) {
230241 out->Print (" \n " );
231242}
232243
233- void PrintServices (const FileDescriptor* file, Printer* out) {
244+ void PrintServices (const FileDescriptor* file, Printer* out,
245+ const Parameters& params) {
234246 for (int i = 0 ; i < file->service_count (); i++) {
235- PrintService (file->service (i), out);
247+ PrintService (file->service (i), out, params );
236248 }
237249}
238250} // namespace
239251
240- grpc::string GenerateFile (const FileDescriptor* file) {
252+ grpc::string GenerateFile (const FileDescriptor* file,
253+ const Parameters& params) {
241254 grpc::string output;
242255 {
243256 StringOutputStream output_stream (&output);
@@ -257,11 +270,11 @@ grpc::string GenerateFile(const FileDescriptor* file) {
257270
258271 out.Print (" 'use strict';\n " );
259272
260- PrintImports (file, &out);
273+ PrintImports (file, &out, params );
261274
262275 PrintTransformers (file, &out);
263276
264- PrintServices (file, &out);
277+ PrintServices (file, &out, params );
265278
266279 out.Print (GetNodeComments (file, false ).c_str ());
267280 }
0 commit comments