protobufjs 6.11.1 → 7.0.0

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 (254) hide show
  1. package/README.md +7 -174
  2. package/dist/light/protobuf.js +40 -16
  3. package/dist/light/protobuf.js.map +1 -1
  4. package/dist/light/protobuf.min.js +3 -3
  5. package/dist/light/protobuf.min.js.map +1 -1
  6. package/dist/minimal/protobuf.js +27 -10
  7. package/dist/minimal/protobuf.js.map +1 -1
  8. package/dist/minimal/protobuf.min.js +3 -3
  9. package/dist/minimal/protobuf.min.js.map +1 -1
  10. package/dist/protobuf.js +109 -46
  11. package/dist/protobuf.js.map +1 -1
  12. package/dist/protobuf.min.js +3 -3
  13. package/dist/protobuf.min.js.map +1 -1
  14. package/index.d.ts +1 -1
  15. package/package.json +11 -30
  16. package/scripts/postinstall.js +0 -3
  17. package/src/converter.js +1 -1
  18. package/src/decoder.js +4 -3
  19. package/src/field.js +3 -0
  20. package/src/namespace.js +1 -2
  21. package/src/parse.js +38 -14
  22. package/src/roots.js +1 -1
  23. package/src/tokenize.js +31 -16
  24. package/src/util/minimal.js +24 -7
  25. package/src/util.js +3 -0
  26. package/src/wrappers.js +2 -2
  27. package/CHANGELOG.md +0 -1014
  28. package/bin/pbjs +0 -6
  29. package/bin/pbts +0 -6
  30. package/cli/LICENSE +0 -33
  31. package/cli/README.md +0 -174
  32. package/cli/bin/pbjs +0 -6
  33. package/cli/bin/pbts +0 -6
  34. package/cli/index.d.ts +0 -3
  35. package/cli/index.js +0 -3
  36. package/cli/lib/tsd-jsdoc/LICENSE +0 -21
  37. package/cli/lib/tsd-jsdoc/README.md +0 -23
  38. package/cli/lib/tsd-jsdoc/plugin.js +0 -21
  39. package/cli/lib/tsd-jsdoc/publish.js +0 -705
  40. package/cli/lib/tsd-jsdoc.json +0 -18
  41. package/cli/node_modules/.package-lock.json +0 -256
  42. package/cli/node_modules/acorn/CHANGELOG.md +0 -620
  43. package/cli/node_modules/acorn/LICENSE +0 -21
  44. package/cli/node_modules/acorn/README.md +0 -269
  45. package/cli/node_modules/acorn/bin/acorn +0 -4
  46. package/cli/node_modules/acorn/dist/acorn.d.ts +0 -209
  47. package/cli/node_modules/acorn/dist/acorn.js +0 -5186
  48. package/cli/node_modules/acorn/dist/acorn.js.map +0 -1
  49. package/cli/node_modules/acorn/dist/acorn.mjs +0 -5155
  50. package/cli/node_modules/acorn/dist/acorn.mjs.d.ts +0 -2
  51. package/cli/node_modules/acorn/dist/acorn.mjs.map +0 -1
  52. package/cli/node_modules/acorn/dist/bin.js +0 -64
  53. package/cli/node_modules/acorn/package.json +0 -35
  54. package/cli/node_modules/acorn-jsx/LICENSE +0 -19
  55. package/cli/node_modules/acorn-jsx/README.md +0 -40
  56. package/cli/node_modules/acorn-jsx/index.js +0 -488
  57. package/cli/node_modules/acorn-jsx/package.json +0 -27
  58. package/cli/node_modules/acorn-jsx/xhtml.js +0 -255
  59. package/cli/node_modules/balanced-match/.npmignore +0 -5
  60. package/cli/node_modules/balanced-match/LICENSE.md +0 -21
  61. package/cli/node_modules/balanced-match/README.md +0 -91
  62. package/cli/node_modules/balanced-match/index.js +0 -59
  63. package/cli/node_modules/balanced-match/package.json +0 -49
  64. package/cli/node_modules/brace-expansion/LICENSE +0 -21
  65. package/cli/node_modules/brace-expansion/README.md +0 -129
  66. package/cli/node_modules/brace-expansion/index.js +0 -201
  67. package/cli/node_modules/brace-expansion/package.json +0 -47
  68. package/cli/node_modules/concat-map/.travis.yml +0 -4
  69. package/cli/node_modules/concat-map/LICENSE +0 -18
  70. package/cli/node_modules/concat-map/README.markdown +0 -62
  71. package/cli/node_modules/concat-map/example/map.js +0 -6
  72. package/cli/node_modules/concat-map/index.js +0 -13
  73. package/cli/node_modules/concat-map/package.json +0 -43
  74. package/cli/node_modules/concat-map/test/map.js +0 -39
  75. package/cli/node_modules/deep-is/.npmignore +0 -1
  76. package/cli/node_modules/deep-is/.travis.yml +0 -6
  77. package/cli/node_modules/deep-is/LICENSE +0 -22
  78. package/cli/node_modules/deep-is/README.markdown +0 -70
  79. package/cli/node_modules/deep-is/example/cmp.js +0 -11
  80. package/cli/node_modules/deep-is/index.js +0 -102
  81. package/cli/node_modules/deep-is/package.json +0 -61
  82. package/cli/node_modules/deep-is/test/NaN.js +0 -16
  83. package/cli/node_modules/deep-is/test/cmp.js +0 -23
  84. package/cli/node_modules/deep-is/test/neg-vs-pos-0.js +0 -15
  85. package/cli/node_modules/escodegen/LICENSE.BSD +0 -21
  86. package/cli/node_modules/escodegen/README.md +0 -84
  87. package/cli/node_modules/escodegen/bin/escodegen.js +0 -77
  88. package/cli/node_modules/escodegen/bin/esgenerate.js +0 -64
  89. package/cli/node_modules/escodegen/escodegen.js +0 -2647
  90. package/cli/node_modules/escodegen/package.json +0 -62
  91. package/cli/node_modules/eslint-visitor-keys/CHANGELOG.md +0 -25
  92. package/cli/node_modules/eslint-visitor-keys/LICENSE +0 -201
  93. package/cli/node_modules/eslint-visitor-keys/README.md +0 -98
  94. package/cli/node_modules/eslint-visitor-keys/lib/index.js +0 -81
  95. package/cli/node_modules/eslint-visitor-keys/lib/visitor-keys.json +0 -284
  96. package/cli/node_modules/eslint-visitor-keys/package.json +0 -40
  97. package/cli/node_modules/espree/CHANGELOG.md +0 -509
  98. package/cli/node_modules/espree/LICENSE +0 -25
  99. package/cli/node_modules/espree/README.md +0 -233
  100. package/cli/node_modules/espree/espree.js +0 -177
  101. package/cli/node_modules/espree/lib/ast-node-types.js +0 -96
  102. package/cli/node_modules/espree/lib/espree.js +0 -286
  103. package/cli/node_modules/espree/lib/features.js +0 -29
  104. package/cli/node_modules/espree/lib/options.js +0 -106
  105. package/cli/node_modules/espree/lib/token-translator.js +0 -263
  106. package/cli/node_modules/espree/lib/visitor-keys.js +0 -123
  107. package/cli/node_modules/espree/package.json +0 -64
  108. package/cli/node_modules/esprima/ChangeLog +0 -235
  109. package/cli/node_modules/esprima/LICENSE.BSD +0 -21
  110. package/cli/node_modules/esprima/README.md +0 -46
  111. package/cli/node_modules/esprima/bin/esparse.js +0 -139
  112. package/cli/node_modules/esprima/bin/esvalidate.js +0 -236
  113. package/cli/node_modules/esprima/dist/esprima.js +0 -6709
  114. package/cli/node_modules/esprima/package.json +0 -112
  115. package/cli/node_modules/estraverse/.jshintrc +0 -16
  116. package/cli/node_modules/estraverse/LICENSE.BSD +0 -19
  117. package/cli/node_modules/estraverse/README.md +0 -153
  118. package/cli/node_modules/estraverse/estraverse.js +0 -801
  119. package/cli/node_modules/estraverse/gulpfile.js +0 -70
  120. package/cli/node_modules/estraverse/package.json +0 -40
  121. package/cli/node_modules/esutils/LICENSE.BSD +0 -19
  122. package/cli/node_modules/esutils/README.md +0 -174
  123. package/cli/node_modules/esutils/lib/ast.js +0 -144
  124. package/cli/node_modules/esutils/lib/code.js +0 -135
  125. package/cli/node_modules/esutils/lib/keyword.js +0 -165
  126. package/cli/node_modules/esutils/lib/utils.js +0 -33
  127. package/cli/node_modules/esutils/package.json +0 -44
  128. package/cli/node_modules/fast-levenshtein/LICENSE.md +0 -25
  129. package/cli/node_modules/fast-levenshtein/README.md +0 -104
  130. package/cli/node_modules/fast-levenshtein/levenshtein.js +0 -136
  131. package/cli/node_modules/fast-levenshtein/package.json +0 -39
  132. package/cli/node_modules/fs.realpath/LICENSE +0 -43
  133. package/cli/node_modules/fs.realpath/README.md +0 -33
  134. package/cli/node_modules/fs.realpath/index.js +0 -66
  135. package/cli/node_modules/fs.realpath/old.js +0 -303
  136. package/cli/node_modules/fs.realpath/package.json +0 -26
  137. package/cli/node_modules/glob/LICENSE +0 -21
  138. package/cli/node_modules/glob/README.md +0 -375
  139. package/cli/node_modules/glob/changelog.md +0 -67
  140. package/cli/node_modules/glob/common.js +0 -240
  141. package/cli/node_modules/glob/glob.js +0 -790
  142. package/cli/node_modules/glob/package.json +0 -46
  143. package/cli/node_modules/glob/sync.js +0 -486
  144. package/cli/node_modules/inflight/LICENSE +0 -15
  145. package/cli/node_modules/inflight/README.md +0 -37
  146. package/cli/node_modules/inflight/inflight.js +0 -54
  147. package/cli/node_modules/inflight/package.json +0 -29
  148. package/cli/node_modules/inherits/LICENSE +0 -16
  149. package/cli/node_modules/inherits/README.md +0 -42
  150. package/cli/node_modules/inherits/inherits.js +0 -9
  151. package/cli/node_modules/inherits/inherits_browser.js +0 -27
  152. package/cli/node_modules/inherits/package.json +0 -29
  153. package/cli/node_modules/levn/LICENSE +0 -22
  154. package/cli/node_modules/levn/README.md +0 -196
  155. package/cli/node_modules/levn/lib/cast.js +0 -298
  156. package/cli/node_modules/levn/lib/coerce.js +0 -285
  157. package/cli/node_modules/levn/lib/index.js +0 -22
  158. package/cli/node_modules/levn/lib/parse-string.js +0 -113
  159. package/cli/node_modules/levn/lib/parse.js +0 -102
  160. package/cli/node_modules/levn/package.json +0 -47
  161. package/cli/node_modules/minimatch/LICENSE +0 -15
  162. package/cli/node_modules/minimatch/README.md +0 -209
  163. package/cli/node_modules/minimatch/minimatch.js +0 -923
  164. package/cli/node_modules/minimatch/package.json +0 -30
  165. package/cli/node_modules/once/LICENSE +0 -15
  166. package/cli/node_modules/once/README.md +0 -79
  167. package/cli/node_modules/once/once.js +0 -42
  168. package/cli/node_modules/once/package.json +0 -33
  169. package/cli/node_modules/optionator/CHANGELOG.md +0 -56
  170. package/cli/node_modules/optionator/LICENSE +0 -22
  171. package/cli/node_modules/optionator/README.md +0 -238
  172. package/cli/node_modules/optionator/lib/help.js +0 -260
  173. package/cli/node_modules/optionator/lib/index.js +0 -465
  174. package/cli/node_modules/optionator/lib/util.js +0 -54
  175. package/cli/node_modules/optionator/package.json +0 -44
  176. package/cli/node_modules/path-is-absolute/index.js +0 -20
  177. package/cli/node_modules/path-is-absolute/license +0 -21
  178. package/cli/node_modules/path-is-absolute/package.json +0 -43
  179. package/cli/node_modules/path-is-absolute/readme.md +0 -59
  180. package/cli/node_modules/prelude-ls/CHANGELOG.md +0 -99
  181. package/cli/node_modules/prelude-ls/LICENSE +0 -22
  182. package/cli/node_modules/prelude-ls/README.md +0 -15
  183. package/cli/node_modules/prelude-ls/lib/Func.js +0 -65
  184. package/cli/node_modules/prelude-ls/lib/List.js +0 -686
  185. package/cli/node_modules/prelude-ls/lib/Num.js +0 -130
  186. package/cli/node_modules/prelude-ls/lib/Obj.js +0 -154
  187. package/cli/node_modules/prelude-ls/lib/Str.js +0 -92
  188. package/cli/node_modules/prelude-ls/lib/index.js +0 -178
  189. package/cli/node_modules/prelude-ls/package.json +0 -52
  190. package/cli/node_modules/rimraf/CHANGELOG.md +0 -65
  191. package/cli/node_modules/rimraf/LICENSE +0 -15
  192. package/cli/node_modules/rimraf/README.md +0 -101
  193. package/cli/node_modules/rimraf/bin.js +0 -68
  194. package/cli/node_modules/rimraf/package.json +0 -32
  195. package/cli/node_modules/rimraf/rimraf.js +0 -360
  196. package/cli/node_modules/source-map/CHANGELOG.md +0 -301
  197. package/cli/node_modules/source-map/LICENSE +0 -28
  198. package/cli/node_modules/source-map/README.md +0 -742
  199. package/cli/node_modules/source-map/dist/source-map.debug.js +0 -3234
  200. package/cli/node_modules/source-map/dist/source-map.js +0 -3233
  201. package/cli/node_modules/source-map/dist/source-map.min.js +0 -2
  202. package/cli/node_modules/source-map/dist/source-map.min.js.map +0 -1
  203. package/cli/node_modules/source-map/lib/array-set.js +0 -121
  204. package/cli/node_modules/source-map/lib/base64-vlq.js +0 -140
  205. package/cli/node_modules/source-map/lib/base64.js +0 -67
  206. package/cli/node_modules/source-map/lib/binary-search.js +0 -111
  207. package/cli/node_modules/source-map/lib/mapping-list.js +0 -79
  208. package/cli/node_modules/source-map/lib/quick-sort.js +0 -114
  209. package/cli/node_modules/source-map/lib/source-map-consumer.js +0 -1145
  210. package/cli/node_modules/source-map/lib/source-map-generator.js +0 -425
  211. package/cli/node_modules/source-map/lib/source-node.js +0 -413
  212. package/cli/node_modules/source-map/lib/util.js +0 -488
  213. package/cli/node_modules/source-map/package.json +0 -73
  214. package/cli/node_modules/source-map/source-map.d.ts +0 -98
  215. package/cli/node_modules/source-map/source-map.js +0 -8
  216. package/cli/node_modules/tmp/CHANGELOG.md +0 -288
  217. package/cli/node_modules/tmp/LICENSE +0 -21
  218. package/cli/node_modules/tmp/README.md +0 -365
  219. package/cli/node_modules/tmp/lib/tmp.js +0 -780
  220. package/cli/node_modules/tmp/package.json +0 -58
  221. package/cli/node_modules/type-check/LICENSE +0 -22
  222. package/cli/node_modules/type-check/README.md +0 -210
  223. package/cli/node_modules/type-check/lib/check.js +0 -126
  224. package/cli/node_modules/type-check/lib/index.js +0 -16
  225. package/cli/node_modules/type-check/lib/parse-type.js +0 -196
  226. package/cli/node_modules/type-check/package.json +0 -40
  227. package/cli/node_modules/word-wrap/LICENSE +0 -21
  228. package/cli/node_modules/word-wrap/README.md +0 -182
  229. package/cli/node_modules/word-wrap/index.d.ts +0 -50
  230. package/cli/node_modules/word-wrap/index.js +0 -46
  231. package/cli/node_modules/word-wrap/package.json +0 -77
  232. package/cli/node_modules/wrappy/LICENSE +0 -15
  233. package/cli/node_modules/wrappy/README.md +0 -36
  234. package/cli/node_modules/wrappy/package.json +0 -29
  235. package/cli/node_modules/wrappy/wrappy.js +0 -33
  236. package/cli/package.json +0 -8
  237. package/cli/package.standalone.json +0 -32
  238. package/cli/pbjs.d.ts +0 -9
  239. package/cli/pbjs.js +0 -330
  240. package/cli/pbts.d.ts +0 -9
  241. package/cli/pbts.js +0 -197
  242. package/cli/targets/json-module.js +0 -38
  243. package/cli/targets/json.js +0 -8
  244. package/cli/targets/proto.js +0 -326
  245. package/cli/targets/proto2.js +0 -10
  246. package/cli/targets/proto3.js +0 -10
  247. package/cli/targets/static-module.js +0 -29
  248. package/cli/targets/static.js +0 -711
  249. package/cli/util.js +0 -183
  250. package/cli/wrappers/amd.js +0 -7
  251. package/cli/wrappers/closure.js +0 -7
  252. package/cli/wrappers/commonjs.js +0 -7
  253. package/cli/wrappers/default.js +0 -15
  254. package/cli/wrappers/es6.js +0 -5
package/dist/protobuf.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * protobuf.js v6.11.0 (c) 2016, daniel wirtz
3
- * compiled thu, 29 apr 2021 02:20:44 utc
2
+ * protobuf.js v6.10.2 (c) 2016, daniel wirtz
3
+ * compiled fri, 08 jul 2022 16:17:13 utc
4
4
  * licensed under the bsd-3-clause license
5
5
  * see: https://github.com/dcodeio/protobuf.js for details
6
6
  */
@@ -1583,7 +1583,7 @@ function genValuePartial_fromObject(gen, field, fieldIndex, prop) {
1583
1583
  case "bytes": gen
1584
1584
  ("if(typeof d%s===\"string\")", prop)
1585
1585
  ("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)", prop, prop, prop)
1586
- ("else if(d%s.length)", prop)
1586
+ ("else if(d%s.length >= 0)", prop)
1587
1587
  ("m%s=d%s", prop, prop);
1588
1588
  break;
1589
1589
  case "string": gen
@@ -1840,7 +1840,7 @@ function decoder(mtype) {
1840
1840
  var field = mtype._fieldsArray[i].resolve(),
1841
1841
  type = field.resolvedType instanceof Enum ? "int32" : field.type,
1842
1842
  ref = "m" + util.safeProp(field.name); gen
1843
- ("case %i:", field.id);
1843
+ ("case %i: {", field.id);
1844
1844
 
1845
1845
  // Map fields
1846
1846
  if (field.map) { gen
@@ -1911,8 +1911,9 @@ function decoder(mtype) {
1911
1911
  else gen
1912
1912
  ("%s=r.%s()", ref, type);
1913
1913
  gen
1914
- ("break");
1915
- // Unknown fields
1914
+ ("break")
1915
+ ("}");
1916
+ // Unknown fields
1916
1917
  } gen
1917
1918
  ("default:")
1918
1919
  ("r.skipType(t&7)")
@@ -2492,6 +2493,9 @@ Field.prototype.resolve = function resolve() {
2492
2493
  this.typeDefault = null;
2493
2494
  else // instanceof Enum
2494
2495
  this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined
2496
+ } else if (this.options && this.options.proto3_optional) {
2497
+ // proto3 scalar value marked optional; should default to null
2498
+ this.typeDefault = null;
2495
2499
  }
2496
2500
 
2497
2501
  // use explicitly set default value if present
@@ -4647,7 +4651,7 @@ function parse(source, root, options) {
4647
4651
  option = name;
4648
4652
  token = peek();
4649
4653
  if (fqTypeRefRe.test(token)) {
4650
- propName = token.substr(1); //remove '.' before property name
4654
+ propName = token.slice(1); //remove '.' before property name
4651
4655
  name += token;
4652
4656
  next();
4653
4657
  }
@@ -4658,33 +4662,57 @@ function parse(source, root, options) {
4658
4662
  }
4659
4663
 
4660
4664
  function parseOptionValue(parent, name) {
4661
- if (skip("{", true)) { // { a: "foo" b { c: "bar" } }
4662
- var result = {};
4665
+ // { a: "foo" b { c: "bar" } }
4666
+ if (skip("{", true)) {
4667
+ var objectResult = {};
4668
+
4663
4669
  while (!skip("}", true)) {
4664
4670
  /* istanbul ignore if */
4665
- if (!nameRe.test(token = next()))
4671
+ if (!nameRe.test(token = next())) {
4666
4672
  throw illegal(token, "name");
4673
+ }
4667
4674
 
4668
4675
  var value;
4669
4676
  var propName = token;
4677
+
4678
+ skip(":", true);
4679
+
4670
4680
  if (peek() === "{")
4671
4681
  value = parseOptionValue(parent, name + "." + token);
4672
- else {
4673
- skip(":");
4674
- if (peek() === "{")
4675
- value = parseOptionValue(parent, name + "." + token);
4676
- else {
4677
- value = readValue(true);
4678
- setOption(parent, name + "." + token, value);
4682
+ else if (peek() === "[") {
4683
+ // option (my_option) = {
4684
+ // repeated_value: [ "foo", "bar" ]
4685
+ // };
4686
+ value = [];
4687
+ var lastValue;
4688
+ if (skip("[", true)) {
4689
+ do {
4690
+ lastValue = readValue(true);
4691
+ value.push(lastValue);
4692
+ } while (skip(",", true));
4693
+ skip("]");
4694
+ if (typeof lastValue !== "undefined") {
4695
+ setOption(parent, name + "." + token, lastValue);
4696
+ }
4679
4697
  }
4698
+ } else {
4699
+ value = readValue(true);
4700
+ setOption(parent, name + "." + token, value);
4680
4701
  }
4681
- var prevValue = result[propName];
4702
+
4703
+ var prevValue = objectResult[propName];
4704
+
4682
4705
  if (prevValue)
4683
4706
  value = [].concat(prevValue).concat(value);
4684
- result[propName] = value;
4707
+
4708
+ objectResult[propName] = value;
4709
+
4710
+ // Semicolons and commas can be optional
4685
4711
  skip(",", true);
4712
+ skip(";", true);
4686
4713
  }
4687
- return result;
4714
+
4715
+ return objectResult;
4688
4716
  }
4689
4717
 
4690
4718
  var simpleValue = readValue(true);
@@ -5728,7 +5756,7 @@ module.exports = {};
5728
5756
  /**
5729
5757
  * Named roots.
5730
5758
  * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).
5731
- * Can also be used manually to make roots available accross modules.
5759
+ * Can also be used manually to make roots available across modules.
5732
5760
  * @name roots
5733
5761
  * @type {Object.<string,Root>}
5734
5762
  * @example
@@ -6198,11 +6226,8 @@ function tokenize(source, alternateCommentMode) {
6198
6226
  var offset = 0,
6199
6227
  length = source.length,
6200
6228
  line = 1,
6201
- commentType = null,
6202
- commentText = null,
6203
- commentLine = 0,
6204
- commentLineEmpty = false,
6205
- commentIsLeading = false;
6229
+ lastCommentLine = 0,
6230
+ comments = {};
6206
6231
 
6207
6232
  var stack = [];
6208
6233
 
@@ -6255,10 +6280,11 @@ function tokenize(source, alternateCommentMode) {
6255
6280
  * @inner
6256
6281
  */
6257
6282
  function setComment(start, end, isLeading) {
6258
- commentType = source.charAt(start++);
6259
- commentLine = line;
6260
- commentLineEmpty = false;
6261
- commentIsLeading = isLeading;
6283
+ var comment = {
6284
+ type: source.charAt(start++),
6285
+ lineEmpty: false,
6286
+ leading: isLeading,
6287
+ };
6262
6288
  var lookback;
6263
6289
  if (alternateCommentMode) {
6264
6290
  lookback = 2; // alternate comment parsing: "//" or "/*"
@@ -6270,7 +6296,7 @@ function tokenize(source, alternateCommentMode) {
6270
6296
  do {
6271
6297
  if (--commentOffset < 0 ||
6272
6298
  (c = source.charAt(commentOffset)) === "\n") {
6273
- commentLineEmpty = true;
6299
+ comment.lineEmpty = true;
6274
6300
  break;
6275
6301
  }
6276
6302
  } while (c === " " || c === "\t");
@@ -6281,9 +6307,12 @@ function tokenize(source, alternateCommentMode) {
6281
6307
  lines[i] = lines[i]
6282
6308
  .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, "")
6283
6309
  .trim();
6284
- commentText = lines
6310
+ comment.text = lines
6285
6311
  .join("\n")
6286
6312
  .trim();
6313
+
6314
+ comments[line] = comment;
6315
+ lastCommentLine = line;
6287
6316
  }
6288
6317
 
6289
6318
  function isDoubleSlashCommentLine(startOffset) {
@@ -6352,6 +6381,9 @@ function tokenize(source, alternateCommentMode) {
6352
6381
  ++offset;
6353
6382
  if (isDoc) {
6354
6383
  setComment(start, offset - 1, isLeadingComment);
6384
+ // Trailing comment cannot not be multi-line,
6385
+ // so leading comment state should be reset to handle potential next comments
6386
+ isLeadingComment = true;
6355
6387
  }
6356
6388
  ++line;
6357
6389
  repeat = true;
@@ -6367,12 +6399,17 @@ function tokenize(source, alternateCommentMode) {
6367
6399
  break;
6368
6400
  }
6369
6401
  offset++;
6402
+ if (!isLeadingComment) {
6403
+ // Trailing comment cannot not be multi-line
6404
+ break;
6405
+ }
6370
6406
  } while (isDoubleSlashCommentLine(offset));
6371
6407
  } else {
6372
6408
  offset = Math.min(length, findEndOfLine(offset) + 1);
6373
6409
  }
6374
6410
  if (isDoc) {
6375
6411
  setComment(start, offset, isLeadingComment);
6412
+ isLeadingComment = true;
6376
6413
  }
6377
6414
  line++;
6378
6415
  repeat = true;
@@ -6394,6 +6431,7 @@ function tokenize(source, alternateCommentMode) {
6394
6431
  ++offset;
6395
6432
  if (isDoc) {
6396
6433
  setComment(start, offset - 2, isLeadingComment);
6434
+ isLeadingComment = true;
6397
6435
  }
6398
6436
  repeat = true;
6399
6437
  } else {
@@ -6469,17 +6507,22 @@ function tokenize(source, alternateCommentMode) {
6469
6507
  */
6470
6508
  function cmnt(trailingLine) {
6471
6509
  var ret = null;
6510
+ var comment;
6472
6511
  if (trailingLine === undefined) {
6473
- if (commentLine === line - 1 && (alternateCommentMode || commentType === "*" || commentLineEmpty)) {
6474
- ret = commentIsLeading ? commentText : null;
6512
+ comment = comments[line - 1];
6513
+ delete comments[line - 1];
6514
+ if (comment && (alternateCommentMode || comment.type === "*" || comment.lineEmpty)) {
6515
+ ret = comment.leading ? comment.text : null;
6475
6516
  }
6476
6517
  } else {
6477
6518
  /* istanbul ignore else */
6478
- if (commentLine < trailingLine) {
6519
+ if (lastCommentLine < trailingLine) {
6479
6520
  peek();
6480
6521
  }
6481
- if (commentLine === trailingLine && !commentLineEmpty && (alternateCommentMode || commentType === "/")) {
6482
- ret = commentIsLeading ? null : commentText;
6522
+ comment = comments[trailingLine];
6523
+ delete comments[trailingLine];
6524
+ if (comment && !comment.lineEmpty && (alternateCommentMode || comment.type === "/")) {
6525
+ ret = comment.leading ? null : comment.text;
6483
6526
  }
6484
6527
  }
6485
6528
  return ret;
@@ -7465,6 +7508,9 @@ util.decorateEnum = function decorateEnum(object) {
7465
7508
  util.setProperty = function setProperty(dst, path, value) {
7466
7509
  function setProp(dst, path, value) {
7467
7510
  var part = path.shift();
7511
+ if (part === "__proto__") {
7512
+ return dst;
7513
+ }
7468
7514
  if (path.length > 0) {
7469
7515
  dst[part] = setProp(dst[part] || {}, path, value);
7470
7516
  } else {
@@ -7982,13 +8028,30 @@ function newError(name) {
7982
8028
  merge(this, properties);
7983
8029
  }
7984
8030
 
7985
- (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;
7986
-
7987
- Object.defineProperty(CustomError.prototype, "name", { get: function() { return name; } });
7988
-
7989
- CustomError.prototype.toString = function toString() {
7990
- return this.name + ": " + this.message;
7991
- };
8031
+ CustomError.prototype = Object.create(Error.prototype, {
8032
+ constructor: {
8033
+ value: CustomError,
8034
+ writable: true,
8035
+ enumerable: false,
8036
+ configurable: true,
8037
+ },
8038
+ name: {
8039
+ get() { return name; },
8040
+ set: undefined,
8041
+ enumerable: false,
8042
+ // configurable: false would accurately preserve the behavior of
8043
+ // the original, but I'm guessing that was not intentional.
8044
+ // For an actual error subclass, this property would
8045
+ // be configurable.
8046
+ configurable: true,
8047
+ },
8048
+ toString: {
8049
+ value() { return this.name + ": " + this.message; },
8050
+ writable: true,
8051
+ enumerable: false,
8052
+ configurable: true,
8053
+ },
8054
+ });
7992
8055
 
7993
8056
  return CustomError;
7994
8057
  }
@@ -8352,7 +8415,7 @@ wrappers[".google.protobuf.Any"] = {
8352
8415
  if (type) {
8353
8416
  // type_url does not accept leading "."
8354
8417
  var type_url = object["@type"].charAt(0) === "." ?
8355
- object["@type"].substr(1) : object["@type"];
8418
+ object["@type"].slice(1) : object["@type"];
8356
8419
  // type_url prefix is optional, but path seperator is required
8357
8420
  if (type_url.indexOf("/") === -1) {
8358
8421
  type_url = "/" + type_url;
@@ -8390,7 +8453,7 @@ wrappers[".google.protobuf.Any"] = {
8390
8453
  if (!(message instanceof this.ctor) && message instanceof Message) {
8391
8454
  var object = message.$type.toObject(message, options);
8392
8455
  var messageName = message.$type.fullName[0] === "." ?
8393
- message.$type.fullName.substr(1) : message.$type.fullName;
8456
+ message.$type.fullName.slice(1) : message.$type.fullName;
8394
8457
  // Default to type.googleapis.com prefix if no prefix is used
8395
8458
  if (prefix === "") {
8396
8459
  prefix = googleApi;