protobufjs 8.6.0 → 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 (108) hide show
  1. package/LICENSE +39 -39
  2. package/README.md +441 -441
  3. package/dist/light/protobuf.js +8473 -8516
  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 +3018 -3061
  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 +10376 -10419
  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 -86
  22. package/ext/descriptor.generated.d.ts +14 -6
  23. package/ext/descriptor.js +1354 -1303
  24. package/ext/protojson.LICENSE +201 -201
  25. package/ext/protojson.d.ts +20 -20
  26. package/ext/protojson.js +925 -903
  27. package/ext/textformat.d.ts +19 -19
  28. package/ext/textformat.js +1256 -1256
  29. package/google/LICENSE +27 -27
  30. package/google/README.md +1 -1
  31. package/google/api/annotations.json +82 -82
  32. package/google/api/annotations.proto +10 -10
  33. package/google/api/http.json +85 -85
  34. package/google/api/http.proto +30 -30
  35. package/google/protobuf/api.json +117 -117
  36. package/google/protobuf/api.proto +33 -33
  37. package/google/protobuf/compiler/plugin.json +126 -126
  38. package/google/protobuf/compiler/plugin.proto +47 -47
  39. package/google/protobuf/descriptor.json +1381 -1381
  40. package/google/protobuf/descriptor.proto +534 -534
  41. package/google/protobuf/source_context.json +19 -19
  42. package/google/protobuf/source_context.proto +7 -7
  43. package/google/protobuf/type.json +201 -201
  44. package/google/protobuf/type.proto +89 -89
  45. package/index.d.ts +10 -18
  46. package/index.js +4 -4
  47. package/light.d.ts +2 -2
  48. package/light.js +3 -3
  49. package/minimal.d.ts +2 -2
  50. package/minimal.js +4 -4
  51. package/package.json +93 -93
  52. package/src/common.js +399 -399
  53. package/src/converter.js +344 -344
  54. package/src/decoder.js +208 -208
  55. package/src/encoder.js +111 -111
  56. package/src/enum.js +231 -231
  57. package/src/field.js +497 -497
  58. package/src/index-light.js +104 -104
  59. package/src/index-minimal.js +36 -36
  60. package/src/index.js +12 -12
  61. package/src/mapfield.js +136 -136
  62. package/src/message.js +137 -137
  63. package/src/method.js +175 -175
  64. package/src/namespace.js +565 -565
  65. package/src/object.js +382 -382
  66. package/src/oneof.js +225 -225
  67. package/src/parse.js +1068 -1068
  68. package/src/reader.js +543 -543
  69. package/src/reader_buffer.js +72 -72
  70. package/src/root.js +416 -416
  71. package/src/roots.js +18 -18
  72. package/src/rpc/service.js +148 -148
  73. package/src/rpc.js +36 -36
  74. package/src/service.js +198 -198
  75. package/src/tokenize.js +421 -421
  76. package/src/type.js +655 -655
  77. package/src/types.js +196 -196
  78. package/src/typescript.js +25 -25
  79. package/src/util/aspromise.d.ts +13 -13
  80. package/src/util/aspromise.js +52 -52
  81. package/src/util/base64.d.ts +32 -32
  82. package/src/util/base64.js +146 -146
  83. package/src/util/codegen.d.ts +31 -31
  84. package/src/util/codegen.js +113 -113
  85. package/src/util/eventemitter.d.ts +45 -45
  86. package/src/util/eventemitter.js +86 -86
  87. package/src/util/fetch.d.ts +56 -56
  88. package/src/util/fetch.js +112 -112
  89. package/src/util/float.d.ts +83 -83
  90. package/src/util/float.js +335 -335
  91. package/src/util/fs.js +11 -11
  92. package/src/util/longbits.js +200 -200
  93. package/src/util/minimal.js +515 -518
  94. package/src/util/path.d.ts +22 -22
  95. package/src/util/path.js +72 -72
  96. package/src/util/patterns.js +7 -7
  97. package/src/util/pool.d.ts +32 -32
  98. package/src/util/pool.js +48 -48
  99. package/src/util/utf8.d.ts +24 -24
  100. package/src/util/utf8.js +130 -130
  101. package/src/util.js +242 -242
  102. package/src/verifier.js +180 -180
  103. package/src/wrappers.js +106 -106
  104. package/src/writer.js +495 -495
  105. package/src/writer_buffer.js +102 -102
  106. package/tsconfig.json +6 -6
  107. package/src/util/inquire.d.ts +0 -10
  108. package/src/util/inquire.js +0 -38
package/src/message.js CHANGED
@@ -1,137 +1,137 @@
1
- "use strict";
2
- module.exports = Message;
3
-
4
- var util = require("./util/minimal");
5
-
6
- /**
7
- * Constructs a new message instance.
8
- * @classdesc Abstract runtime message.
9
- * @constructor
10
- * @param {Properties<T>} [properties] Properties to set
11
- * @property {Array.<Uint8Array>} [$unknowns] Unknown fields preserved while decoding
12
- * @template T extends object = object
13
- */
14
- function Message(properties) {
15
- // not used internally
16
- if (properties)
17
- for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
18
- if (properties[keys[i]] != null && keys[i] !== "__proto__")
19
- this[keys[i]] = properties[keys[i]];
20
- }
21
-
22
- /**
23
- * Reference to the reflected type.
24
- * @name Message.$type
25
- * @type {Type}
26
- * @readonly
27
- */
28
-
29
- /**
30
- * Reference to the reflected type.
31
- * @name Message#$type
32
- * @type {Type}
33
- * @readonly
34
- */
35
-
36
- /**
37
- * Creates a new message of this type using the specified properties.
38
- * @param {Object.<string,*>} [properties] Properties to set
39
- * @returns {T} Message instance
40
- * @template T extends Message<T>
41
- * @this Constructor<T>
42
- */
43
- Message.create = function create(properties) {
44
- return this.$type.create(properties);
45
- };
46
-
47
- /**
48
- * Encodes a message of this type.
49
- * @param {T|Object.<string,*>} message Message to encode
50
- * @param {Writer} [writer] Writer to use
51
- * @returns {Writer} Writer
52
- * @template T extends Message<T>
53
- * @this Constructor<T>
54
- */
55
- Message.encode = function encode(message, writer) {
56
- return this.$type.encode(message, writer);
57
- };
58
-
59
- /**
60
- * Encodes a message of this type preceeded by its length as a varint.
61
- * @param {T|Object.<string,*>} message Message to encode
62
- * @param {Writer} [writer] Writer to use
63
- * @returns {Writer} Writer
64
- * @template T extends Message<T>
65
- * @this Constructor<T>
66
- */
67
- Message.encodeDelimited = function encodeDelimited(message, writer) {
68
- return this.$type.encodeDelimited(message, writer);
69
- };
70
-
71
- /**
72
- * Decodes a message of this type.
73
- * @name Message.decode
74
- * @function
75
- * @param {Reader|Uint8Array} reader Reader or buffer to decode
76
- * @returns {T} Decoded message
77
- * @template T extends Message<T>
78
- * @this Constructor<T>
79
- */
80
- Message.decode = function decode(reader) {
81
- return this.$type.decode(reader);
82
- };
83
-
84
- /**
85
- * Decodes a message of this type preceeded by its length as a varint.
86
- * @name Message.decodeDelimited
87
- * @function
88
- * @param {Reader|Uint8Array} reader Reader or buffer to decode
89
- * @returns {T} Decoded message
90
- * @template T extends Message<T>
91
- * @this Constructor<T>
92
- */
93
- Message.decodeDelimited = function decodeDelimited(reader) {
94
- return this.$type.decodeDelimited(reader);
95
- };
96
-
97
- /**
98
- * Verifies a message of this type.
99
- * @name Message.verify
100
- * @function
101
- * @param {Object.<string,*>} message Plain object to verify
102
- * @returns {string|null} `null` if valid, otherwise the reason why it is not
103
- */
104
- Message.verify = function verify(message) {
105
- return this.$type.verify(message);
106
- };
107
-
108
- /**
109
- * Creates a new message of this type from a plain object. Also converts values to their respective internal types.
110
- * @param {Object.<string,*>} object Plain object
111
- * @returns {T} Message instance
112
- * @template T extends Message<T>
113
- * @this Constructor<T>
114
- */
115
- Message.fromObject = function fromObject(object) {
116
- return this.$type.fromObject(object);
117
- };
118
-
119
- /**
120
- * Creates a plain object from a message of this type. Also converts values to other types if specified.
121
- * @param {T} message Message instance
122
- * @param {IConversionOptions} [options] Conversion options
123
- * @returns {Object.<string,*>} Plain object
124
- * @template T extends Message<T>
125
- * @this Constructor<T>
126
- */
127
- Message.toObject = function toObject(message, options) {
128
- return this.$type.toObject(message, options);
129
- };
130
-
131
- /**
132
- * Converts this message to JSON.
133
- * @returns {Object.<string,*>} JSON object
134
- */
135
- Message.prototype.toJSON = function toJSON() {
136
- return this.$type.toObject(this, util.toJSONOptions);
137
- };
1
+ "use strict";
2
+ module.exports = Message;
3
+
4
+ var util = require("./util/minimal");
5
+
6
+ /**
7
+ * Constructs a new message instance.
8
+ * @classdesc Abstract runtime message.
9
+ * @constructor
10
+ * @param {Properties<T>} [properties] Properties to set
11
+ * @property {Array.<Uint8Array>} [$unknowns] Unknown fields preserved while decoding when enabled
12
+ * @template T extends object = object
13
+ */
14
+ function Message(properties) {
15
+ // not used internally
16
+ if (properties)
17
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
18
+ if (properties[keys[i]] != null && keys[i] !== "__proto__")
19
+ this[keys[i]] = properties[keys[i]];
20
+ }
21
+
22
+ /**
23
+ * Reference to the reflected type.
24
+ * @name Message.$type
25
+ * @type {Type}
26
+ * @readonly
27
+ */
28
+
29
+ /**
30
+ * Reference to the reflected type.
31
+ * @name Message#$type
32
+ * @type {Type}
33
+ * @readonly
34
+ */
35
+
36
+ /**
37
+ * Creates a new message of this type using the specified properties.
38
+ * @param {Object.<string,*>} [properties] Properties to set
39
+ * @returns {T} Message instance
40
+ * @template T extends Message<T>
41
+ * @this Constructor<T>
42
+ */
43
+ Message.create = function create(properties) {
44
+ return this.$type.create(properties);
45
+ };
46
+
47
+ /**
48
+ * Encodes a message of this type.
49
+ * @param {T|Object.<string,*>} message Message to encode
50
+ * @param {Writer} [writer] Writer to use
51
+ * @returns {Writer} Writer
52
+ * @template T extends Message<T>
53
+ * @this Constructor<T>
54
+ */
55
+ Message.encode = function encode(message, writer) {
56
+ return this.$type.encode(message, writer);
57
+ };
58
+
59
+ /**
60
+ * Encodes a message of this type preceeded by its length as a varint.
61
+ * @param {T|Object.<string,*>} message Message to encode
62
+ * @param {Writer} [writer] Writer to use
63
+ * @returns {Writer} Writer
64
+ * @template T extends Message<T>
65
+ * @this Constructor<T>
66
+ */
67
+ Message.encodeDelimited = function encodeDelimited(message, writer) {
68
+ return this.$type.encodeDelimited(message, writer);
69
+ };
70
+
71
+ /**
72
+ * Decodes a message of this type.
73
+ * @name Message.decode
74
+ * @function
75
+ * @param {Reader|Uint8Array} reader Reader or buffer to decode
76
+ * @returns {T} Decoded message
77
+ * @template T extends Message<T>
78
+ * @this Constructor<T>
79
+ */
80
+ Message.decode = function decode(reader) {
81
+ return this.$type.decode(reader);
82
+ };
83
+
84
+ /**
85
+ * Decodes a message of this type preceeded by its length as a varint.
86
+ * @name Message.decodeDelimited
87
+ * @function
88
+ * @param {Reader|Uint8Array} reader Reader or buffer to decode
89
+ * @returns {T} Decoded message
90
+ * @template T extends Message<T>
91
+ * @this Constructor<T>
92
+ */
93
+ Message.decodeDelimited = function decodeDelimited(reader) {
94
+ return this.$type.decodeDelimited(reader);
95
+ };
96
+
97
+ /**
98
+ * Verifies a message of this type.
99
+ * @name Message.verify
100
+ * @function
101
+ * @param {Object.<string,*>} message Plain object to verify
102
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
103
+ */
104
+ Message.verify = function verify(message) {
105
+ return this.$type.verify(message);
106
+ };
107
+
108
+ /**
109
+ * Creates a new message of this type from a plain object. Also converts values to their respective internal types.
110
+ * @param {Object.<string,*>} object Plain object
111
+ * @returns {T} Message instance
112
+ * @template T extends Message<T>
113
+ * @this Constructor<T>
114
+ */
115
+ Message.fromObject = function fromObject(object) {
116
+ return this.$type.fromObject(object);
117
+ };
118
+
119
+ /**
120
+ * Creates a plain object from a message of this type. Also converts values to other types if specified.
121
+ * @param {T} message Message instance
122
+ * @param {IConversionOptions} [options] Conversion options
123
+ * @returns {Object.<string,*>} Plain object
124
+ * @template T extends Message<T>
125
+ * @this Constructor<T>
126
+ */
127
+ Message.toObject = function toObject(message, options) {
128
+ return this.$type.toObject(message, options);
129
+ };
130
+
131
+ /**
132
+ * Converts this message to JSON.
133
+ * @returns {Object.<string,*>} JSON object
134
+ */
135
+ Message.prototype.toJSON = function toJSON() {
136
+ return this.$type.toObject(this, util.toJSONOptions);
137
+ };
package/src/method.js CHANGED
@@ -1,175 +1,175 @@
1
- "use strict";
2
- module.exports = Method;
3
-
4
- // extends ReflectionObject
5
- var ReflectionObject = require("./object");
6
- ((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = "Method";
7
-
8
- var util = require("./util");
9
-
10
- /**
11
- * Constructs a new service method instance.
12
- * @classdesc Reflected service method.
13
- * @extends ReflectionObject
14
- * @constructor
15
- * @param {string} name Method name
16
- * @param {string|undefined} type Method type, usually `"rpc"`
17
- * @param {string} requestType Request message type
18
- * @param {string} responseType Response message type
19
- * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed
20
- * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed
21
- * @param {Object.<string,*>} [options] Declared options
22
- * @param {string} [comment] The comment for this method
23
- * @param {Array.<Object.<string,*>>} [parsedOptions] Declared options, properly parsed into objects
24
- */
25
- function Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) {
26
-
27
- /* istanbul ignore next */
28
- if (util.isObject(requestStream)) {
29
- options = requestStream;
30
- requestStream = responseStream = undefined;
31
- } else if (util.isObject(responseStream)) {
32
- options = responseStream;
33
- responseStream = undefined;
34
- }
35
-
36
- /* istanbul ignore if */
37
- if (!(type === undefined || util.isString(type)))
38
- throw TypeError("type must be a string");
39
-
40
- /* istanbul ignore if */
41
- if (!util.isString(requestType))
42
- throw TypeError("requestType must be a string");
43
-
44
- /* istanbul ignore if */
45
- if (!util.isString(responseType))
46
- throw TypeError("responseType must be a string");
47
-
48
- ReflectionObject.call(this, name, options);
49
-
50
- /**
51
- * Method type.
52
- * @type {string}
53
- */
54
- this.type = type || "rpc"; // toJSON
55
-
56
- /**
57
- * Request type.
58
- * @type {string}
59
- */
60
- this.requestType = requestType; // toJSON, marker
61
-
62
- /**
63
- * Whether requests are streamed or not.
64
- * @type {true|undefined}
65
- */
66
- this.requestStream = requestStream ? true : undefined; // toJSON
67
-
68
- /**
69
- * Response type.
70
- * @type {string}
71
- */
72
- this.responseType = responseType; // toJSON
73
-
74
- /**
75
- * Whether responses are streamed or not.
76
- * @type {true|undefined}
77
- */
78
- this.responseStream = responseStream ? true : undefined; // toJSON
79
-
80
- /**
81
- * gRPC-style method path.
82
- * @type {string}
83
- */
84
- this.path = "/" + this.name;
85
-
86
- /**
87
- * Resolved request type.
88
- * @type {Type|null}
89
- */
90
- this.resolvedRequestType = null;
91
-
92
- /**
93
- * Resolved response type.
94
- * @type {Type|null}
95
- */
96
- this.resolvedResponseType = null;
97
-
98
- /**
99
- * Comment for this method
100
- * @type {string|null}
101
- */
102
- this.comment = comment;
103
-
104
- /**
105
- * Options properly parsed into objects
106
- * @type {Array.<Object.<string,*>>|undefined}
107
- */
108
- this.parsedOptions = parsedOptions;
109
- }
110
-
111
- /**
112
- * Method descriptor.
113
- * @interface IMethod
114
- * @property {string} [type="rpc"] Method type
115
- * @property {string} requestType Request type
116
- * @property {string} responseType Response type
117
- * @property {boolean} [requestStream=false] Whether requests are streamed
118
- * @property {boolean} [responseStream=false] Whether responses are streamed
119
- * @property {Object.<string,*>} [options] Method options
120
- * @property {string|null} [comment] Method comment
121
- * @property {Array.<Object.<string,*>>} [parsedOptions] Method options properly parsed into objects
122
- */
123
-
124
- /**
125
- * Constructs a method from a method descriptor.
126
- * @param {string} name Method name
127
- * @param {IMethod} json Method descriptor
128
- * @returns {Method} Created method
129
- * @throws {TypeError} If arguments are invalid
130
- */
131
- Method.fromJSON = function fromJSON(name, json) {
132
- return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions);
133
- };
134
-
135
- /**
136
- * Converts this method to a method descriptor.
137
- * @param {IToJSONOptions} [toJSONOptions] JSON conversion options
138
- * @returns {IMethod} Method descriptor
139
- */
140
- Method.prototype.toJSON = function toJSON(toJSONOptions) {
141
- var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;
142
- return util.toObject([
143
- "type" , this.type !== "rpc" && /* istanbul ignore next */ this.type || undefined,
144
- "requestType" , this.requestType,
145
- "requestStream" , this.requestStream,
146
- "responseType" , this.responseType,
147
- "responseStream" , this.responseStream,
148
- "options" , this.options,
149
- "comment" , keepComments ? this.comment : undefined,
150
- "parsedOptions" , this.parsedOptions,
151
- ]);
152
- };
153
-
154
- /**
155
- * @override
156
- */
157
- Method.prototype.resolve = function resolve() {
158
-
159
- /* istanbul ignore if */
160
- if (this.resolved)
161
- return this;
162
-
163
- if (this.parent) {
164
- var serviceName = this.parent.fullName;
165
- if (serviceName.charAt(0) === ".")
166
- serviceName = serviceName.substring(1);
167
- this.path = "/" + serviceName + "/" + this.name;
168
- } else
169
- this.path = "/" + this.name;
170
-
171
- this.resolvedRequestType = this.parent.lookupType(this.requestType);
172
- this.resolvedResponseType = this.parent.lookupType(this.responseType);
173
-
174
- return ReflectionObject.prototype.resolve.call(this);
175
- };
1
+ "use strict";
2
+ module.exports = Method;
3
+
4
+ // extends ReflectionObject
5
+ var ReflectionObject = require("./object");
6
+ ((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = "Method";
7
+
8
+ var util = require("./util");
9
+
10
+ /**
11
+ * Constructs a new service method instance.
12
+ * @classdesc Reflected service method.
13
+ * @extends ReflectionObject
14
+ * @constructor
15
+ * @param {string} name Method name
16
+ * @param {string|undefined} type Method type, usually `"rpc"`
17
+ * @param {string} requestType Request message type
18
+ * @param {string} responseType Response message type
19
+ * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed
20
+ * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed
21
+ * @param {Object.<string,*>} [options] Declared options
22
+ * @param {string} [comment] The comment for this method
23
+ * @param {Array.<Object.<string,*>>} [parsedOptions] Declared options, properly parsed into objects
24
+ */
25
+ function Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) {
26
+
27
+ /* istanbul ignore next */
28
+ if (util.isObject(requestStream)) {
29
+ options = requestStream;
30
+ requestStream = responseStream = undefined;
31
+ } else if (util.isObject(responseStream)) {
32
+ options = responseStream;
33
+ responseStream = undefined;
34
+ }
35
+
36
+ /* istanbul ignore if */
37
+ if (!(type === undefined || util.isString(type)))
38
+ throw TypeError("type must be a string");
39
+
40
+ /* istanbul ignore if */
41
+ if (!util.isString(requestType))
42
+ throw TypeError("requestType must be a string");
43
+
44
+ /* istanbul ignore if */
45
+ if (!util.isString(responseType))
46
+ throw TypeError("responseType must be a string");
47
+
48
+ ReflectionObject.call(this, name, options);
49
+
50
+ /**
51
+ * Method type.
52
+ * @type {string}
53
+ */
54
+ this.type = type || "rpc"; // toJSON
55
+
56
+ /**
57
+ * Request type.
58
+ * @type {string}
59
+ */
60
+ this.requestType = requestType; // toJSON, marker
61
+
62
+ /**
63
+ * Whether requests are streamed or not.
64
+ * @type {true|undefined}
65
+ */
66
+ this.requestStream = requestStream ? true : undefined; // toJSON
67
+
68
+ /**
69
+ * Response type.
70
+ * @type {string}
71
+ */
72
+ this.responseType = responseType; // toJSON
73
+
74
+ /**
75
+ * Whether responses are streamed or not.
76
+ * @type {true|undefined}
77
+ */
78
+ this.responseStream = responseStream ? true : undefined; // toJSON
79
+
80
+ /**
81
+ * gRPC-style method path.
82
+ * @type {string}
83
+ */
84
+ this.path = "/" + this.name;
85
+
86
+ /**
87
+ * Resolved request type.
88
+ * @type {Type|null}
89
+ */
90
+ this.resolvedRequestType = null;
91
+
92
+ /**
93
+ * Resolved response type.
94
+ * @type {Type|null}
95
+ */
96
+ this.resolvedResponseType = null;
97
+
98
+ /**
99
+ * Comment for this method
100
+ * @type {string|null}
101
+ */
102
+ this.comment = comment;
103
+
104
+ /**
105
+ * Options properly parsed into objects
106
+ * @type {Array.<Object.<string,*>>|undefined}
107
+ */
108
+ this.parsedOptions = parsedOptions;
109
+ }
110
+
111
+ /**
112
+ * Method descriptor.
113
+ * @interface IMethod
114
+ * @property {string} [type="rpc"] Method type
115
+ * @property {string} requestType Request type
116
+ * @property {string} responseType Response type
117
+ * @property {boolean} [requestStream=false] Whether requests are streamed
118
+ * @property {boolean} [responseStream=false] Whether responses are streamed
119
+ * @property {Object.<string,*>} [options] Method options
120
+ * @property {string|null} [comment] Method comment
121
+ * @property {Array.<Object.<string,*>>} [parsedOptions] Method options properly parsed into objects
122
+ */
123
+
124
+ /**
125
+ * Constructs a method from a method descriptor.
126
+ * @param {string} name Method name
127
+ * @param {IMethod} json Method descriptor
128
+ * @returns {Method} Created method
129
+ * @throws {TypeError} If arguments are invalid
130
+ */
131
+ Method.fromJSON = function fromJSON(name, json) {
132
+ return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions);
133
+ };
134
+
135
+ /**
136
+ * Converts this method to a method descriptor.
137
+ * @param {IToJSONOptions} [toJSONOptions] JSON conversion options
138
+ * @returns {IMethod} Method descriptor
139
+ */
140
+ Method.prototype.toJSON = function toJSON(toJSONOptions) {
141
+ var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;
142
+ return util.toObject([
143
+ "type" , this.type !== "rpc" && /* istanbul ignore next */ this.type || undefined,
144
+ "requestType" , this.requestType,
145
+ "requestStream" , this.requestStream,
146
+ "responseType" , this.responseType,
147
+ "responseStream" , this.responseStream,
148
+ "options" , this.options,
149
+ "comment" , keepComments ? this.comment : undefined,
150
+ "parsedOptions" , this.parsedOptions,
151
+ ]);
152
+ };
153
+
154
+ /**
155
+ * @override
156
+ */
157
+ Method.prototype.resolve = function resolve() {
158
+
159
+ /* istanbul ignore if */
160
+ if (this.resolved)
161
+ return this;
162
+
163
+ if (this.parent) {
164
+ var serviceName = this.parent.fullName;
165
+ if (serviceName.charAt(0) === ".")
166
+ serviceName = serviceName.substring(1);
167
+ this.path = "/" + serviceName + "/" + this.name;
168
+ } else
169
+ this.path = "/" + this.name;
170
+
171
+ this.resolvedRequestType = this.parent.lookupType(this.requestType);
172
+ this.resolvedResponseType = this.parent.lookupType(this.responseType);
173
+
174
+ return ReflectionObject.prototype.resolve.call(this);
175
+ };