protobufjs 8.6.2 → 8.6.3

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 +8575 -8454
  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 +3064 -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 +10479 -10358
  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 +30 -0
  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 +214 -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 +35 -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 +566 -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 +558 -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 +654 -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 +100 -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 +181 -130
  100. package/src/util.js +264 -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/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 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
- };
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
+ };