@@ -36,10 +36,11 @@ function static_target(root, options, callback) {
3636 push ( "" ) ;
3737 }
3838 if ( config . comments ) {
39- if ( root . comment )
39+ if ( root . comment ) {
4040 pushComment ( "@fileoverview " + root . comment ) ;
41- else
42- push ( "// Exported root namespace" ) ;
41+ push ( "" ) ;
42+ }
43+ push ( "// Exported root namespace" ) ;
4344 }
4445 var rootProp = cliUtil . safeProp ( config . root || "default" ) ;
4546 push ( ( config . es6 ? "const" : "var" ) + " $root = $protobuf.roots" + rootProp + " || ($protobuf.roots" + rootProp + " = {});" ) ;
@@ -80,13 +81,18 @@ function pushComment(lines) {
8081}
8182
8283function exportName ( object , asInterface ) {
84+ if ( asInterface ) {
85+ if ( object . __interfaceName )
86+ return object . __interfaceName ;
87+ } else if ( object . __exportName )
88+ return object . __exportName ;
8389 var parts = object . fullName . substring ( 1 ) . split ( "." ) ,
8490 i = 0 ;
8591 while ( i < parts . length )
8692 parts [ i ] = escapeName ( parts [ i ++ ] ) ;
8793 if ( asInterface )
8894 parts [ i - 1 ] = "I" + parts [ i - 1 ] ;
89- return parts . join ( "." ) ;
95+ return object [ asInterface ? "__interfaceName" : "__exportName" ] = parts . join ( "." ) ;
9096}
9197
9298function escapeName ( name ) {
@@ -121,7 +127,7 @@ function buildNamespace(ref, ns) {
121127 push ( "" ) ;
122128 pushComment ( [
123129 ns . comment || "Namespace " + ns . name + "." ,
124- "@exports " + exportName ( ns ) ,
130+ ns . parent instanceof protobuf . Root ? "@exports " + escapeName ( ns . name ) : "@memberof " + exportName ( ns . parent ) ,
125131 "@namespace"
126132 ] ) ;
127133 push ( ( config . es6 ? "const" : "var" ) + " " + escapeName ( ns . name ) + " = {};" ) ;
@@ -352,12 +358,13 @@ function buildType(ref, type) {
352358 if ( config . comments ) {
353359 var typeDef = [
354360 "Properties of " + aOrAn ( type . name ) + "." ,
355- "@interface " + exportName ( type , true )
361+ type . parent instanceof protobuf . Root ? "@exports " + escapeName ( "I" + type . name ) : "@memberof " + exportName ( type . parent ) ,
362+ "@interface " + escapeName ( "I" + type . name )
356363 ] ;
357364 type . fieldsArray . forEach ( function ( field ) {
358365 var prop = util . safeProp ( field . name ) ;
359366 prop = prop . substring ( 1 , prop . charAt ( 0 ) === "[" ? prop . length - 1 : prop . length ) ;
360- typeDef . push ( "@property {" + toJsType ( field ) + "} " + ( field . optional ? "[" + prop + "]" : field . name ) + " " + ( field . comment || type . name + " " + field . name + "." ) ) ;
367+ typeDef . push ( "@property {" + toJsType ( field ) + "} " + ( field . optional ? "[" + prop + "]" : field . name ) + " " + ( field . comment || type . name + " " + field . name ) ) ;
361368 } ) ;
362369 push ( "" ) ;
363370 pushComment ( typeDef ) ;
@@ -367,8 +374,8 @@ function buildType(ref, type) {
367374 push ( "" ) ;
368375 pushComment ( [
369376 "Constructs a new " + type . name + "." ,
370- "@exports " + exportName ( type ) ,
371- "@classdesc " + ( type . comment || "Represents " + aOrAn ( type . name ) ) ,
377+ type . parent instanceof protobuf . Root ? "@exports " + escapeName ( type . name ) : "@memberof " + exportName ( type . parent ) ,
378+ "@classdesc " + ( type . comment || "Represents " + aOrAn ( type . name ) + "." ) ,
372379 "@constructor" ,
373380 "@param {" + exportName ( type , true ) + "=} [" + ( config . beautify ? "properties" : "p" ) + "] Properties to set"
374381 ] ) ;
@@ -552,7 +559,7 @@ function buildService(ref, service) {
552559 push ( "" ) ;
553560 pushComment ( [
554561 "Constructs a new " + service . name + " service." ,
555- "@exports " + exportName ( service ) ,
562+ service . parent instanceof protobuf . Root ? "@exports " + escapeName ( service . name ) : "@memberof " + exportName ( service . parent ) ,
556563 "@classdesc " + ( service . comment || "Represents " + aOrAn ( service . name ) ) ,
557564 "@extends $protobuf.rpc.Service" ,
558565 "@constructor" ,
@@ -586,12 +593,13 @@ function buildService(ref, service) {
586593
587594 service . methodsArray . forEach ( function ( method ) {
588595 method . resolve ( ) ;
589- var lcName = method . name . substring ( 0 , 1 ) . toLowerCase ( ) + method . name . substring ( 1 ) ;
596+ var lcName = protobuf . util . lcFirst ( method . name ) ,
597+ cbName = escapeName ( method . name + "Callback" ) ;
590598 push ( "" ) ;
591- var cbName = escapeName ( service . name ) + "_" + escapeName ( lcName ) + "_Callback" ;
592599 pushComment ( [
593- "Callback as used by {@link " + escapeName ( service . name ) + "#" + escapeName ( lcName ) + "}." ,
600+ "Callback as used by {@link " + exportName ( service ) + "#" + escapeName ( lcName ) + "}." ,
594601 // This is a more specialized version of protobuf.rpc.ServiceCallback
602+ "@memberof " + exportName ( service ) ,
595603 "@typedef " + cbName ,
596604 "@type {function}" ,
597605 "@param {Error|null} error Error, if any" ,
@@ -601,7 +609,7 @@ function buildService(ref, service) {
601609 pushComment ( [
602610 method . comment || "Calls " + method . name + "." ,
603611 "@param {" + exportName ( method . resolvedRequestType , ! config . forceMessage ) + "} request " + method . resolvedRequestType . name + " message or plain object" ,
604- "@param {" + cbName + "} callback Node-style callback called with the error, if any, and " + method . resolvedResponseType . name ,
612+ "@param {" + exportName ( service ) + "." + cbName + "} callback Node-style callback called with the error, if any, and " + method . resolvedResponseType . name ,
605613 "@returns {undefined}"
606614 ] ) ;
607615 push ( escapeName ( service . name ) + ".prototype" + util . safeProp ( lcName ) + " = function " + escapeName ( lcName ) + "(request, callback) {" ) ;
@@ -613,7 +621,8 @@ function buildService(ref, service) {
613621 push ( "" ) ;
614622 pushComment ( [
615623 method . comment || "Calls " + method . name + "." ,
616- "@function " + escapeName ( service . name ) + "#" + lcName ,
624+ "@memberof " + exportName ( service ) + ".prototype" ,
625+ "@function " + lcName ,
617626 "@param {" + exportName ( method . resolvedRequestType , ! config . forceMessage ) + "} request " + method . resolvedRequestType . name + " message or plain object" ,
618627 "@returns {Promise<" + exportName ( method . resolvedResponseType ) + ">} Promise" ,
619628 "@variation 2"
0 commit comments