protobufjs 8.3.0 → 8.4.1

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.
package/src/wrappers.js CHANGED
@@ -7,7 +7,8 @@
7
7
  */
8
8
  var wrappers = exports;
9
9
 
10
- var Message = require("./message");
10
+ var Message = require("./message"),
11
+ util = require("./util/minimal");
11
12
 
12
13
  /**
13
14
  * From object converter part of an {@link IWrapper}.
@@ -54,10 +55,9 @@ wrappers[".google.protobuf.Any"] = {
54
55
  if (type_url.indexOf("/") === -1) {
55
56
  type_url = "/" + type_url;
56
57
  }
57
- var nextDepth = depth === undefined ? 1 : depth + 1;
58
58
  return this.create({
59
59
  type_url: type_url,
60
- value: type.encode(type.fromObject(object, nextDepth)).finish()
60
+ value: type.encode(type.fromObject(object, depth === undefined ? 1 : depth + 1)).finish()
61
61
  });
62
62
  }
63
63
  }
@@ -65,13 +65,16 @@ wrappers[".google.protobuf.Any"] = {
65
65
  return this.fromObject(object, depth);
66
66
  },
67
67
 
68
- toObject: function(message, options) {
68
+ toObject: function(message, options, depth) {
69
+ if (depth === undefined)
70
+ depth = 0;
71
+ if (depth > util.recursionLimit)
72
+ throw Error("max depth exceeded");
69
73
 
70
74
  // Default prefix
71
75
  var googleApi = "type.googleapis.com/";
72
76
  var prefix = "";
73
77
  var name = "";
74
-
75
78
  // decode value if requested and unmapped
76
79
  if (options && options.json && message.type_url && message.value) {
77
80
  // Only use fully qualified type name after the last '/'
@@ -81,12 +84,12 @@ wrappers[".google.protobuf.Any"] = {
81
84
  var type = this.lookup(name);
82
85
  /* istanbul ignore else */
83
86
  if (type)
84
- message = type.decode(message.value);
87
+ message = type.decode(message.value, undefined, undefined, depth + 1);
85
88
  }
86
89
 
87
90
  // wrap value if unmapped
88
91
  if (!(message instanceof this.ctor) && message instanceof Message) {
89
- var object = message.$type.toObject(message, options);
92
+ var object = message.$type.toObject(message, options, depth + 1);
90
93
  var messageName = message.$type.fullName[0] === "." ?
91
94
  message.$type.fullName.slice(1) : message.$type.fullName;
92
95
  // Default to type.googleapis.com prefix if no prefix is used
@@ -98,6 +101,6 @@ wrappers[".google.protobuf.Any"] = {
98
101
  return object;
99
102
  }
100
103
 
101
- return this.toObject(message, options);
104
+ return this.toObject(message, options, depth);
102
105
  }
103
106
  };