@@ -9,10 +9,8 @@ var Type = protobuf.Type,
9
9
Service = protobuf . Service ,
10
10
Enum = protobuf . Enum ,
11
11
Namespace = protobuf . Namespace ,
12
- encoder = protobuf . encoder ,
13
- decoder = protobuf . decoder ,
14
- verifier = protobuf . verifier ,
15
- util = protobuf . util ;
12
+ util = protobuf . util ,
13
+ codegen = protobuf . codegen ;
16
14
17
15
var out = [ ] ;
18
16
var indent = 0 ;
@@ -168,12 +166,61 @@ function buildType(ref, type) {
168
166
push ( "}" ) ;
169
167
-- indent ;
170
168
push ( "}" ) ;
171
- push ( "" ) ;
169
+
170
+ // default values
172
171
type . fieldsArray . forEach ( function ( field ) {
173
172
field . resolve ( ) ;
174
- if ( typeof field . defaultValue === 'object' && field . defaultValue )
175
- return ;
176
- push ( name ( type . name ) + ".prototype." + name ( field . name ) + " = " + JSON . stringify ( field . defaultValue ) + ";" ) ;
173
+ var jsType ;
174
+ switch ( field . type ) {
175
+ case "double" :
176
+ case "float" :
177
+ case "int32" :
178
+ case "uint32" :
179
+ case "sint32" :
180
+ case "fixed32" :
181
+ case "sfixed32" :
182
+ jsType = "number" ;
183
+ break ;
184
+ case "int64" :
185
+ case "uint64" :
186
+ case "sint64" :
187
+ case "fixed64" :
188
+ case "sfixed64" :
189
+ jsType = "number|Long" ;
190
+ break ;
191
+ case "bool" :
192
+ jsType = "boolean" ;
193
+ break ;
194
+ case "string" :
195
+ jsType = "string" ;
196
+ break ;
197
+ case "bytes" :
198
+ jsType = "Uint8Array" ;
199
+ break ;
200
+ default :
201
+ if ( field . resolvedType instanceof Enum ) {
202
+ jsType = "number" ;
203
+ } else if ( field . resolvedType instanceof Type ) {
204
+ jsType = field . resolvedType . fullName . substring ( 1 ) ;
205
+ } else {
206
+ jsType = "*" ; // should not happen
207
+ }
208
+ break ;
209
+ }
210
+ if ( field . repeated )
211
+ jsType = "Array.<" + jsType + ">" ;
212
+ push ( "" ) ;
213
+ pushComment ( [
214
+ field . name + "." ,
215
+ "@name " + fullName + "#" + name ( field . name ) ,
216
+ "@type {" + jsType + "}"
217
+ ] ) ;
218
+ if ( Array . isArray ( field . defaultValue ) ) {
219
+ push ( name ( type . name ) + ".prototype[" + JSON . stringify ( field . name ) + "] = $protobuf.util.emptyArray;" ) ;
220
+ } else if ( util . isObject ( field . defaultValue ) )
221
+ push ( name ( type . name ) + ".prototype[" + JSON . stringify ( field . name ) + "] = $protobuf.util.emptyObject;" ) ;
222
+ else
223
+ push ( name ( type . name ) + ".prototype[" + JSON . stringify ( field . name ) + "] = " + JSON . stringify ( field . defaultValue ) + ";" ) ;
177
224
} ) ;
178
225
179
226
// #encode
@@ -185,9 +232,9 @@ function buildType(ref, type) {
185
232
"@param {Writer} [writer] Writer to encode to" ,
186
233
"@returns {Writer} Writer"
187
234
] ) ;
188
- buildFunction ( type , "encode" , encoder . generate ( type ) , {
189
- Writer : "$runtime .Writer" ,
190
- util : "$runtime .util"
235
+ buildFunction ( type , "encode" , codegen . encode . generate ( type ) , {
236
+ Writer : "$protobuf .Writer" ,
237
+ util : "$protobuf .util"
191
238
} ) ;
192
239
193
240
// #encodeDelimited
@@ -213,9 +260,9 @@ function buildType(ref, type) {
213
260
"@param {number} [length] Message length if known beforehand" ,
214
261
"@returns {" + fullName + "} " + type . name
215
262
] ) ;
216
- buildFunction ( type , "decode" , decoder . generate ( type ) , {
217
- Reader : "$runtime .Reader" ,
218
- util : "$runtime .util"
263
+ buildFunction ( type , "decode" , codegen . decode . generate ( type ) , {
264
+ Reader : "$protobuf .Reader" ,
265
+ util : "$protobuf .util"
219
266
} ) ;
220
267
221
268
// #decodeDelimited
@@ -239,7 +286,7 @@ function buildType(ref, type) {
239
286
"@param {" + fullName + "|Object} message " + type . name + " or plain object to verify" ,
240
287
"@returns {?string} `null` if valid, otherwise the reason why it is not"
241
288
] ) ;
242
- buildFunction ( type , "verify" , verifier . generate ( type ) , { } ) ;
289
+ buildFunction ( type , "verify" , codegen . verify . generate ( type ) , { } ) ;
243
290
}
244
291
245
292
function buildService ( ref , service ) {
0 commit comments