protobufjs 8.6.1 → 8.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/LICENSE +39 -39
  2. package/README.md +441 -441
  3. package/dist/light/protobuf.js +8455 -8455
  4. package/dist/light/protobuf.js.map +1 -1
  5. package/dist/light/protobuf.min.js +3 -3
  6. package/dist/light/protobuf.min.js.map +1 -1
  7. package/dist/minimal/protobuf.js +2999 -2999
  8. package/dist/minimal/protobuf.js.map +1 -1
  9. package/dist/minimal/protobuf.min.js +3 -3
  10. package/dist/minimal/protobuf.min.js.map +1 -1
  11. package/dist/protobuf.js +10359 -10359
  12. package/dist/protobuf.js.map +1 -1
  13. package/dist/protobuf.min.js +3 -3
  14. package/dist/protobuf.min.js.map +1 -1
  15. package/ext/README.md +70 -70
  16. package/ext/debug/README.md +4 -4
  17. package/ext/debug/index.js +71 -71
  18. package/ext/descriptor/README.md +5 -5
  19. package/ext/descriptor/index.d.ts +2 -2
  20. package/ext/descriptor/index.js +2 -2
  21. package/ext/descriptor.d.ts +87 -87
  22. package/ext/descriptor.js +1354 -1354
  23. package/ext/protojson.LICENSE +201 -201
  24. package/ext/protojson.d.ts +20 -20
  25. package/ext/protojson.js +925 -925
  26. package/ext/textformat.d.ts +19 -19
  27. package/ext/textformat.js +1256 -1256
  28. package/google/LICENSE +27 -27
  29. package/google/README.md +1 -1
  30. package/google/api/annotations.json +82 -82
  31. package/google/api/annotations.proto +10 -10
  32. package/google/api/http.json +85 -85
  33. package/google/api/http.proto +30 -30
  34. package/google/protobuf/api.json +117 -117
  35. package/google/protobuf/api.proto +33 -33
  36. package/google/protobuf/compiler/plugin.json +126 -126
  37. package/google/protobuf/compiler/plugin.proto +47 -47
  38. package/google/protobuf/descriptor.json +1381 -1381
  39. package/google/protobuf/descriptor.proto +534 -534
  40. package/google/protobuf/source_context.json +19 -19
  41. package/google/protobuf/source_context.proto +7 -7
  42. package/google/protobuf/type.json +201 -201
  43. package/google/protobuf/type.proto +89 -89
  44. package/index.d.ts +1 -1
  45. package/index.js +4 -4
  46. package/light.d.ts +2 -2
  47. package/light.js +3 -3
  48. package/minimal.d.ts +2 -2
  49. package/minimal.js +4 -4
  50. package/package.json +93 -93
  51. package/src/common.js +399 -399
  52. package/src/converter.js +344 -344
  53. package/src/decoder.js +208 -208
  54. package/src/encoder.js +111 -111
  55. package/src/enum.js +231 -231
  56. package/src/field.js +497 -497
  57. package/src/index-light.js +104 -104
  58. package/src/index-minimal.js +36 -36
  59. package/src/index.js +12 -12
  60. package/src/mapfield.js +136 -136
  61. package/src/message.js +137 -137
  62. package/src/method.js +175 -175
  63. package/src/namespace.js +565 -565
  64. package/src/object.js +382 -382
  65. package/src/oneof.js +225 -225
  66. package/src/parse.js +1068 -1068
  67. package/src/reader.js +543 -543
  68. package/src/reader_buffer.js +72 -72
  69. package/src/root.js +416 -416
  70. package/src/roots.js +18 -18
  71. package/src/rpc/service.js +148 -148
  72. package/src/rpc.js +36 -36
  73. package/src/service.js +198 -198
  74. package/src/tokenize.js +421 -421
  75. package/src/type.js +655 -655
  76. package/src/types.js +196 -196
  77. package/src/typescript.js +25 -25
  78. package/src/util/aspromise.d.ts +13 -13
  79. package/src/util/aspromise.js +52 -52
  80. package/src/util/base64.d.ts +32 -32
  81. package/src/util/base64.js +146 -146
  82. package/src/util/codegen.d.ts +31 -31
  83. package/src/util/codegen.js +113 -113
  84. package/src/util/eventemitter.d.ts +45 -45
  85. package/src/util/eventemitter.js +86 -86
  86. package/src/util/fetch.d.ts +56 -56
  87. package/src/util/fetch.js +112 -112
  88. package/src/util/float.d.ts +83 -83
  89. package/src/util/float.js +335 -335
  90. package/src/util/fs.js +11 -11
  91. package/src/util/longbits.js +200 -200
  92. package/src/util/minimal.js +515 -515
  93. package/src/util/path.d.ts +22 -22
  94. package/src/util/path.js +72 -72
  95. package/src/util/patterns.js +7 -7
  96. package/src/util/pool.d.ts +32 -32
  97. package/src/util/pool.js +48 -48
  98. package/src/util/utf8.d.ts +24 -24
  99. package/src/util/utf8.js +130 -130
  100. package/src/util.js +242 -242
  101. package/src/verifier.js +180 -180
  102. package/src/wrappers.js +106 -106
  103. package/src/writer.js +495 -495
  104. package/src/writer_buffer.js +102 -102
  105. package/tsconfig.json +6 -6
package/src/decoder.js CHANGED
@@ -1,208 +1,208 @@
1
- "use strict";
2
- module.exports = decoder;
3
-
4
- var Enum = require("./enum"),
5
- types = require("./types"),
6
- util = require("./util");
7
-
8
- function missing(field) {
9
- return "missing required '" + field.name + "'";
10
- }
11
-
12
- /**
13
- * Generates a decoder specific to the specified message type.
14
- * @param {Type} mtype Message type
15
- * @returns {Codegen} Codegen instance
16
- */
17
- function decoder(mtype) {
18
- /* eslint-disable no-unexpected-multiline */
19
- var hasMapField = false,
20
- hasImplicitPresenceField = false,
21
- i = 0;
22
- for (; i < mtype.fieldsArray.length; ++i) {
23
- var pfield = mtype._fieldsArray[i];
24
- if (pfield.map)
25
- hasMapField = true;
26
- if (!pfield.repeated && !pfield.map && !pfield.hasPresence)
27
- hasImplicitPresenceField = true;
28
- }
29
- var gen = util.codegen(["r", "l", "z", "q", "g"])
30
- ("if(!(r instanceof Reader))")
31
- ("r=Reader.create(r)")
32
- ("if(q===undefined)q=0")
33
- ("if(q>Reader.recursionLimit)")
34
- ("throw Error(\"max depth exceeded\")")
35
- ("var c=l===undefined?r.len:r.pos+l,m=g||new C" + (hasMapField ? ",k,v" : hasImplicitPresenceField ? ",v" : ""))
36
- ("while(r.pos<c){")
37
- ("var s=r.pos")
38
- ("var t=r.tag()")
39
- ("if(t===z){")
40
- ("z=undefined")
41
- ("break")
42
- ("}");
43
- if (mtype.fieldsArray.length) gen
44
- ("var u=t&7")
45
- ("switch(t>>>=3){");
46
- for (i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {
47
- var field = mtype._fieldsArray[i].resolve(),
48
- type = field.resolvedType instanceof Enum ? "int32" : field.type,
49
- ref = "m" + util.safeProp(field.name);
50
-
51
- // Map fields
52
- if (field.map) {
53
- gen
54
- ("case %i:{", field.id)
55
- ("if(u!==2)")
56
- ("break")
57
- ("if(%s===util.emptyObject)", ref)
58
- ("%s={}", ref)
59
- ("var c2=r.uint32()+r.pos");
60
-
61
- if (types.defaults[field.keyType] !== undefined) gen
62
- ("k=%j", types.defaults[field.keyType]);
63
- else gen
64
- ("k=null");
65
-
66
- if (types.long[type] !== undefined) gen
67
- ("v=util.Long?util.Long.fromNumber(0,%j):0", type === "uint64" || type === "fixed64");
68
- else if (types.defaults[type] !== undefined) gen
69
- ("v=%j", types.defaults[type]);
70
- else gen
71
- ("v=null");
72
-
73
- gen
74
- ("while(r.pos<c2){")
75
- ("var t2=r.tag()")
76
- ("u=t2&7")
77
- ("switch(t2>>>=3){")
78
- ("case 1:")
79
- ("if(u!==%i)", types.mapKey[field.keyType])
80
- ("break")
81
- ("k=r.%s()", field.keyType)
82
- ("continue")
83
- ("case 2:")
84
- ("if(u!==%i)", types.basic[type] === undefined ? 2 : types.basic[type])
85
- ("break");
86
-
87
- if (types.basic[type] === undefined) gen
88
- ("v=types[%i].decode(r,r.uint32(),undefined,q+1)", i); // can't be groups
89
- else gen
90
- ("v=r.%s()", type);
91
-
92
- gen
93
- ("continue")
94
- ("}")
95
- ("r.skipType(u,q,t2)")
96
- ("}");
97
-
98
- var val = types.basic[type] === undefined ? "v||new types[" + i + "].ctor" : "v";
99
- if (types.long[field.keyType] !== undefined) gen
100
- ("%s[typeof k===\"object\"?util.longToHash(k):k]=%s", ref, val);
101
- else {
102
- if (field.keyType === "string") gen
103
- ("if(k===\"__proto__\")")
104
- ("util.makeProp(%s,k)", ref);
105
- gen
106
- ("%s[k]=%s", ref, val);
107
- }
108
-
109
- // Repeated fields
110
- } else if (field.repeated) { gen
111
- ("case %i:", field.id)
112
- ("{");
113
-
114
- // Packable (always check for forward and backward compatiblity)
115
- if (types.packed[type] !== undefined) gen
116
- ("if(u===2){")
117
- ("if(!(%s&&%s.length))", ref, ref)
118
- ("%s=[]", ref)
119
- ("var c2=r.uint32()+r.pos")
120
- ("while(r.pos<c2)")
121
- ("%s.push(r.%s())", ref, type)
122
- ("continue")
123
- ("}");
124
-
125
- // Non-packed
126
- gen
127
- ("if(u!==%i)", types.basic[type] === undefined ? field.delimited ? 3 : 2 : types.basic[type])
128
- ("break")
129
- ("if(!(%s&&%s.length))", ref, ref)
130
- ("%s=[]", ref);
131
- if (types.basic[type] === undefined) {
132
- if (field.delimited) gen
133
- ("%s.push(types[%i].decode(r,undefined,%i,q+1))", ref, i, field.id * 8 + 4);
134
- else gen
135
- ("%s.push(types[%i].decode(r,r.uint32(),undefined,q+1))", ref, i);
136
- } else gen
137
- ("%s.push(r.%s())", ref, type);
138
-
139
- // Non-repeated
140
- } else if (types.basic[type] === undefined) {
141
- gen
142
- ("case %i:{", field.id)
143
- ("if(u!==%i)", field.delimited ? 3 : 2)
144
- ("break");
145
- if (field.delimited) gen
146
- ("%s=types[%i].decode(r,undefined,%i,q+1,%s)", ref, i, field.id * 8 + 4, ref);
147
- else gen
148
- ("%s=types[%i].decode(r,r.uint32(),undefined,q+1,%s)", ref, i, ref);
149
- }
150
- else if (field.hasPresence) {
151
- gen
152
- ("case %i:{", field.id)
153
- ("if(u!==%i)", types.basic[type])
154
- ("break")
155
- ("%s=r.%s()", ref, type);
156
- } else {
157
- gen
158
- ("case %i:{", field.id)
159
- ("if(u!==%i)", types.basic[type])
160
- ("break");
161
- if (field.resolvedType instanceof Enum && field.typeDefault !== 0) gen
162
- // TODO: Protoc rejects open enums whose first value is not zero.
163
- // We should do the same, but for v8 this would be a regression.
164
- ("if((v=r.%s())!==%j)", type, field.typeDefault);
165
- else if (type === "string" || type === "bytes") gen
166
- ("if((v=r.%s()).length)", type);
167
- else if (types.long[type] !== undefined) gen
168
- ("if(typeof(v=r.%s())===\"object\"?v.low||v.high:v!==0)", type);
169
- else if (type === "double" || type === "float") gen
170
- ("if((v=r.%s())!==0)", type);
171
- else gen
172
- ("if(v=r.%s())", type);
173
- gen
174
- ("%s=v", ref)
175
- ("else")
176
- ("delete %s", ref); // rare/odd case: later default clears earlier non-default
177
- }
178
- if (field.partOf) gen
179
- ("m%s=%j", util.safeProp(field.partOf.name), field.name);
180
- gen
181
- ("continue")
182
- ("}");
183
- }
184
- if (i) gen
185
- ("}");
186
- // Unknown fields
187
- gen
188
- ("r.skipType(%s,q,t)", i ? "u" : "t&7")
189
- ("if(!r.discardUnknown){")
190
- ("util.makeProp(m,\"$unknowns\",false);")
191
- ("(m.$unknowns||(m.$unknowns=[])).push(r.raw(s,r.pos))")
192
- ("}")
193
- ("}")
194
- ("if(z!==undefined)")
195
- ("throw Error(\"missing end group\")");
196
-
197
- // Field presence
198
- for (i = 0; i < mtype._fieldsArray.length; ++i) {
199
- var rfield = mtype._fieldsArray[i];
200
- if (rfield.required) gen
201
- ("if(!Object.hasOwnProperty.call(m,%j))", rfield.name)
202
- ("throw util.ProtocolError(%j,{instance:m})", missing(rfield));
203
- }
204
-
205
- return gen
206
- ("return m");
207
- /* eslint-enable no-unexpected-multiline */
208
- }
1
+ "use strict";
2
+ module.exports = decoder;
3
+
4
+ var Enum = require("./enum"),
5
+ types = require("./types"),
6
+ util = require("./util");
7
+
8
+ function missing(field) {
9
+ return "missing required '" + field.name + "'";
10
+ }
11
+
12
+ /**
13
+ * Generates a decoder specific to the specified message type.
14
+ * @param {Type} mtype Message type
15
+ * @returns {Codegen} Codegen instance
16
+ */
17
+ function decoder(mtype) {
18
+ /* eslint-disable no-unexpected-multiline */
19
+ var hasMapField = false,
20
+ hasImplicitPresenceField = false,
21
+ i = 0;
22
+ for (; i < mtype.fieldsArray.length; ++i) {
23
+ var pfield = mtype._fieldsArray[i];
24
+ if (pfield.map)
25
+ hasMapField = true;
26
+ if (!pfield.repeated && !pfield.map && !pfield.hasPresence)
27
+ hasImplicitPresenceField = true;
28
+ }
29
+ var gen = util.codegen(["r", "l", "z", "q", "g"])
30
+ ("if(!(r instanceof Reader))")
31
+ ("r=Reader.create(r)")
32
+ ("if(q===undefined)q=0")
33
+ ("if(q>Reader.recursionLimit)")
34
+ ("throw Error(\"max depth exceeded\")")
35
+ ("var c=l===undefined?r.len:r.pos+l,m=g||new C" + (hasMapField ? ",k,v" : hasImplicitPresenceField ? ",v" : ""))
36
+ ("while(r.pos<c){")
37
+ ("var s=r.pos")
38
+ ("var t=r.tag()")
39
+ ("if(t===z){")
40
+ ("z=undefined")
41
+ ("break")
42
+ ("}");
43
+ if (mtype.fieldsArray.length) gen
44
+ ("var u=t&7")
45
+ ("switch(t>>>=3){");
46
+ for (i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {
47
+ var field = mtype._fieldsArray[i].resolve(),
48
+ type = field.resolvedType instanceof Enum ? "int32" : field.type,
49
+ ref = "m" + util.safeProp(field.name);
50
+
51
+ // Map fields
52
+ if (field.map) {
53
+ gen
54
+ ("case %i:{", field.id)
55
+ ("if(u!==2)")
56
+ ("break")
57
+ ("if(%s===util.emptyObject)", ref)
58
+ ("%s={}", ref)
59
+ ("var c2=r.uint32()+r.pos");
60
+
61
+ if (types.defaults[field.keyType] !== undefined) gen
62
+ ("k=%j", types.defaults[field.keyType]);
63
+ else gen
64
+ ("k=null");
65
+
66
+ if (types.long[type] !== undefined) gen
67
+ ("v=util.Long?util.Long.fromNumber(0,%j):0", type === "uint64" || type === "fixed64");
68
+ else if (types.defaults[type] !== undefined) gen
69
+ ("v=%j", types.defaults[type]);
70
+ else gen
71
+ ("v=null");
72
+
73
+ gen
74
+ ("while(r.pos<c2){")
75
+ ("var t2=r.tag()")
76
+ ("u=t2&7")
77
+ ("switch(t2>>>=3){")
78
+ ("case 1:")
79
+ ("if(u!==%i)", types.mapKey[field.keyType])
80
+ ("break")
81
+ ("k=r.%s()", field.keyType)
82
+ ("continue")
83
+ ("case 2:")
84
+ ("if(u!==%i)", types.basic[type] === undefined ? 2 : types.basic[type])
85
+ ("break");
86
+
87
+ if (types.basic[type] === undefined) gen
88
+ ("v=types[%i].decode(r,r.uint32(),undefined,q+1)", i); // can't be groups
89
+ else gen
90
+ ("v=r.%s()", type);
91
+
92
+ gen
93
+ ("continue")
94
+ ("}")
95
+ ("r.skipType(u,q,t2)")
96
+ ("}");
97
+
98
+ var val = types.basic[type] === undefined ? "v||new types[" + i + "].ctor" : "v";
99
+ if (types.long[field.keyType] !== undefined) gen
100
+ ("%s[typeof k===\"object\"?util.longToHash(k):k]=%s", ref, val);
101
+ else {
102
+ if (field.keyType === "string") gen
103
+ ("if(k===\"__proto__\")")
104
+ ("util.makeProp(%s,k)", ref);
105
+ gen
106
+ ("%s[k]=%s", ref, val);
107
+ }
108
+
109
+ // Repeated fields
110
+ } else if (field.repeated) { gen
111
+ ("case %i:", field.id)
112
+ ("{");
113
+
114
+ // Packable (always check for forward and backward compatiblity)
115
+ if (types.packed[type] !== undefined) gen
116
+ ("if(u===2){")
117
+ ("if(!(%s&&%s.length))", ref, ref)
118
+ ("%s=[]", ref)
119
+ ("var c2=r.uint32()+r.pos")
120
+ ("while(r.pos<c2)")
121
+ ("%s.push(r.%s())", ref, type)
122
+ ("continue")
123
+ ("}");
124
+
125
+ // Non-packed
126
+ gen
127
+ ("if(u!==%i)", types.basic[type] === undefined ? field.delimited ? 3 : 2 : types.basic[type])
128
+ ("break")
129
+ ("if(!(%s&&%s.length))", ref, ref)
130
+ ("%s=[]", ref);
131
+ if (types.basic[type] === undefined) {
132
+ if (field.delimited) gen
133
+ ("%s.push(types[%i].decode(r,undefined,%i,q+1))", ref, i, field.id * 8 + 4);
134
+ else gen
135
+ ("%s.push(types[%i].decode(r,r.uint32(),undefined,q+1))", ref, i);
136
+ } else gen
137
+ ("%s.push(r.%s())", ref, type);
138
+
139
+ // Non-repeated
140
+ } else if (types.basic[type] === undefined) {
141
+ gen
142
+ ("case %i:{", field.id)
143
+ ("if(u!==%i)", field.delimited ? 3 : 2)
144
+ ("break");
145
+ if (field.delimited) gen
146
+ ("%s=types[%i].decode(r,undefined,%i,q+1,%s)", ref, i, field.id * 8 + 4, ref);
147
+ else gen
148
+ ("%s=types[%i].decode(r,r.uint32(),undefined,q+1,%s)", ref, i, ref);
149
+ }
150
+ else if (field.hasPresence) {
151
+ gen
152
+ ("case %i:{", field.id)
153
+ ("if(u!==%i)", types.basic[type])
154
+ ("break")
155
+ ("%s=r.%s()", ref, type);
156
+ } else {
157
+ gen
158
+ ("case %i:{", field.id)
159
+ ("if(u!==%i)", types.basic[type])
160
+ ("break");
161
+ if (field.resolvedType instanceof Enum && field.typeDefault !== 0) gen
162
+ // TODO: Protoc rejects open enums whose first value is not zero.
163
+ // We should do the same, but for v8 this would be a regression.
164
+ ("if((v=r.%s())!==%j)", type, field.typeDefault);
165
+ else if (type === "string" || type === "bytes") gen
166
+ ("if((v=r.%s()).length)", type);
167
+ else if (types.long[type] !== undefined) gen
168
+ ("if(typeof(v=r.%s())===\"object\"?v.low||v.high:v!==0)", type);
169
+ else if (type === "double" || type === "float") gen
170
+ ("if((v=r.%s())!==0)", type);
171
+ else gen
172
+ ("if(v=r.%s())", type);
173
+ gen
174
+ ("%s=v", ref)
175
+ ("else")
176
+ ("delete %s", ref); // rare/odd case: later default clears earlier non-default
177
+ }
178
+ if (field.partOf) gen
179
+ ("m%s=%j", util.safeProp(field.partOf.name), field.name);
180
+ gen
181
+ ("continue")
182
+ ("}");
183
+ }
184
+ if (i) gen
185
+ ("}");
186
+ // Unknown fields
187
+ gen
188
+ ("r.skipType(%s,q,t)", i ? "u" : "t&7")
189
+ ("if(!r.discardUnknown){")
190
+ ("util.makeProp(m,\"$unknowns\",false);")
191
+ ("(m.$unknowns||(m.$unknowns=[])).push(r.raw(s,r.pos))")
192
+ ("}")
193
+ ("}")
194
+ ("if(z!==undefined)")
195
+ ("throw Error(\"missing end group\")");
196
+
197
+ // Field presence
198
+ for (i = 0; i < mtype._fieldsArray.length; ++i) {
199
+ var rfield = mtype._fieldsArray[i];
200
+ if (rfield.required) gen
201
+ ("if(!Object.hasOwnProperty.call(m,%j))", rfield.name)
202
+ ("throw util.ProtocolError(%j,{instance:m})", missing(rfield));
203
+ }
204
+
205
+ return gen
206
+ ("return m");
207
+ /* eslint-enable no-unexpected-multiline */
208
+ }
package/src/encoder.js CHANGED
@@ -1,111 +1,111 @@
1
- "use strict";
2
- module.exports = encoder;
3
-
4
- var Enum = require("./enum"),
5
- types = require("./types"),
6
- util = require("./util");
7
-
8
- /**
9
- * Generates a partial message type encoder.
10
- * @param {Codegen} gen Codegen instance
11
- * @param {Field} field Reflected field
12
- * @param {number} fieldIndex Field index
13
- * @param {string} ref Variable reference
14
- * @returns {Codegen} Codegen instance
15
- * @ignore
16
- */
17
- function genTypePartial(gen, field, fieldIndex, ref) {
18
- return field.delimited
19
- ? gen("types[%i].encode(%s,w.uint32(%i),q+1).uint32(%i)", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)
20
- : gen("types[%i].encode(%s,w.uint32(%i).fork(),q+1).ldelim()", fieldIndex, ref, (field.id << 3 | 2) >>> 0);
21
- }
22
-
23
- /**
24
- * Generates an encoder specific to the specified message type.
25
- * @param {Type} mtype Message type
26
- * @returns {Codegen} Codegen instance
27
- */
28
- function encoder(mtype) {
29
- /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */
30
- var gen = util.codegen(["m", "w", "q"])
31
- ("if(!w)")
32
- ("w=Writer.create()")
33
- ("if(q===undefined)q=0")
34
- ("if(q>util.recursionLimit)")
35
- ("throw Error(\"max depth exceeded\")");
36
-
37
- var i, ref;
38
-
39
- // "when a message is serialized its known fields should be written sequentially by field number"
40
- var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);
41
-
42
- for (var i = 0; i < fields.length; ++i) {
43
- var field = fields[i].resolve(),
44
- index = mtype._fieldsArray.indexOf(field),
45
- type = field.resolvedType instanceof Enum ? "int32" : field.type,
46
- wireType = types.basic[type];
47
- ref = "m" + util.safeProp(field.name);
48
-
49
- // Map fields
50
- if (field.map) {
51
- gen
52
- ("if(%s!=null&&Object.hasOwnProperty.call(m,%j)){", ref, field.name) // !== undefined && !== null
53
- ("for(var ks=Object.keys(%s),i=0;i<ks.length;++i){", ref);
54
- if (field.keyType === "bool") gen
55
- ("w.uint32(%i).fork().uint32(%i).bool(util.boolFromKey(ks[i]))", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType]);
56
- else if (types.long[field.keyType] !== undefined) gen
57
- ("w.uint32(%i).fork().uint32(%i).%s(util.longFromKey(ks[i],%j))", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType, field.keyType === "uint64" || field.keyType === "fixed64");
58
- else gen
59
- ("w.uint32(%i).fork().uint32(%i).%s(ks[i])", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType);
60
- if (wireType === undefined) gen
61
- ("types[%i].encode(%s[ks[i]],w.uint32(18).fork(),q+1).ldelim().ldelim()", index, ref); // can't be groups
62
- else gen
63
- (".uint32(%i).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref);
64
- gen
65
- ("}")
66
- ("}");
67
-
68
- // Repeated fields
69
- } else if (field.repeated) { gen
70
- ("if(%s!=null&&%s.length){", ref, ref); // !== undefined && !== null
71
-
72
- // Packed repeated
73
- if (field.packed && types.packed[type] !== undefined) { gen
74
-
75
- ("w.uint32(%i).fork()", (field.id << 3 | 2) >>> 0)
76
- ("for(var i=0;i<%s.length;++i)", ref)
77
- ("w.%s(%s[i])", type, ref)
78
- ("w.ldelim()");
79
-
80
- // Non-packed
81
- } else { gen
82
-
83
- ("for(var i=0;i<%s.length;++i)", ref);
84
- if (wireType === undefined)
85
- genTypePartial(gen, field, index, ref + "[i]");
86
- else gen
87
- ("w.uint32(%i).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref);
88
-
89
- } gen
90
- ("}");
91
-
92
- // Non-repeated
93
- } else {
94
- if (!field.required) gen
95
- ("if(%s!=null&&Object.hasOwnProperty.call(m,%j))", ref, field.name); // !== undefined && !== null
96
-
97
- if (wireType === undefined)
98
- genTypePartial(gen, field, index, ref);
99
- else gen
100
- ("w.uint32(%i).%s(%s)", (field.id << 3 | wireType) >>> 0, type, ref);
101
-
102
- }
103
- }
104
-
105
- return gen
106
- ("if(m.$unknowns!=null&&Object.hasOwnProperty.call(m,\"$unknowns\"))")
107
- ("for(var i=0;i<m.$unknowns.length;++i)")
108
- ("w.raw(m.$unknowns[i])")
109
- ("return w");
110
- /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */
111
- }
1
+ "use strict";
2
+ module.exports = encoder;
3
+
4
+ var Enum = require("./enum"),
5
+ types = require("./types"),
6
+ util = require("./util");
7
+
8
+ /**
9
+ * Generates a partial message type encoder.
10
+ * @param {Codegen} gen Codegen instance
11
+ * @param {Field} field Reflected field
12
+ * @param {number} fieldIndex Field index
13
+ * @param {string} ref Variable reference
14
+ * @returns {Codegen} Codegen instance
15
+ * @ignore
16
+ */
17
+ function genTypePartial(gen, field, fieldIndex, ref) {
18
+ return field.delimited
19
+ ? gen("types[%i].encode(%s,w.uint32(%i),q+1).uint32(%i)", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)
20
+ : gen("types[%i].encode(%s,w.uint32(%i).fork(),q+1).ldelim()", fieldIndex, ref, (field.id << 3 | 2) >>> 0);
21
+ }
22
+
23
+ /**
24
+ * Generates an encoder specific to the specified message type.
25
+ * @param {Type} mtype Message type
26
+ * @returns {Codegen} Codegen instance
27
+ */
28
+ function encoder(mtype) {
29
+ /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */
30
+ var gen = util.codegen(["m", "w", "q"])
31
+ ("if(!w)")
32
+ ("w=Writer.create()")
33
+ ("if(q===undefined)q=0")
34
+ ("if(q>util.recursionLimit)")
35
+ ("throw Error(\"max depth exceeded\")");
36
+
37
+ var i, ref;
38
+
39
+ // "when a message is serialized its known fields should be written sequentially by field number"
40
+ var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);
41
+
42
+ for (var i = 0; i < fields.length; ++i) {
43
+ var field = fields[i].resolve(),
44
+ index = mtype._fieldsArray.indexOf(field),
45
+ type = field.resolvedType instanceof Enum ? "int32" : field.type,
46
+ wireType = types.basic[type];
47
+ ref = "m" + util.safeProp(field.name);
48
+
49
+ // Map fields
50
+ if (field.map) {
51
+ gen
52
+ ("if(%s!=null&&Object.hasOwnProperty.call(m,%j)){", ref, field.name) // !== undefined && !== null
53
+ ("for(var ks=Object.keys(%s),i=0;i<ks.length;++i){", ref);
54
+ if (field.keyType === "bool") gen
55
+ ("w.uint32(%i).fork().uint32(%i).bool(util.boolFromKey(ks[i]))", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType]);
56
+ else if (types.long[field.keyType] !== undefined) gen
57
+ ("w.uint32(%i).fork().uint32(%i).%s(util.longFromKey(ks[i],%j))", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType, field.keyType === "uint64" || field.keyType === "fixed64");
58
+ else gen
59
+ ("w.uint32(%i).fork().uint32(%i).%s(ks[i])", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType);
60
+ if (wireType === undefined) gen
61
+ ("types[%i].encode(%s[ks[i]],w.uint32(18).fork(),q+1).ldelim().ldelim()", index, ref); // can't be groups
62
+ else gen
63
+ (".uint32(%i).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref);
64
+ gen
65
+ ("}")
66
+ ("}");
67
+
68
+ // Repeated fields
69
+ } else if (field.repeated) { gen
70
+ ("if(%s!=null&&%s.length){", ref, ref); // !== undefined && !== null
71
+
72
+ // Packed repeated
73
+ if (field.packed && types.packed[type] !== undefined) { gen
74
+
75
+ ("w.uint32(%i).fork()", (field.id << 3 | 2) >>> 0)
76
+ ("for(var i=0;i<%s.length;++i)", ref)
77
+ ("w.%s(%s[i])", type, ref)
78
+ ("w.ldelim()");
79
+
80
+ // Non-packed
81
+ } else { gen
82
+
83
+ ("for(var i=0;i<%s.length;++i)", ref);
84
+ if (wireType === undefined)
85
+ genTypePartial(gen, field, index, ref + "[i]");
86
+ else gen
87
+ ("w.uint32(%i).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref);
88
+
89
+ } gen
90
+ ("}");
91
+
92
+ // Non-repeated
93
+ } else {
94
+ if (!field.required) gen
95
+ ("if(%s!=null&&Object.hasOwnProperty.call(m,%j))", ref, field.name); // !== undefined && !== null
96
+
97
+ if (wireType === undefined)
98
+ genTypePartial(gen, field, index, ref);
99
+ else gen
100
+ ("w.uint32(%i).%s(%s)", (field.id << 3 | wireType) >>> 0, type, ref);
101
+
102
+ }
103
+ }
104
+
105
+ return gen
106
+ ("if(m.$unknowns!=null&&Object.hasOwnProperty.call(m,\"$unknowns\"))")
107
+ ("for(var i=0;i<m.$unknowns.length;++i)")
108
+ ("w.raw(m.$unknowns[i])")
109
+ ("return w");
110
+ /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */
111
+ }